- 论坛徽章:
- 0
|
我虽然接触php的时间也不短了,但我在php中却对session和cookie却在具体的编程中没有用过。
我最早认识session和cookie的概念还是三年前学习asp知道的,后来一直没用过。
在asp中还有applaction的概念。在我的脑海中,applaction和seesion都是服务器上存储机制,applaction(在php似乎没有这个概念,当我在asp中用这个编过计数器)对于每个浏览者是共享的,而seesion是每个用户都有自己的session。他们的生命周期一般是用户打开某网站浏览器到关闭与次网站连接所有的浏览器后结束。cookie这是在用户端的存贮机制,他需要用户的大开cookie支持,
目前在用户注册登录时,我觉得有必要用到session。需要对此进一步了解。
在php中有关session的函数主要有如下这些:
session_start: 初始 session。
session_destroy: 结束 session。
session_name: 存取目前 session 名称。
session_module_name: 存取目前 session 模组。
session_save_path: 存取目前 session 路径。
session_id: 存取目前 session 代号。
session_register: 注册新的变数。
session_unregister: 删除已注册变数。
session_is_registered: 检查变数是否注册。
session_decode: Session 资料解码。
session_encode: Session 资料编码。
但是我觉得函数不是关键的问题,主要是先搞清session到底是怎样的机制。我稍微看了一下有关的资料。给人的感觉是session其实是在服务器端的tmp目录下的某一个文件中为每个用户储存一些变量,对session的操作其实是对文件读写操作。请有关高手高谈阔论!
我想知道tmp目录到底放在哪里呢,我好像在win2000用搜索找不到tmp目录。只有temp目录
如下的代码在我本地机上会出现错误警告信息,上传到my8868.com
网站(我在虎翼的服务器)上没问题。我想可能是tmp目录所在的目录的权限没有弄好,当有不知道tmp目录所在的地方
<?
echo session_save_path();
session_start();
session_register('count');
$count++;
echo "< >;You've been here $count times.</p>;";
?>;
/tmp
Warning: Cannot send session cache limiter - headers already sent (output started at c:\inetpub\wwwroot\my8868\test.php:2) in c:\inetpub\wwwroot\my8868\test.php on line 3
Warning: open(/tmp\sess_5a0e8bd0b49308a4abf652cbff6fcd1b, O_RDWR) failed: m (2) in c:\inetpub\wwwroot\my8868\test.php on line 3
You've been here 1 times.
Warning: open(/tmp\sess_5a0e8bd0b49308a4abf652cbff6fcd1b, O_RDWR) failed: m (2) in Unknown on line 0
Warning: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0
现在我已经知道上面引起的原因了!Cannot send session cache limiter - headers already sent 是由于在前面有echo
Warning: Failed to write session data (files). 是由于
在windows2000+IIS下,没有php.ini文件。session_save_path没设置。 [/b] 我在win2000+IIS下没有php.ini也可以正常运行!???
我的系统是win2000+IIS,没有想常规一样把php.exe和php.ini文件复制到winnt目录下,把dll文件拷到system32目录下,但是ph可以很好的运行,是不是在没有php.ini配置文件的情况下win2000+IIS,会调用一个默认的配置文件?
但是我最近想使用session的功能,出现上面的警告信息:后来加上php.ini文件并把session.save_path = c:/temp
默认为session.save_path = /tmp
并在c:目录下建一个temp 目录,它的权限为可读写!就行了!
在php中,seesion的机制是文件,还不是想asp那样是对象的概念,也不是放在内存,觉得在session就像存储在文件里一个全局变量。而且需要session cookie的配合。(即如果客户端cookie关掉就不行了,虽然url的方式也可以)session最对提供了方便管理全局变量的方式,其实自己用文件操作可以实现,在速度方面好像没有优势。 |
|