谢谢你peacock,有了php问题,你能够回答。:)我试验的代码是我从书中抄来的,也没说不应该带html啊。而且即使我只使用了一句session_start(),系统也会出现如上类似的错误,是不是系统配置有问题?好象Session根本不能使用一样,而且暂时我还没学到创建自定义的session呢。我现在正主持开发一个动态交易的网站,采用2000 Server 服务器+IIS(Apache)+SQL Server7+PHP,我使用PHP调用SQL Server的存储过程,我负责PHP部分。能不能给我提些建议和应该注意的问题?谢谢。
谢谢你peacock,有了php问题,总是你回答。:)我试验的代码是我从书中抄来的,也没说不应该带html啊。而且即使我只使用了一句session_start(),系统也会出现如上类似的错误,是不是系统配置有问题?好象Session根本不能使用一样,而且暂时我还没学到创建自定义的session呢。我现在正主持开发一个动态交易的网站,采用2000 Server 服务器+IIS(Apache)+SQL Server7+PHP,我使用PHP调用SQL Server的存储过程,我负责PHP部分。能不能给我提些建议和应该注意的问题?谢谢。
这适合或不适合,依你的需求而言。例如:如果你的支持php的web服务器分布在不同的机器上,你不能很容易地共享它们之间的session(当然,你也可以将sessions保存在NFS共享中)。另一个潜在的问题是你机器上的数千或数百万个session文件使你的文件系统变得散乱 。
对我们来说幸运的是,php4的开发者非常有远见(感谢他们),他们为你我这样的用户提供了扩展session处理的接口。任何一个session处理程序会提供6个基本的函数,它们将被php4的session处理程序调用,所以不用担心怎样调用它们。
这些定制处理session的函数是完全透明的。所以你可以改动它们而不会影响你自己的PHP脚本。 这几个函数是:
1、sess_open($sess_path, $session_name); 这个函数被session处理程序调用来作初始化工作。需要传给它的两个参数是$sess_path,它对应你的php.ini文件中的session.save_path选项;$session_name,它对应php.ini中的session.name选项。2、sess_close(); 这个函数在页面结束执行并且session处理程序需要关闭时被调用。(注意,不要和sess_destory混淆了,它是用来结束session的) 3、sess_read($key); 这个函数在session处理程序读取指定session键值($key)时。
这个函数检索并返回标识为$key的session数据.(注意:你不用担心怎样序列化和反序列化数据,如果你不知道这是什么意思,不要担心它) 注:序列化是将变量或对象在程序结束或需要时保存在文件中,在下次程序运行或需要时再调入内存的技术,有别于只保存数据的方法。 4、sess_write($key, $val); 这个函数据在session处理程序需要将数据保存时调用,这种情况经常在你的程序结束时发生。
它负责将数据保存在下次能用sess_read($key)函数检索的地方。 5、sess_destroy($key); 这个函数在需要消毁session时。它负责删除session并且清除环境。 6、sess_gc($maxlifetime);
这个函数负责清理碎片。在这种情况下,它负责删除过时的session数据。session处理程序会偶尔调用它们。 使用方法:session_set_save_handler(
"sess_open",
"sess_close",
"sess_read",
"sess_write",
"sess_destroy",
"sess_gc");这六个函数的内容由你自己写,非常灵活,非常强大!
1、前面已经使用过header()、cookie()或session_start();
2、前面一定有HTML(只是文字都不可以)、echo、print;不过php 4增加了这样的处理!PHP4 的新函数介绍 - 输出信息控制函数
这些函数可以让你控制你的脚本输出的内容.可以用于许多不同的情况,特别是在你的脚本已经输出信息后需要发送文件头新的情况. 输出控制函数不对使用 header() 或 setcookie() 发送的文件头信息产生影响,只对那些类似于 echo() 和 PHP 代码的数据块有作用. 例 1. 控制输出<?phpob_start(); //如果没有加上这句的话,会提示“Cannot send session cookie - headers already sent ...的错误
echo "Hello\n";setcookie ("cookiename", "cookiedata");ob_end_flush();?>在上面的例子中,使用 echo() 的输出内容将会保存在输出缓冲区中,直到调用了 ob_end_flush(). 这样做有意义的地方是,调用 setcookie() 的内容被成功的存储在 cookie 里面而不会引起错误. (正常情况下,你不可以在有数据已经发送后再发送文件头信息到用户浏览器.) 相关函数 header() and setcookie(). 韩数列表
flush — 刷新输出缓冲区
保存在输出缓冲区的内容会被发送到浏览器ob_start — 打开输出缓冲区
这样所有的输出信息不在直接发送到浏览器,而是保存在输出缓冲区里面ob_get_contents — 返回输出缓冲区的内容
如果你想以后处理输出的内容,可以调用这个函数保留一个备份ob_get_length — 返回输出缓冲区的内容长度ob_end_flush — 结束(发送)输出缓冲区的内容,关闭输出缓冲区ob_end_clean — 删除(放弃)输出缓冲区的内容,关闭输出缓冲区
如果你的程序发现输出内容有问题,可以放弃所有输出内容,可以防止泄漏某些秘密信息ob_implicit_flush — 打开或关闭直接刷新
打开后,每个脚本输出都直接发送到浏览器,不再需要调用 flush()。