2011-12-19 33 views
3

我正在一个网页上工作,在html表格中有一些数据可视化。我希望用户能够以Excel文档的形式检索数据,并且为此使用PHPExcel。数据存储在数组数组中, 数组(数组第一行(第一列,...,最后一列),...,数组最后一列(第一列,...,最后一列))。因此,为了将数据传递到excel文件所在的datatoexcel.php,我序列化数组并使用POST发送它。在本地主机上但不在网络服务器上的PHP序列化工作

$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); 

这工作出色,同时在本地主机上,但是当我在Web服务器上运行$它funcdata似乎没有任何数据。 Localhost使用Apache2和PHP 5.2.17运行Windows 7,Web服务器使用Apache2和PHP 5.2.6运行Linux RedHat 5.2。 PHPExcel正在处理Web服务器,我试图在datatoexcel.php中创建一个硬编码数组,而且excel文档结果很好。

+0

does $ func [1]返回期望的结果?显示任何错误?如果没有显示错误,您确定error_reporting是E_ALL,并且不使用@(错误抑制运算符)? – Sejanus

回答

2

您是否使用完全相同的输入数据测试它? 您的本地或远程服务器是否启用了magic_quotes?这可能也会干扰您的输入数据。

我认为这可能与使用htmlspecialchars()有关。如果htmlspecialchars()从输入转换任何字符,则必须在反序列化之前使用htmlspecialchars_decode($ serialized_func):

unserialize(htmlspecialchars_decode($ serialized_func));

最后,请务必设置 error_reporting(E_ALL);

在脚本开始时,您可能会以这种方式捕捉到一些警告。

+0

我想我已经测试过相同的输入数据,但不是100%确定。不确定magic_quotes,但会检查出来。感谢您的提示。 – Nait

+0

服务器启用了magic_quotes。有点工作:) – Nait

0

我建议你使用json_encode和json_decode。它像序列化或反序列化,但任何语言都实现它们。

+0

感谢您的提示,我会一定要尝试当我恢复工作。 – Nait

+0

任何语言都不是,所有语言XD对不起,错误... –

相关问题