我正在开发一个网页,我在html表格中可以看到一些数据。我希望用户能够将数据作为Excel文档进行检索,并且正在使用PHPExcel进行此操作。数据存储在一个数组数组中, array(array first row(first col,...,last col),...,array last row(first col,...,last col))。因此,为了将数据传递给生成excel文件的datatoexcel.php,我将数组序列化并使用POST发送它。
$functiondata = serialize($func[1]);
echo '<form action="datatoexcel.php" name="dataform" method="post">'.
'<input type=hidden name="functiondata" value="'.htmlspecialchars($functiondata).'">'.
'<input type="radio" name="format" value="xls" checked>xls'.
'<input type="radio" name="format" value="xlsx">xlsx'.
'</form>';
echo "<a href=\"#\" onclick=\"document['dataform'].submit()\">Export table data</a>";
然后在datatoexcel.php上检索数据:
$serialized_func = $_POST['functiondata'];
$funcdata = unserialize($serialized_func);
这在localhost上非常有效,但是当我在webserver上运行时,$ funcdata似乎没有任何数据。 Localhost使用Apache2和PHP 5.2.17运行Windows 7,Web服务器使用Apache2和PHP 5.2.6运行Linux RedHat 5.2。 PHPExcel正在开发webserver,我尝试在datatoexcel.php中创建一个硬编码数组,并且excel文档结果很好。
答案 0 :(得分:2)
您是否使用完全相同的输入数据进行测试? 您的本地或远程服务器也启用了magic_quotes吗?这可能 也会干扰您的输入数据。
我认为这可能与使用htmlspecialchars()有关。如果htmlspecialchars()从输入中转换任何字符,那么在反序列化之前必须使用htmlspecialchars_decode($ serialized_func):
反序列化(htmlspecialchars_decode($ serialized_func));
最后,请务必进行设置 的error_reporting(E_ALL);
在脚本开头,您可以通过这种方式捕获一些警告。
答案 1 :(得分:0)
我建议你使用json_encode和json_decode。它像序列化或反序列化,但任何语言都实现它们。