| |
|
|
| | Подскажите, пожалуйста, как в 4-й версиях РНР и Apache работает session?
Я, в каждом файле пишу
<?php
session_start();
?>
|
и те переменные, которые входят в session обозначаю $_SESSION['per'] и почему-то так session не работает? | |
| |
|
|
| |
|
|
| |
для: xpom
(14.04.2007 в 19:15)
| | | Вместо $_SESSION['per'] попробуй $HTTP_SESSION_VARS['per'] | |
| |
|
|
| |
|
|
| |
для: Valick
(14.04.2007 в 20:18)
| | | При включенном register_globals можно использовать session_register('per'), но это "вчерашний день" | |
| |
|
|
| |
|
|
| |
для: xpom
(14.04.2007 в 19:15)
| | | А второй знак после 4 какой? | |
| |
|
|
| |
|
|
| |
для: cheops
(15.04.2007 в 01:01)
| | | Версии вот такие:
PHP 4.4.4
MySQL 4.1.11 | |
| |
|
|
| |
|
|
| |
для: xpom
(15.04.2007 в 16:20)
| | | Должно бы тогда работать всё нормально... а сообщений об ошибках никаких не проскакивает? Дело происходит на сервере или на локальной машине или и там и там одинаково? Наладте на локальной машине сохранение данных сессии на жёсткий диск http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=104 - посмотрите на каком этапе данные пропадают? | |
| |
|
|
| |
|
|
| |
для: cheops
(15.04.2007 в 16:46)
| | | Не работает только на сервере, на локальной все работает, данные пропадают сразу при первом обращении к переменным и выводит следующие 2 ошибки:
1. Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (путь)
2. Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (путь)
| |
| |
|
|
| |
|
|
| |
для: xpom
(15.04.2007 в 22:20)
| | | работать с куками надо до того как что-нить выводиться на сраницу, если этого не избежать, можно использовать буферизацию вывода
| |
| |
|
|
| |
|
|
| |
для: xpom
(15.04.2007 в 22:20)
| | | Куки, сессии, отправка заголовков должны происходить до отправки любой информации в окно браузера, т.е. до любого вывода 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
http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=8484 | |
| |
|
|
| |
|
|
| |
для: cheops
(16.04.2007 в 14:48)
| | | Тоесть session_start(); нужно поставить после
<head>
<title>Заголовок</title>
</head>
|
, тогда должно заработать? | |
| |
|
|
| |
|
|
| |
для: xpom
(16.04.2007 в 15:03)
| | | Он, не правильно, т.е. на оборот:)
Я, так понял нужно всего файла сделать буферизацию (включая таблицы находящиеся вне тэгов <?php и ?>), а оставить только session_start(); без буферизации? | |
| |
|
|
| |
|
|
| |
для: xpom
(16.04.2007 в 19:58)
| | | а оставить только session_start(); без буферизации?
А Вы и не сможете помешать буферизацией послать cookies с SID. | |
| |
|
|
| |
|
|
| |
для: Unkind
(16.04.2007 в 19:59)
| | | Что-то ничего не получается?
В том файле где создается session, нужно писать session_start();? Делаю в это файле буферизацию с переменной $_SESSION['per'] в буфере без изменений выводится предупреждение, а убираю из буфера и ставлю сразу после session_start(); тогда предупреждение не выводится, но переменная $_SESSION['per'] не срабатывает? Подскажите что нужно сделать, чтобы все работало? | |
| |
|
|
| |
|
|
| |
для: xpom
(17.04.2007 в 18:58)
| | | session_start(); нужно выполнить вначале исполнения любого кода, где Вы работаете с массивом $_SESSION[]
Выполнить вначале исполнения любого кода - значит "до попадания любых символов тела ответа в поток браузеру". Что бы там ни говорили поборники буферизации, начинающему лучше считать что такого финта нет. Быстрее перейдет в ранг опытных.
Выполнить вначале исполнения любого кода - значит, что php совершенно всё равно где и сколько раз Вы этот вызов напишете - один раз в include-файле поместите или по всем php-файлам рассуете. Важно не где Вы написали этот вызов, а когда он будет выполнен.
Чтобы всё заработало, нужно учить язык. | |
| |
|
|
| |
|
|
| |
для: Trianon
(17.04.2007 в 19:41)
| | | Я работаю с массивом $_SESSION[] в той части, что была в буфере и не получается?
Т.е. мне нужно работать с $_SESSION[] в той части кода, что приходится буферизировать?
Как в этом случае можно сделать? | |
| |
|
|
| |
|
|
| |
для: xpom
(17.04.2007 в 19:57)
| | | Знаете, я Вам не верю.
Я не верю, что (взято из Вашего 14.04.2007 в 19:15) когда Вы пишете
<?php
session_start();
?>
| в начале файла с исполняемым кодом, у Вас возникает вот это (15.04.2007 в 22:20) вот:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by
Я также не верю, что если Вам всё же удается успешно вызвать session_start() , то когда после этого Вы пытаетесь использовать массив $_SESSION, у Вас в нем пропадают значения.
Причем независимо от того, используете Вы буферизацию или нет.
По-моему, уже пора приводить краткие примеры с кодом. | |
| |
|
|
| |
|
|
| |
для: Trianon
(17.04.2007 в 20:24)
| | | Вот схематический пример:
<?php
session_start();
?>
//здесь html код.
<?php
// здесь используется $_SESSION['per']
?>
//здесь html код.
|
в таком случае $_SESSION['per'] работает, но вот это (15.04.2007 в 22:20) вот:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by | |
| |
|
|
| |
|
|
| |
для: xpom
(17.04.2007 в 20:39)
| | | Если первыми пятью байтами файла являются < ? p h p , такого быть не-мо-жет. | |
| |
|
|
| |
|
|
| |
для: Trianon
(18.04.2007 в 00:53)
| | | Да, все правильно, наконец то я все понял, оказывается нельзя перед <?php вставлять даже пробела! :-) | |
| |
|
|
| |
|
|
| |
для: cheops
(15.04.2007 в 01:01)
| | | У вас на сервере настроены сессии? | |
| |
|
|
| |
|
|
| |
для: CrazyAngel
(15.04.2007 в 16:26)
| | | >У вас на сервере настроены сессии?
Я думаю, да? | |
| |
|
|
| |
|
|
| |
для: xpom
(16.04.2007 в 14:33)
| | | Если используете виртуальный сервер откатитесь на php.ini-recomended. у меня была проблема с сессиями - после отката все начало работать нормально... | |
| |
|
|