у меня есть такой код:
<?php
session_start();
if(!isset($_SESSION['log']) || $_SESSION['log'] != $_POST['accesso']){
exit(":)");
}
header('Content-Type: image/jpeg');
$image_width = 200;
$image_height = 40;
$image = imagecreate($image_width, $image_height);
imagejpeg($image);
?>
Если я пытаюсь сохранить изображение или с помощью правой кнопки мыши, или с помощью команды ctrl + s, ничего не происходит. Если я удалю сессию session_start();
все снова работает
Решения?
Хорошо, после «обсуждения» этого в комментариях и того, что вы отказываетесь предоставить больше информации, лучшее, что я мог сделать, — это угадать, в чем проблема. Так:
Без session_start()
нет $ _SESSION global. Сервер вообще не запускает или не сохраняет сеанс, поэтому вы вообще не сможете загрузить образ (как !isset($_SESSION['log'])
всегда должен возвращать TRUE в этом случае. Если это не так, я полагаю, у вас есть session.auto_start
установите в вашем файле php.ini значение 1 (которое указывает серверу запускать сессию при каждом запросе. Я бы установил значение 0 и посмотрел, изменилось ли это что-нибудь).
Помните, что при активной сессии (session_start()
называется) все, что вы храните в переменной $ _SESSION, будет там до истечения времени ожидания сеанса, когда вы изменяете cookie сеанса («забываете» идентификатор сеанса) или явно удаляете указанное значение из $_SESSION
(как это: unset($_SESSION['log']);
). Попробуйте сбросить $ _SESSION [‘log’] или как-то изменить его и посмотреть, что произойдет.
Вместо вас я бы добавил директиву, подобную приведенной ниже, в самом начале вашего скрипта, чтобы помочь мне в отладке:
error_reporting(E_ALL); /* report all errors no matter what type */
ini_set('display_errors', 1); /* display errors to output */
Кроме того, если на самом деле session_start()
это ваша проблема, вы действительно должны прочитать о том, как сеансы работают в PHP: http://php.net/manual/en/book.session.php.
Других решений пока нет …