2011-12-19 6 views
3

Я работаю на веб-странице, где у меня есть некоторые данные, отображаемые в html-таблицах. Я хочу, чтобы пользователь мог извлекать данные в виде документа Excel, и я использую PHPExcel для этой цели. Данные хранятся в массиве массивов, массив (первая строка первого массива (первый столбец, ..., последний столбец), ..., массив последней строки (первый столбец, ..., последний столбец)). Поэтому, чтобы передать данные в datatoexcel.php, где был создан файл excel, я сериализую массив и отправляю его с помощью POST.PHP сериализуемый, работающий на localhost, но не на веб-сервере

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

Это прекрасно работает в то время как на локальном хосте, но когда я запускаю его на веб-сервер $ funcdata, кажется, не имеют каких-либо данных , Localhost запускает Windows 7 с Apache2 и PHP 5.2.17, а веб-сервер запускает Linux RedHat 5.2 с Apache2 и PHP 5.2.6. PHPExcel работает на веб-сервере, я попытался создать массив жесткого кода в datatoexcel.php, и документ excel оказался прекрасным.

+0

делает $ 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. Kinda работает сейчас :) – Nait

0

Я рекомендую вам использовать json_encode и json_decode. Это похоже на сериализацию или неэтериализацию, но любой язык их реализует.

+0

Спасибо за подсказку, я обязательно попробую, когда вернусь к работе. – Nait

+0

Любой язык нет, все языки XD Извините за ошибку ... –