PHP session失效不传递的解决办法-PHP问题

资源魔 28 0

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使用问题

抱歉,评论功能暂时关闭!