PHP session生效没有通报的处理方法:起首写个php文件内容为“<?=phpinfo()?>”;而后传到效劳器去看效劳器的参数设置装备摆设,标明用户ID为标识的session;最初将session的name赋值Havi,输入session。
PHP中,session不克不及通报到下一个页面去,普通有两种状况:
咱们先写个php文件:<?=phpinfo()?>
,传到效劳器去看看效劳器的参数设置装备摆设。
转到session
局部,看到session.use_trans_sid
参数被设为了0。
这 个参数指定了能否启用通明SID支持,即session
能否跟着URL通报。我集体的了解是,一旦这个参数被设为0,那末每一个URL城市启一个 session
。这样前面页面就无奈追踪失去后面一个页面的session,也就是咱们所说的无奈通报。两个页面正在效劳器端天生了两个session
文 件,且有关联。
以是一个方法是正在设置装备摆设文件php.ini
里把session.use_trans_sid
的值改为1。
当然咱们晓得,没有是谁都有权限去改php的设置装备摆设的,那末另有甚么直接的处理方法呢?
上面就用两个实例来讲明吧:
文件1 test1.php
<?php //标明是应用用户ID为标识的session session_id(SID); //启动session session_start(); //将session的name赋值为Havi $_SESSION['name']=”Havi”; //输入session,并设置超链接到第二页test2.php echo “<a href=\”test2.php\”>”.$_SESSION['name'].”</a>”; ?>
文件2: test2.php
<?php 标明是应用用户ID为标识的session session_id(SID); //启动session session_start(); //输入test1.php中通报的session。 echo “This is “.$_SESSION['name']; ?>
每一个页面都要写开启session,否则仍是不克不及失常工作
所以,重点是正在session_start();
前加之session_id(SID)
;,这样页面转换时,效劳器应用的是用户保留正在效劳器session
文件夹里的session
,处理了通报的成绩。
不外有同鞋会反映说,这样一来,多个用户的session
写正在一个SID里了,那Session的代价就施展没有进去了。以是另有一招来处理此成绩,不必加session_id(SID);
条件是你对效劳器的php.ini有设置装备摆设的权限:
output_buffering
改为ON,情理就没有表了。
第二个可能的缘由是对效劳器保留session
的文件夹不读取权限,仍是回到phpinfo.php
中,查看session
保留的地点:
session.save_path: var/tmp
以是就是反省下var/tmp文件夹能否可写。
写一个文件:test3.php来测试一下:
<? echo var_dump(is_writeable(ini_get(“session.save_path”))); ?>
假如前往bool(false),证实文件夹写权限被限度了,那就换个文件夹咯,正在你编写的网页里退出:
//设置以后目次下session子文件夹为session保留门路。$sessSavePath = dirname(__FILE__).’/session/’; //假如新门路可读可写(可经过FTP上变卦文件夹属性为777完成),则让该门路失效。if(is_writeable($sessSavePath) && is_readable($sessSavePath)){session_save_path($sessSavePath);}
以上就是PHP session生效没有通报的处理方法的具体内容,更多请存眷资源魔其它相干文章!
标签: php php教程 session php故障解决 php使用问题
抱歉,评论功能暂时关闭!