我通过查询字符串传递序列化数据
$msg = $nos.' of '.$recordsExtracted.' records imported';
header('Location: ../import-to-master.php?msg='.serialize($msg));
我使用以下内容来捕获数据
if(isset($_GET['msg']))
{
$msg=unserialize($_GET['msg']);
}
在localhost上,在回显$msg
时,消息将显示在屏幕上。
但是在生产服务器上,虽然该消息在URL中可见
import-to-master.php?msg=s:23:"5 of 5 records imported";
回显$msg
不会显示任何内容。为了确保正在处理$msg
,我在其中添加了一个类似
$msg .= 'sdage';
在刷新页面时,我在页面上看到了sdage
。所以这意味着unserialize
无法在服务器上运行。
我的第一个想法可能是生产服务器的PHP版本不支持unserialize
,但版本为5.2,支持serialize
和unserialize
我想知道问题可能是什么。
PS:是的,我没有考虑转义数据,但我现在的首要任务是解决当前问题,然后从查询字符串中获取安全输入。
答案 0 :(得分:1)
经过一系列的试验和错误后,我用
解决了这个问题if(isset($_GET['msg']))
{
$msg=unserialize(stripslashes($_GET['msg']));
}