Sumanai:if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) )
добавить небольшой
фоллбек:
- Код: Выделить всё
// Output page ...
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
$template->set_filenames(array(
'body' => 'posting_preview.html')
);
header('Content-Type: text/html; charset=utf-8', true);
$template->display('body');
garbage_collection();
exit_handler();
}
PHP работает, но есть чувство не законченности.
Добавлено спустя 18 минут 6 секунд:Нашел первую. Постинг от имени "Гость" требует Имени и кода капчи. Если их нет - превью не показывает и не показывает ошибки. Нужно добавлять
Добавлено спустя 29 минут 9 секунд:- Код: Выделить всё
garbage_collection();
exit_handler();
не совсем понятен такой метод. Почему не exit() или лучше die()?
Добавлено спустя 52 минуты 56 секунд:получилось пока так:
- Код: Выделить всё
// Output page ...
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
$template->set_filenames(array(
'body' => 'posting_preview.html')
);
header('Content-Type: text/html; charset=utf-8', true);
$template->display('body');
die();
}
Добавлено спустя 35 минут 13 секунд:отлавливаем ошибки:
- Код: Выделить всё
// Output page ...
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
header('Content-Type: text/html; charset=utf-8', true);
if (sizeof($error)) {
echo '<div class="alert alert-danger"><p class="error">' . implode('</p><p class="error">', $error) . '</p></div>';
} else {
$template->set_filenames(array(
'body' => 'posting_preview.html')
);
$template->display('body');
}
die();
}
Добавлено спустя 19 минут 9 секунд:далее:
в нынешней реализации ответ сервера растянут в процессах выполнения кода PHP
Выглядит это примерно так:
{время выполнения операции}[вывод]{время выполнения операции}[вывод]{время выполнения операции}[вывод].....[закрытие соединения]
Правильней было бы выводить через буфер.
Что-то вроде такого:
ob_start(); // открываем буфер вывода
echo("Hello there!"); // добавляем нужное
ob_end_clean(); //закрываем буфер.
С буфером передача данных выглядит примерно так:
{время выполнения всех операций}[вывод][закрытие соединения]
Добавлено спустя 24 минуты 40 секунд:получилось так:
- Код: Выделить всё
// Output page ...
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
header('Content-Type: text/html; charset=utf-8', true);
ob_start();
if (sizeof($error)) {
echo '<div class="alert alert-danger"><p class="error">' . implode('</p><p class="error">', $error) . '</p></div>';
} else {
$template->set_filenames(array(
'body' => 'posting_preview.html')
);
$template->display('body');
}
$size = ob_get_length(); // Определяем длину контента
header("Content-Length: $size"); // Помещаем длину в заголовок ответа
ob_end_flush(); // Закрываем буфер
flush(); // Отдаем содержимое буфера
ob_end_clean(); // Сбрасываем буфер
die();
}