2

我通过查询字符串传递序列化数据

$msg = $nos.' of '.$recordsExtracted.' records imported';
header('Location: ../import-to-master.php?msg='.serialize($msg));

我正在使用以下内容来捕获数据

if(isset($_GET['msg']))
{
    $msg=unserialize($_GET['msg']);
}

在本地主机上,回$msg显消息时将显示在屏幕上。

但是在生产服务器上,虽然消息在 url 中可见

import-to-master.php?msg=s:23:"5 of 5 records imported";

回显$msg不显示任何内容。为了确保$msg正在处理,我在它后面附加了一个字符串

$msg .= 'sdage';

在刷新页面时,我在sdage页面上看到了。所以这意味着unserialize在服务器上不起作用。

我的第一个想法可能是生产服务器的 PHP 版本不支持unserialize,但版本是 5.2 支持serializeunserialize

我想知道问题可能是什么。

PS:是的,我没有处理转义数据,但我现在的首要任务是解决当前问题,然后从查询字符串中获取安全输入。

4

1 回答 1

1

经过一系列的试验和错误,我解决了它

if(isset($_GET['msg']))
{
    $msg=unserialize(stripslashes($_GET['msg']));
}
于 2012-12-28T14:33:53.510 回答