- 浏览: 221777 次
- 性别:
- 来自: 南宁
文章分类
最新评论
-
rogermmg:
把商品 分享到facebook,twitter 等等 连接代码集合 -
qq398705749:
qkjava 写道不知道涉及到放大的页面一共有几个就一个呀
局部图片放大功能 magiczoom -
qkjava:
不知道涉及到放大的页面一共有几个
局部图片放大功能 magiczoom -
qq398705749:
lz12366 写道mysql_connect,mysql_q ...
创建在网页的mysql表 -
lz12366:
mysql_connect,mysql_query都是jque ...
创建在网页的mysql表
session_start()这个问题,我竟然用了4天来解决.其实网上很多解决的方法,论坛也好多人回答这类的问题,不过最后呢,我还是先在我朋友的电脑上运行php的代码,确认没有写错后,再通过朋友的php.ini来对照,找出不同的地方,然后修改才成功. 现在的状况是依然有警告提示Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent in C:\php\phpdesigner_output_tmp.php on line 2 不过,代码可以成功运行,$_SESSION的值可以传递到别的页面,那我就不再修改其他的(还没对照到的地方).最后一句感叹,一个人凭兴趣去写程序,真是困难重重!
现在先说我自己的问题.我在网上找session_start()的问题的时候,有的帖子提到要修改session.save_path =c:\tmp 和session.cookie_path =/
这两个路径为c:\tmp 然后再添加一个文件夹.但我自己是问题是,session.cookie_path 的值应该是=/ 惭愧的是我现在还不明白什么是这个值应该是默认路径吧.
其实相关的session_start()的问题还有要将out.put_buffery=on 或者修改成4096 或者session_start()前面加ob_start();还有cache-limiter= ;空,还有apache的缓存是否有开等等,不过对我的问题也没有帮助而已.下面是我在找问题的答案的时候找到的一些关于session_start()的问题的总结,我本来想自己总结,现在就贴出这位兄弟的文章就是了(没有问过他,如果有一天作者觉得有异议,请联系我)http://cmpford.bokee.com/
session问题集锦
对于PHP的session功能,始终找不到合适的答案,尤其是一些错误,还有一些没有错误的结果,最可怕的就是后者,一直为许多的初学者为难。就连有些老手,有时都被搞得莫名其妙。本文,将这些问题,做一个简单的汇总,以便大家查阅。
1.
错误提示
Warning: Cannot send session cookie - headers already sent
Warning: Cannot send session cache limiter - headers already sent
分析及解决办法
这一类问题,的原因是你在程序中使用session_start()时,之前已经有实际的html内容输出了。或许你说,我没有啊,我只不过是echo或print一条消息了。很抱歉,你的echo或print语句所产生的输出,就是实际的html内容输出。解决此类问题的办法是,将你的session_start()调到程序的第一行。
2.
错误提示
Warning: open(F:/689phpsessiondatasess_66a39376b873f4daecf239891edc98b5, O_RDWR) failed
分析及解决方法
出现这样的错误语句一般是因为你的php.ini中关于session.save_path一项没有设置好,解决的方法是将session.save_path和session.cookie_path 设置置为
session_save_path = c: emp
session.cookie_path = c: emp
然后在c:目录下建立一个temp目录,即可
3.
错误提示
Warning: Trying to destroy uninitialized session in
分析及解决方法
出类这样的提示,一般情况都是你直接调session_destroy()函数造成的。很多的朋友认为session_destroy()函数可以独立的运行,其实不然。解决的方法是在你调session_destroy()函数之前,要用session_start()开启session的功能。
4.问题:怎么获得当前session的id值呢?
最简单的方法是:
echo SID;
你会发现的。
5.问题:我的程序,在调用header函数之前没有任何的输出,虽然我include了一个config.php文件,但在config.php文件中也没有任何的输出,为什么session还是会报出与问题1同样的错误呢,是不是因为我在header之前用了session_start()的缘故呢?
答:或许你确实认真的检查了你的php程序,在引用header()之前确实也没有任何的输出,并且在你的include文件中也没有任何的输出!但是你是否用光标键在?>这个PHP代码结束语句后移动检查呢?那么你会发现在?>这个后面,有一个空行或几个空格,你删除了这几个空行或空格,那么问题就解决了。
注:此问题,会出PHP4.1.2中,更高版本,没有测试过。
6.问:用session做登录主页面后,其它页面怎么用session限制登录。。。
答:最简单的方法是
session_start();
if(!session_registered('login') ││ $login != true) {
echo "你没有登陆";
exit;
}
7.问:我用session_register()注册了session变量,可是当我用header或用javascript的重定向语句,那么在一下页面中,我却访问不到session所注册的变量值。请问如何解决?
问题的程序片段:
session_start();
$ok = 'love you';
session_register('ok');
header("location : next.php");
?>
next.php
session_start();
echo $ok;
?>
解决的方法:
当你用header函数或window.location这样的功能后,你上一个页面所注册的session变量,就会容易的丢失,关于这个问题的原因,至今仍没有一个详细的回答。
不过有解决的方法。如下所示
header("Location: next.php" ."?" . SID);
在跳转到下一页面的时候,将session的当前id做为一个参数,传到后一个页面。
8.session如何传数组
session_register('data');
$data=array(1,2,3,4);
方法是先注册后赋值
9.问题9:我是不是可以用像$HTTP_GET_VARS['**']方式来访问session值呢?
回答:可以,你可以使用如下global数组来访问session,以加强网页的安全性
$HTTP_SESSION_VARS
$_SESSION
例程:
session_start();
$username = 'stangly.wrong';
session_register('username');
echo $HTTP_SESSION_VARS['username'];
echo '
';
echo $_SESSION['username'];
?>
请参照此例程修改符合您自己的程序。
问题10:session_unregister() 和 session_destroy() 有何区别?
session_unregister()函数主要作用是注消当前的一sion.(译自于php.net)
例程:
if(isset($_COOKIE[session_name()])) {
session_start();
session_destroy();
unset($_COOKIE[session_name()]);
}
以上,所述是一些新手经常遇到的问题。或许是详述不清,难免有误所在,请高手指点批评。
php中的session的配置
今天调试程序遇到了session的设置问题,网上这篇文章比较好,共拿来学习,并供大家参考。
转载自旅行论坛 http://www/lvxing.net
首先打开php.ini文件,找到session的部分:(分号后面的是注释)
[Session]
; Handler used to store/retrieve data.
session.save_handler = files ; 这个是session的方式,默认的files就可以了,代表用文件储存
; Argument passed to save_handler. In the case of files, this is the path where data files are stored.
session.save_path = /tmp ; 这个是session的保存路径,比如你是c盘,那么默认就是c:/tmp, 所以如果出现“Warning: open(/tmpsess_cc8b04f146a1e0494bc464305da92ea1, O_RDWR) failed”这样子的错误,你可以修改这个路径,或者在根目录下面建立一个tmp的文件夹
; Whether to use cookies.
session.use_cookies = 1 ; sessionid的传递方式,默认是cookie,推荐使用
; Name of the session (used as cookie name).
session.name = PHPSESSID ; sessionid的名称,保存在cookie里面的,要避免同名
; Initialize session on request startup.
session.auto_start = 0 ; 是否自动启动session,默认为不是,不需要修改
; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0 ; sessionid的cookie生存时间,0代表知道浏览器关闭
; The path for which the cookie is valid.
session.cookie_path = / ; sessionid的cookie路径,不需要修改
; The domain for which the cookie is valid.
session.cookie_domain = ; ;sessionid的cookie域名,不需要修改
; Handler used to serialize data. php is the standard serializer of PHP.
session.serialize_handler = php ; 保存data的默认文件名后缀,不需要修改
; Percentual probability that the 'garbage collection' process is started on every session initialization.
session.gc_probability = 1
; After this number of seconds, stored data will be seen as 'garbage' and cleaned up by the garbage collection process.
session.gc_maxlifetime = 1440 ; session文件的保存时间
; Check HTTP Referer to invalidate externally stored URLs containing ids.
session.referer_check = ; How many bytes to read from the file.
session.entropy_length = 0 ; Specified here to create the session id.
session.entropy_file = ;session.entropy_length = 16 ;session.entropy_file = /dev/urandom
; Set to {nocache,private,public} to determine HTTP caching aspects.
session.cache_limiter = nocache ; Document expires after n minutes.
session.cache_expire = 180 ; use transient sid support if enabled by compiling with --enable-trans-sid.
session.use_trans_sid = 1 url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry" ======================================================================
session 的生命周期是多长
1 浏览器结束时其生命周期也同时结束,但是档案仍然存在于 /tmp/(sess_???)
2 下次重新开浏览器时会重新分配 sessionID,如果你使用 session_id() 把以前的 ID 带回来,
则会去读取残存在 /tmp 处的 sess_???, 取回你之前所有已经设定的参数
3 可以在 php.ini 里修改 session 档案残存的时间 session.gc_maxlifetime = 1440 ; after this number of seconds, stored
; data will be seen as 'garbage' and
; cleaned up by the gc process 默认是 1440 秒,24分钟
=========================================================================
使用无限生命期Session的方法
在PHP4.0中加入了对Session的支持,方便了我们很多程序,比如购物车等等!
在很多论坛中,Session也用于处理用户的登陆,记录下用户名和密码,使得用户不必每次都输入自己的用户名和密码!但是一般的Session的生命期有限,如果用户关闭了浏览器,就不能保存Session的变量了!那么怎么样可以实现Session的永久生命期呢?
大家知道,Session储存在服务器端,根据客户端提供的SessionID来得到这个用户的文件,然后读取文件,取得变量的值,SessionID可以使用客户端的Cookie或者Http1.1协议的Query_String(就是访问的URL的“?”后面的部分)来传送给服务器,然后服务器读取Session的目录……
要实现Session的永久生命期,首先需要了解一下php.ini关于Session的相关设置(打开php.ini文件,在“[Session]”部分):
1、session.use_cookies:默认的值是“1”,代表SessionID使用Cookie来传递,反之就是使用Query_String来传递;
2、session.name:这个就是SessionID储存的变量名称,可能是Cookie,也可能是Query_String来传递,默认值“PHPSESSID”;
3、session.cookie_lifetime:这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废……就是因为这个所以Session不能永久使用!
4、session.gc_maxlifetime:这个是Session数据在服务器端储存的时间,如果超过这个时间,那么Session数据就自动删除!
还有很多的设置,不过和本文相关的就是这些了,下面开始讲使用永久Session的原理和步骤。
前面说过,服务器通过SessionID来读取Session的数据,但是一般浏览器传送的SessionID在浏览器关闭后就没有了,那么我们只需要人为的设置SessionID并且保存下来,不就可以……
如果你拥有服务器的操作权限,那么设置这个非常非常的简单,只是需要进行如下的步骤:
1、把“session.use_cookies”设置为1,打开Cookie储存SessionID,不过默认就是1,一般不用修改;
2、把“session.cookie_lifetime”改为正无穷(当然没有正无穷的参数,不过999999999和正无穷也没有什么区别);
3、把“session.gc_maxlifetime”设置为和“session.cookie_lifetime”一样的时间;
设置完毕后,打开编辑器,输入如下的代码:
------------------------------------------------------------------------------------
<?php session_start();
session_register('count');
$count++;
echo $count;
?>
------------------------------------------------------------------------------------
然后保存为“session_check.php”,用浏览器打开“session_check.php”,看看显示的是不是“1”,再关闭浏览器,然后再打开浏览器访问“session_check.php”,如果显示“2”,那么恭喜了,你已经成功;如果失败的话,请检查你前面的设置。
但是如果你没有服务器的操作权限,那就比较麻烦了,你需要通过PHP程序改写SessionID来实现永久的Session数据保存。查查php.net的函数手册,可以见到有“session_id”这个函数:如果没有设置参数,那么将返回当前的SessionID,如果设置了参数,就会将当前的SessionID设置为给出的值……
只要利用永久性的Cookie加上“session_id”函数,就可以实现永久Session数据保存了!
但是为了方便,我们需要知道服务器设置的“session.name”,但是一般用户都没有权限查看服务器的php.ini设置,不过PHP提供了一个非常好的函数“phpinfo”,利用这个可以查看几乎所有的PHP信息!
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
打开编辑器,输入上面的代码,然后在浏览器中运行这个程序,会见到PHP的相关信息(如图1所示)。其中有一项“session.name”的参数(图中已经标出),这个就是我们需要的服务器“session.name”,一般是“PHPSESSID”。
记下了SessionID的名称后,我们就可以实现永久的Session数据储存了!
打开编辑器,输入下面的代码:
------------------------------------------------------------------------------------
session_start(); // 启动Session
session_register('count'); // 注册Session变量Count
if(isset($PHPSESSID)) {
session_id($PHPSESSID);
} // 如果设置了$PHPSESSID,就将SessionID赋值为$PHPSESSID,否则生成SessionID
$PHPSESSID = session_id(); // 取得当前的SessionID
$count++; // 变量count加1
setcookie('PHPSESSID', $PHPSESSID, time()+3156000); // 储存SessionID到Cookie中
echo $count; // 显示Session变量count的值
?>
------------------------------------------------------------------------------------
保存之后,利用和刚才拥有服务器权限时候的检测一样的方法,检测是否成功的保存了SessionID。
后记:
其实真正的永久储存是不可能的,因为Cookie的保存时间有限,而服务器的空间也有限……
但是对于一些需要保存时间比较长的站点,以上方法就已经足够了!关于Session的其他应用,可
以参见zphp.com的文章。
最后,笔者的调试环境:Windows98DigExt(SE)+Apache+PHP 4.04。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yuyuzhou06/archive/2007/11/27/1905017.aspx
现在先说我自己的问题.我在网上找session_start()的问题的时候,有的帖子提到要修改session.save_path =c:\tmp 和session.cookie_path =/
这两个路径为c:\tmp 然后再添加一个文件夹.但我自己是问题是,session.cookie_path 的值应该是=/ 惭愧的是我现在还不明白什么是这个值应该是默认路径吧.
其实相关的session_start()的问题还有要将out.put_buffery=on 或者修改成4096 或者session_start()前面加ob_start();还有cache-limiter= ;空,还有apache的缓存是否有开等等,不过对我的问题也没有帮助而已.下面是我在找问题的答案的时候找到的一些关于session_start()的问题的总结,我本来想自己总结,现在就贴出这位兄弟的文章就是了(没有问过他,如果有一天作者觉得有异议,请联系我)http://cmpford.bokee.com/
session问题集锦
对于PHP的session功能,始终找不到合适的答案,尤其是一些错误,还有一些没有错误的结果,最可怕的就是后者,一直为许多的初学者为难。就连有些老手,有时都被搞得莫名其妙。本文,将这些问题,做一个简单的汇总,以便大家查阅。
1.
错误提示
Warning: Cannot send session cookie - headers already sent
Warning: Cannot send session cache limiter - headers already sent
分析及解决办法
这一类问题,的原因是你在程序中使用session_start()时,之前已经有实际的html内容输出了。或许你说,我没有啊,我只不过是echo或print一条消息了。很抱歉,你的echo或print语句所产生的输出,就是实际的html内容输出。解决此类问题的办法是,将你的session_start()调到程序的第一行。
2.
错误提示
Warning: open(F:/689phpsessiondatasess_66a39376b873f4daecf239891edc98b5, O_RDWR) failed
分析及解决方法
出现这样的错误语句一般是因为你的php.ini中关于session.save_path一项没有设置好,解决的方法是将session.save_path和session.cookie_path 设置置为
session_save_path = c: emp
session.cookie_path = c: emp
然后在c:目录下建立一个temp目录,即可
3.
错误提示
Warning: Trying to destroy uninitialized session in
分析及解决方法
出类这样的提示,一般情况都是你直接调session_destroy()函数造成的。很多的朋友认为session_destroy()函数可以独立的运行,其实不然。解决的方法是在你调session_destroy()函数之前,要用session_start()开启session的功能。
4.问题:怎么获得当前session的id值呢?
最简单的方法是:
echo SID;
你会发现的。
5.问题:我的程序,在调用header函数之前没有任何的输出,虽然我include了一个config.php文件,但在config.php文件中也没有任何的输出,为什么session还是会报出与问题1同样的错误呢,是不是因为我在header之前用了session_start()的缘故呢?
答:或许你确实认真的检查了你的php程序,在引用header()之前确实也没有任何的输出,并且在你的include文件中也没有任何的输出!但是你是否用光标键在?>这个PHP代码结束语句后移动检查呢?那么你会发现在?>这个后面,有一个空行或几个空格,你删除了这几个空行或空格,那么问题就解决了。
注:此问题,会出PHP4.1.2中,更高版本,没有测试过。
6.问:用session做登录主页面后,其它页面怎么用session限制登录。。。
答:最简单的方法是
session_start();
if(!session_registered('login') ││ $login != true) {
echo "你没有登陆";
exit;
}
7.问:我用session_register()注册了session变量,可是当我用header或用javascript的重定向语句,那么在一下页面中,我却访问不到session所注册的变量值。请问如何解决?
问题的程序片段:
session_start();
$ok = 'love you';
session_register('ok');
header("location : next.php");
?>
next.php
session_start();
echo $ok;
?>
解决的方法:
当你用header函数或window.location这样的功能后,你上一个页面所注册的session变量,就会容易的丢失,关于这个问题的原因,至今仍没有一个详细的回答。
不过有解决的方法。如下所示
header("Location: next.php" ."?" . SID);
在跳转到下一页面的时候,将session的当前id做为一个参数,传到后一个页面。
8.session如何传数组
session_register('data');
$data=array(1,2,3,4);
方法是先注册后赋值
9.问题9:我是不是可以用像$HTTP_GET_VARS['**']方式来访问session值呢?
回答:可以,你可以使用如下global数组来访问session,以加强网页的安全性
$HTTP_SESSION_VARS
$_SESSION
例程:
session_start();
$username = 'stangly.wrong';
session_register('username');
echo $HTTP_SESSION_VARS['username'];
echo '
';
echo $_SESSION['username'];
?>
请参照此例程修改符合您自己的程序。
问题10:session_unregister() 和 session_destroy() 有何区别?
session_unregister()函数主要作用是注消当前的一sion.(译自于php.net)
例程:
if(isset($_COOKIE[session_name()])) {
session_start();
session_destroy();
unset($_COOKIE[session_name()]);
}
以上,所述是一些新手经常遇到的问题。或许是详述不清,难免有误所在,请高手指点批评。
php中的session的配置
今天调试程序遇到了session的设置问题,网上这篇文章比较好,共拿来学习,并供大家参考。
转载自旅行论坛 http://www/lvxing.net
首先打开php.ini文件,找到session的部分:(分号后面的是注释)
[Session]
; Handler used to store/retrieve data.
session.save_handler = files ; 这个是session的方式,默认的files就可以了,代表用文件储存
; Argument passed to save_handler. In the case of files, this is the path where data files are stored.
session.save_path = /tmp ; 这个是session的保存路径,比如你是c盘,那么默认就是c:/tmp, 所以如果出现“Warning: open(/tmpsess_cc8b04f146a1e0494bc464305da92ea1, O_RDWR) failed”这样子的错误,你可以修改这个路径,或者在根目录下面建立一个tmp的文件夹
; Whether to use cookies.
session.use_cookies = 1 ; sessionid的传递方式,默认是cookie,推荐使用
; Name of the session (used as cookie name).
session.name = PHPSESSID ; sessionid的名称,保存在cookie里面的,要避免同名
; Initialize session on request startup.
session.auto_start = 0 ; 是否自动启动session,默认为不是,不需要修改
; Lifetime in seconds of cookie or, if 0, until browser is restarted.
session.cookie_lifetime = 0 ; sessionid的cookie生存时间,0代表知道浏览器关闭
; The path for which the cookie is valid.
session.cookie_path = / ; sessionid的cookie路径,不需要修改
; The domain for which the cookie is valid.
session.cookie_domain = ; ;sessionid的cookie域名,不需要修改
; Handler used to serialize data. php is the standard serializer of PHP.
session.serialize_handler = php ; 保存data的默认文件名后缀,不需要修改
; Percentual probability that the 'garbage collection' process is started on every session initialization.
session.gc_probability = 1
; After this number of seconds, stored data will be seen as 'garbage' and cleaned up by the garbage collection process.
session.gc_maxlifetime = 1440 ; session文件的保存时间
; Check HTTP Referer to invalidate externally stored URLs containing ids.
session.referer_check = ; How many bytes to read from the file.
session.entropy_length = 0 ; Specified here to create the session id.
session.entropy_file = ;session.entropy_length = 16 ;session.entropy_file = /dev/urandom
; Set to {nocache,private,public} to determine HTTP caching aspects.
session.cache_limiter = nocache ; Document expires after n minutes.
session.cache_expire = 180 ; use transient sid support if enabled by compiling with --enable-trans-sid.
session.use_trans_sid = 1 url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry" ======================================================================
session 的生命周期是多长
1 浏览器结束时其生命周期也同时结束,但是档案仍然存在于 /tmp/(sess_???)
2 下次重新开浏览器时会重新分配 sessionID,如果你使用 session_id() 把以前的 ID 带回来,
则会去读取残存在 /tmp 处的 sess_???, 取回你之前所有已经设定的参数
3 可以在 php.ini 里修改 session 档案残存的时间 session.gc_maxlifetime = 1440 ; after this number of seconds, stored
; data will be seen as 'garbage' and
; cleaned up by the gc process 默认是 1440 秒,24分钟
=========================================================================
使用无限生命期Session的方法
在PHP4.0中加入了对Session的支持,方便了我们很多程序,比如购物车等等!
在很多论坛中,Session也用于处理用户的登陆,记录下用户名和密码,使得用户不必每次都输入自己的用户名和密码!但是一般的Session的生命期有限,如果用户关闭了浏览器,就不能保存Session的变量了!那么怎么样可以实现Session的永久生命期呢?
大家知道,Session储存在服务器端,根据客户端提供的SessionID来得到这个用户的文件,然后读取文件,取得变量的值,SessionID可以使用客户端的Cookie或者Http1.1协议的Query_String(就是访问的URL的“?”后面的部分)来传送给服务器,然后服务器读取Session的目录……
要实现Session的永久生命期,首先需要了解一下php.ini关于Session的相关设置(打开php.ini文件,在“[Session]”部分):
1、session.use_cookies:默认的值是“1”,代表SessionID使用Cookie来传递,反之就是使用Query_String来传递;
2、session.name:这个就是SessionID储存的变量名称,可能是Cookie,也可能是Query_String来传递,默认值“PHPSESSID”;
3、session.cookie_lifetime:这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废……就是因为这个所以Session不能永久使用!
4、session.gc_maxlifetime:这个是Session数据在服务器端储存的时间,如果超过这个时间,那么Session数据就自动删除!
还有很多的设置,不过和本文相关的就是这些了,下面开始讲使用永久Session的原理和步骤。
前面说过,服务器通过SessionID来读取Session的数据,但是一般浏览器传送的SessionID在浏览器关闭后就没有了,那么我们只需要人为的设置SessionID并且保存下来,不就可以……
如果你拥有服务器的操作权限,那么设置这个非常非常的简单,只是需要进行如下的步骤:
1、把“session.use_cookies”设置为1,打开Cookie储存SessionID,不过默认就是1,一般不用修改;
2、把“session.cookie_lifetime”改为正无穷(当然没有正无穷的参数,不过999999999和正无穷也没有什么区别);
3、把“session.gc_maxlifetime”设置为和“session.cookie_lifetime”一样的时间;
设置完毕后,打开编辑器,输入如下的代码:
------------------------------------------------------------------------------------
<?php session_start();
session_register('count');
$count++;
echo $count;
?>
------------------------------------------------------------------------------------
然后保存为“session_check.php”,用浏览器打开“session_check.php”,看看显示的是不是“1”,再关闭浏览器,然后再打开浏览器访问“session_check.php”,如果显示“2”,那么恭喜了,你已经成功;如果失败的话,请检查你前面的设置。
但是如果你没有服务器的操作权限,那就比较麻烦了,你需要通过PHP程序改写SessionID来实现永久的Session数据保存。查查php.net的函数手册,可以见到有“session_id”这个函数:如果没有设置参数,那么将返回当前的SessionID,如果设置了参数,就会将当前的SessionID设置为给出的值……
只要利用永久性的Cookie加上“session_id”函数,就可以实现永久Session数据保存了!
但是为了方便,我们需要知道服务器设置的“session.name”,但是一般用户都没有权限查看服务器的php.ini设置,不过PHP提供了一个非常好的函数“phpinfo”,利用这个可以查看几乎所有的PHP信息!
------------------------------------------------------------------------------------
------------------------------------------------------------------------------------
打开编辑器,输入上面的代码,然后在浏览器中运行这个程序,会见到PHP的相关信息(如图1所示)。其中有一项“session.name”的参数(图中已经标出),这个就是我们需要的服务器“session.name”,一般是“PHPSESSID”。
记下了SessionID的名称后,我们就可以实现永久的Session数据储存了!
打开编辑器,输入下面的代码:
------------------------------------------------------------------------------------
session_start(); // 启动Session
session_register('count'); // 注册Session变量Count
if(isset($PHPSESSID)) {
session_id($PHPSESSID);
} // 如果设置了$PHPSESSID,就将SessionID赋值为$PHPSESSID,否则生成SessionID
$PHPSESSID = session_id(); // 取得当前的SessionID
$count++; // 变量count加1
setcookie('PHPSESSID', $PHPSESSID, time()+3156000); // 储存SessionID到Cookie中
echo $count; // 显示Session变量count的值
?>
------------------------------------------------------------------------------------
保存之后,利用和刚才拥有服务器权限时候的检测一样的方法,检测是否成功的保存了SessionID。
后记:
其实真正的永久储存是不可能的,因为Cookie的保存时间有限,而服务器的空间也有限……
但是对于一些需要保存时间比较长的站点,以上方法就已经足够了!关于Session的其他应用,可
以参见zphp.com的文章。
最后,笔者的调试环境:Windows98DigExt(SE)+Apache+PHP 4.04。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/yuyuzhou06/archive/2007/11/27/1905017.aspx
发表评论
-
转载 Win7+IIS7下用FastCGI模式配置PHP环境
2011-07-26 16:53 1761Win7+IIS7下用FastCGI模式配置PHP环境 ... -
php导入excel 收藏
2011-06-28 16:17 1597php导入excel PHP-Exc ... -
收藏的smarty总觉
2011-06-27 15:52 992nl2br[换行符替换成<br />]regex_ ... -
设为首页与加入收藏二种表现方法
2011-06-23 09:20 737文字型的 设为首页: <a href=# onCl ... -
无法载入 mcrypt 扩展,<br />请检查 PHP 配置
2011-06-22 16:27 1234无法载入 mcrypt 扩展,<br />请检 ... -
php批量导入数据库
2011-06-22 13:41 4627文章来源:Slyar Home 转载请注明,谢谢 ... -
删除提示框
2011-06-09 17:05 801<a href="article_delete ... -
【转】 用PHP封装的数据库操作方法(MYSQL、ACCESS)
2011-06-08 13:02 1121【转】 用PHP封装的数据库操作方法(MYSQL、ACCESS ... -
php 分两排显示数据
2011-06-01 23:20 895分排显示建议使用CSS处理,并非PHP程序逻辑范围如你现在 ... -
PHPlot PHP图形类
2011-05-21 15:28 1122PHPLOT 是一个用来创建图表的PHP图形类,需要 P ... -
json jquery 的实例应用
2011-05-12 10:22 799jQuery通过Ajax向PHP服务端发送请求并返回JSON数 ... -
做网站的一些菜鸟问题
2011-05-10 12:06 746最近做了个网站想购买个虚拟主机 可是不知道怎么上传数据库 第一 ... -
windows 2003 +apache+php虚拟主机配置windows2003serve
2011-03-27 18:32 1296windows 2003 +apache+php虚拟主机配置w ... -
域名指向————域名解析:
2011-03-27 18:23 806域名指向————域名解析: 域名解析也叫域名指向、服务器设置 ... -
企业(群发)发邮箱到会员qq邮箱碰到都问题
2011-03-18 20:00 1668今天发企业邮件到会员到qq邮箱都那里,邮件里面有图片,但是发过 ... -
今天用了一个好用的远程控制软件 不用得着qq咯
2011-03-11 14:53 1006teamviewer,一打开的时候你会有自己的id号,和密码, ... -
关于怎么在局域网内可以通过虚拟域名来访问的apache上的网站的对答
2011-03-10 10:49 5170E2011-03-10 10:34:12 可以的 Botak2 ... -
职业资格证书制度与职业技能鉴定问答
2011-03-08 17:19 920职业资格证书制度与职业技能鉴定问答 一 ... -
just a simple for a mail() amd get array()
2011-03-05 17:40 886<?php// this would come from ... -
php群发邮件
2011-03-05 17:32 1800发过邮件的人都知道,从别人那里申请的邮箱,没法群发。有些人说Q ...
相关推荐
但是,在实际开发过程中,session_start()可能会因为多种原因导致错误。本文将分析常见的session_start()错误原因,并提供相应的解决方法。 1. 输出缓冲区未开启导致错误: 在PHP脚本中,如果在调用session_start()...
### 关于 "Warning session_start() [function.session-start] Cannot send session cookie" 的解决方案 在进行Web开发时,尤其是在使用PHP语言处理用户会话(session)的过程中,可能会遇到一个常见的错误提示:...
本篇文章将详细探讨如何使用`session_start()`来查看和管理用户的浏览记录。 首先,了解`session_start()`的工作原理。当在PHP脚本中调用`session_start()`时,它会在服务器上创建或恢复一个唯一的会话ID,并将此ID...
Fatal error: session_start() [function.session-start]: Failed to initialize storage module: files (path: ) in C:\usr\phpMyAdmin\libraries\session.inc.php on line 75 I.更改服务器配置: 1、检查error.log...
做开发的时候,操作session有时候会遇到这个问题:Warning: session_start() [function.session-start]…… 系统环境:WIN2003+IIS6+PHP5.2.12 PHP出现类似如下错误: Warning: session_start()[function.session-...
确保在销毁session之前,先通过 `session_start()` 开启session功能。 4. **获取当前session ID** 要获取当前session的ID,你可以简单地使用 `echo SID;`。SID会自动包含当前session的ID。 5. **header函数之前无...
'SESSION_AUTO_START' => true, // 是否自动开启Session 'SESSION_TYPE' => 'Redis', //session类型 'SESSION_PERSISTENT' => 1, //是否长连接(对于php来说0和1都一样) 'SESSION_CACHE_TIME' => 3, //连接超时...
说是已经有输出,用编辑器打,前面明明什么都没有,原来在使用AJAX的 时候,也出现过这种情况,后来,把这个PHP文件放到linux中打开,会发现,在文件的最前面,会出现“锘 ”这样的一个字符(引号内),把它去掉以后...
需要注意的是,`session_id()` 必须在调用 `session_start()` 函数之前调用,以便正确地设置会话ID。 在会话处理中,会话ID是区分不同用户的关键,通常存储在客户端的Cookie中或通过URL传递。如果用户禁用了Cookie...
在这个例子中,`session_start()`首先启动session,然后你可以进行任何必要的session操作,最后调用`session_destroy()`来清除所有session数据。如果你在调用`session_destroy()`之前没有执行过`session_start()`,...
在这个例子中,我们首先通过 `session_start()` 启动session,然后取消设置所有session变量,最后调用 `session_destroy()` 来结束session。这样可以确保用户在注销后不会意外保留任何敏感信息。 然而,值得注意的...
在windows下编程,当使用session_start()方法的时候,有时会报session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /var/...
如果在`session_start()`之前有任何输出,会导致`Set-Cookie`头无法正常发送,从而影响会话的创建和管理。即使在某些情况下,PHP可能能够容忍轻微的输出,但这并不意味着这是安全或推荐的做法,因为它可能导致不一致...
因此,确保在销毁Session之前,有正确地调用`session_start()`来开启Session: ```php session_start(); // 清空 Session 变量 foreach ($_SESSION as $key => $value) { unset($_SESSION[$key]); } // 销毁 ...