|
|
|
| Начинаю програмить на PHP.
Сижу разбираюсь с сессиями. Написал такой код.
<body>
<html>
<?
Error_Reporting(E_ALL & ~E_NOTICE);
session_start();
session_register("per");
$per=$HD;
echo ("мое имя: $per");
?>
<form action = "http://localhost/1s.php" method="get">
HDD: <input type="text" name="HD"/><br>
<input type="submit"/>
<a href="2s.php">На следующую страницу </a>
</body>
</html>
|
Все работает. Но выдается такая ошибка:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at z:\home\localhost\www\1s.php:5) in z:\home\localhost\www\1s.php on line 5
Как ее исправить? | |
|
|
|
|
|
|
|
для: Kain
(30.04.2006 в 17:43)
| | Старт сессии должен происходить до любого вывода в браузер. Или поместите блок
после вызова функции session_start() или буферизируйте вывод:
<?
ob_start();
?>
<body>
<html>
<?
Error_Reporting(E_ALL & ~E_NOTICE);
session_start();
session_register("per");
$per=$HD;
echo ("мое имя: $per");
?>
<form action = "http://localhost/1s.php" method="get">
HDD: <input type="text" name="HD"/><br>
<input type="submit"/>
<a href="2s.php">На следующую страницу </a>
</body>
</html>
<?
$buffer = ob_get_contents();
ob_clean();
echo $buffer;
?>
|
| |
|
|
|
|
|
|
|
для: Евгений Петров
(30.04.2006 в 18:23)
| | Спасибо большое.
Хм. еще один вопрос.
Если удалить из строки URL в браузере значения HD перменной то сессия завершается.
Так и надо? Я думал пока сессию не прервешь переменная per будет хранить данные о пользователе. | |
|
|
|
|
|
|
|
для: Kain
(01.05.2006 в 01:38)
| | Как вы определяете, что сессия завершается? | |
|
|
|
|
|
|
|
для: cheops
(01.05.2006 в 11:56)
| | Переменная PER становится пустой, хотя очищается переменая HD, вот и подумал что сессия закончена. | |
|
|
|
|
|
|
|
для: Kain
(01.05.2006 в 18:23)
| | Я прально понял что для того что бы переменная Per сохранялась при выходе из браузера и вспоминалась когда юзер заходит на страничку надо использовать куки?
Тогда такой вопрос.
Когда пишу такой скрипт
<?
$counter++;
setcookie("counter",$counter);
echo("Вы посетили эту страницу $counter раз");
?>
|
Выдает вот это:
Notice: Undefined variable: counter in z:\home\localhost\www\c.php on line 2
Warning: Cannot modify header information - headers already sent by (output started at z:\home\localhost\www\c.php:2) in z:\home\localhost\www\c.php on line 3
Вы посетили эту страницу 1 раз
|
И не считает количество сессий.(все сделал по учебнику). Что не так? | |
|
|
|
|
|
|
|
для: Kain
(30.04.2006 в 17:43)
| | Куки, сессии, отправка заголовков должны происходить до отправки любой информации в окно браузера, т.е. до любого вывода echo, print или непосредственного вывода вне тэгов <?php и ?>. Это связано с тем, что HTTP-заголовки передаются перед всеми данными и когда происходит вывод в окно браузера PHP вынужден их пред этим отослать клиенту. Поэтому повторно, после вывода информации в браузер он не может работать с куками, сессиями и отправлять заголовки.
Если вывод текста до отправки заголовков необходим следует воспользоваться функциями управления вывода, позволяющих задерживать вывод информации в браузер.
http://www.softtime.ru/group/id_group=12
http://www.softtime.ru/forum/ead.php?id_forum=1&id_theme=147
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=148
Вы можете также включить буфферизацию, если имеете доступ к конфигурационному файлу php.ini
| |
|
|
|