session无法传递,files保存可以,mysql保存却无法传递
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了session无法传递,files保存可以,mysql保存却无法传递,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3714字,纯文字阅读大概需要6分钟。
内容图文
![session无法传递,files保存可以,mysql保存却无法传递](/upload/InfoBanner/zyjiaocheng/201/8b6e55d37a4b4ad49e0b4b31d9323b33.jpg)
回复讨论(解决方案)
如果 session 用数据库保存,那么每个使用 session 的页面都必须加载相应的代码
你做到了吗?
这有个 session问题详解 可以看下 http://www.phpthinking.com/archives/318
如果 session 用数据库保存,那么每个使用 session 的页面都必须加载相应的代码
你做到了吗?
嗯嗯,每次要用session的时候都会
if (!isset($_SESSION)){
require_once __DIR__ . '/SessionHandler.php';
new \lib\SessionHandler();
}
SessionHandler.php文件里就有相应的代码,但问题还是其它页面读取不了session的值啊~
为防止意外情况出现
程序应无条件加载 SessionHandler.php
而实例化对象和 session_start() 都应在 SessionHandler.php 中进行
你还使用了命名空间,这就更需要注意排查新的故障点
为防止意外情况出现
程序应无条件加载 SessionHandler.php
而实例化对象和 session_start() 都应在 SessionHandler.php 中进行
你还使用了命名空间,这就更需要注意排查新的故障点
去掉条件引用以及去掉命名空间还是不行。
现在不说不同的页面,就算是同一个页面也读取不了,如下
error_log($_SESSION["captcha"]);
$_SESSION["captcha"] = $text;
第一句error_log($_SESSION["captcha"]);中的$_SESSION["captcha"]是想读取前一次存在数据库中的captcha 的值,此时数据库中是有值的,但是就是读不出来,显示“PHP Notice: Undefined index: captcha”的错误,
我的SessionHandler类中的session_read函数是这样的:
function readSession($SID){
$query = "select value from sessioninfo where sid= :sid";
$stmt = $this->dbLink->prepare($query);
$stmt->bindParam(':sid', $SID);
if($stmt->execute())
{
$value = $stmt->fetch(\PDO::FETCH_ASSOC);
/*error_log('sid:'.$SID);*/
/*error_log('value:'.implode(',', $value));*/
if(!empty($value))
{
return $value;
}
}
}
上面注释掉的代码读取到的$value是有值的,也就是说php读取到了值但是没有反序列化到内存里?
为防止意外情况出现
程序应无条件加载 SessionHandler.php
而实例化对象和 session_start() 都应在 SessionHandler.php 中进行
你还使用了命名空间,这就更需要注意排查新的故障点
去掉条件引用以及去掉命名空间还是不行。
现在不说不同的页面,就算是同一个页面也读取不了,如下
error_log($_SESSION["captcha"]);
$_SESSION["captcha"] = $text;
第一句error_log($_SESSION["captcha"]);中的$_SESSION["captcha"]是想读取前一次存在数据库中的captcha 的值,此时数据库中是有值的,但是就是读不出来,显示“PHP Notice: Undefined index: captcha”的错误,
我的SessionHandler类中的session_read函数是这样的:
function readSession($SID){
$query = "select value from sessioninfo where sid= :sid";
$stmt = $this->dbLink->prepare($query);
$stmt->bindParam(':sid', $SID);
if($stmt->execute())
{
$value = $stmt->fetch(\PDO::FETCH_ASSOC);
/*error_log('sid:'.$SID);*/
/*error_log('value:'.implode(',', $value));*/
if(!empty($value))
{
return $value;
}
}
}
上面注释掉的代码读取到的$value是有值的,也就是说php读取到了值但是没有反序列化到内存里?
原来问题果然是出现在这里的~
不应该return $value而是应该return $value['value'];
终于解决了~谢谢你们~
这有个 session问题详解 可以看下 http://www.phpthinking.com/archives/318
这片文章讲解得非常详细~好文章啊~
这有个 session问题详解 可以看下 http://www.phpthinking.com/archives/318
这片文章讲解得非常详细~好文章啊~ 谢谢 希望多多支持下 我的个人博客 可以做个朋友 QQ 541578455
内容总结
以上是互联网集市为您收集整理的session无法传递,files保存可以,mysql保存却无法传递全部内容,希望文章能够帮你解决session无法传递,files保存可以,mysql保存却无法传递所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。