将验证码保存在session,当用files来保存session的时候,用户注册的时候能在后台$_SESSION['captcha']读取到这个验证码,也就是说能正常传递,但是改为用mysql来保存session的时候,能正常储存session(在数据库里能看到有captcha的session值),在生成验证码的那个页面用$_SESSION['captcha']也是能读到那个值的,但是之后用户注册后台另一个页面却读取不到这个值,(也就是说不能传递了),很久之前都是可以的,现在发现居然不行了,有没有谁能想到是什么原因?
回复讨论(解决方案)
如果 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

tomakephpapplicationsfaster,关注台词:1)useopcodeCachingLikeLikeLikeLikeLikePachetoStorePreciledScompiledScriptbyTecode.2)MinimimiedAtabaseSqueriSegrieSqueriSegeriSybysequeryCachingandeffeftExting.3)Leveragephp7 leveragephp7 leveragephp7 leveragephpphp7功能forbettercodeefficy.4)

到ImprovephPapplicationspeed,关注台词:1)启用opcodeCachingwithapCutoredUcescriptexecutiontime.2)实现databasequerycachingusingpdotominiminimizedatabasehits.3)usehttp/2tomultiplexrequlexrequestsandredececonnection.4 limitsclection.4.4

依赖注入(DI)通过显式传递依赖关系,显着提升了PHP代码的可测试性。 1)DI解耦类与具体实现,使测试和维护更灵活。 2)三种类型中,构造函数注入明确表达依赖,保持状态一致。 3)使用DI容器管理复杂依赖,提升代码质量和开发效率。

databasequeryOptimizationinphpinvolVolVOLVESEVERSEVERSTRATEMIESOENHANCEPERANCE.1)SELECTONLYNLYNESSERSAYCOLUMNSTORMONTOUMTOUNSOUDSATATATATATATATATATATRANSFER.3)

phpisusedforsenderemailsduetoitsbuilt-inmail()函数andsupportiveLibrariesLikePhpMailerandSwiftMailer.1)usethemail()functionforbasicemails,butithasimails.2)butithasimimitations.2)

PHP性能瓶颈可以通过以下步骤解决:1)使用Xdebug或Blackfire进行性能分析,找出问题所在;2)优化数据库查询并使用缓存,如APCu;3)使用array_filter等高效函数优化数组操作;4)配置OPcache进行字节码缓存;5)优化前端,如减少HTTP请求和优化图片;6)持续监控和优化性能。通过这些方法,可以显着提升PHP应用的性能。

依赖性注射(DI)InphpisadesignPatternthatManages和ReducesClassDeptions,增强量产生性,可验证性和Maintainability.itallowspasspassingDepentenciesLikEdenceSeconnectionSeconnectionStoclasseconnectionStoclasseSasasasasareTers,interitationApertatingAeseritatingEaseTestingEasingEaseTeStingEasingAndScalability。

cachingimprovesphpermenceByStorcyResultSofComputationsorqucrouctationsorquctationsorquickretrieval,reducingServerLoadAndenHancingResponsetimes.feftectivestrategiesinclude:1)opcodecaching,whereStoresCompiledSinmememorytssinmemorytoskipcompliation; 2)datacaching datacachingsingMemccachingmcachingmcachings


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver Mac版
视觉化网页开发工具

螳螂BT
Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SublimeText3汉化版
中文版,非常好用

SublimeText3 英文版
推荐:为Win版本,支持代码提示!