Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: работа session в 4-й версии?
 
 автор: xpom   (14.04.2007 в 19:15)   письмо автору
 
 

Подскажите, пожалуйста, как в 4-й версиях РНР и Apache работает session?
Я, в каждом файле пишу

<?php
  session_start
();
?>

и те переменные, которые входят в session обозначаю $_SESSION['per'] и почему-то так session не работает?

   
 
 автор: Valick   (14.04.2007 в 20:18)   письмо автору
 
   для: xpom   (14.04.2007 в 19:15)
 

Вместо $_SESSION['per'] попробуй $HTTP_SESSION_VARS['per']

   
 
 автор: Valick   (14.04.2007 в 20:21)   письмо автору
 
   для: Valick   (14.04.2007 в 20:18)
 

При включенном register_globals можно использовать session_register('per'), но это "вчерашний день"

   
 
 автор: cheops   (15.04.2007 в 01:01)   письмо автору
 
   для: xpom   (14.04.2007 в 19:15)
 

А второй знак после 4 какой?

   
 
 автор: xpom   (15.04.2007 в 16:20)   письмо автору
 
   для: cheops   (15.04.2007 в 01:01)
 

Версии вот такие:
PHP 4.4.4
MySQL 4.1.11

   
 
 автор: cheops   (15.04.2007 в 16:46)   письмо автору
 
   для: xpom   (15.04.2007 в 16:20)
 

Должно бы тогда работать всё нормально... а сообщений об ошибках никаких не проскакивает? Дело происходит на сервере или на локальной машине или и там и там одинаково? Наладте на локальной машине сохранение данных сессии на жёсткий диск http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=104 - посмотрите на каком этапе данные пропадают?

   
 
 автор: xpom   (15.04.2007 в 22:20)   письмо автору
 
   для: 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 (путь)

   
 
 автор: CrazyAngel   (16.04.2007 в 14:36)   письмо автору
 
   для: xpom   (15.04.2007 в 22:20)
 

работать с куками надо до того как что-нить выводиться на сраницу, если этого не избежать, можно использовать буферизацию вывода

ob_start();

   
 
 автор: cheops   (16.04.2007 в 14:48)   письмо автору
 
   для: 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
output_buffering = On  


http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=8484

   
 
 автор: xpom   (16.04.2007 в 15:03)   письмо автору
 
   для: cheops   (16.04.2007 в 14:48)
 

Тоесть session_start(); нужно поставить после

<head>
<title>Заголовок</title>
</head>

, тогда должно заработать?

   
 
 автор: xpom   (16.04.2007 в 19:58)   письмо автору
 
   для: xpom   (16.04.2007 в 15:03)
 

Он, не правильно, т.е. на оборот:)
Я, так понял нужно всего файла сделать буферизацию (включая таблицы находящиеся вне тэгов <?php и ?>), а оставить только session_start(); без буферизации?

   
 
 автор: Unkind   (16.04.2007 в 19:59)   письмо автору
 
   для: xpom   (16.04.2007 в 19:58)
 

а оставить только session_start(); без буферизации?
А Вы и не сможете помешать буферизацией послать cookies с SID.

   
 
 автор: xpom   (17.04.2007 в 18:58)   письмо автору
 
   для: Unkind   (16.04.2007 в 19:59)
 

Что-то ничего не получается?
В том файле где создается session, нужно писать session_start();? Делаю в это файле буферизацию с переменной $_SESSION['per'] в буфере без изменений выводится предупреждение, а убираю из буфера и ставлю сразу после session_start(); тогда предупреждение не выводится, но переменная $_SESSION['per'] не срабатывает? Подскажите что нужно сделать, чтобы все работало?

   
 
 автор: Trianon   (17.04.2007 в 19:41)   письмо автору
 
   для: xpom   (17.04.2007 в 18:58)
 

session_start(); нужно выполнить вначале исполнения любого кода, где Вы работаете с массивом $_SESSION[]

Выполнить вначале исполнения любого кода - значит "до попадания любых символов тела ответа в поток браузеру". Что бы там ни говорили поборники буферизации, начинающему лучше считать что такого финта нет. Быстрее перейдет в ранг опытных.
Выполнить вначале исполнения любого кода - значит, что php совершенно всё равно где и сколько раз Вы этот вызов напишете - один раз в include-файле поместите или по всем php-файлам рассуете. Важно не где Вы написали этот вызов, а когда он будет выполнен.

Чтобы всё заработало, нужно учить язык.

   
 
 автор: xpom   (17.04.2007 в 19:57)   письмо автору
 
   для: Trianon   (17.04.2007 в 19:41)
 

Я работаю с массивом $_SESSION[] в той части, что была в буфере и не получается?
Т.е. мне нужно работать с $_SESSION[] в той части кода, что приходится буферизировать?
Как в этом случае можно сделать?

   
 
 автор: Trianon   (17.04.2007 в 20:24)   письмо автору
 
   для: 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, у Вас в нем пропадают значения.

Причем независимо от того, используете Вы буферизацию или нет.

По-моему, уже пора приводить краткие примеры с кодом.

   
 
 автор: xpom   (17.04.2007 в 20:39)   письмо автору
 
   для: 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

   
 
 автор: Trianon   (18.04.2007 в 00:53)   письмо автору
 
   для: xpom   (17.04.2007 в 20:39)
 

Если первыми пятью байтами файла являются < ? p h p , такого быть не-мо-жет.

   
 
 автор: xpom   (18.04.2007 в 10:11)   письмо автору
 
   для: Trianon   (18.04.2007 в 00:53)
 

Да, все правильно, наконец то я все понял, оказывается нельзя перед <?php вставлять даже пробела! :-)

   
 
 автор: CrazyAngel   (15.04.2007 в 16:26)   письмо автору
 
   для: cheops   (15.04.2007 в 01:01)
 

У вас на сервере настроены сессии?

   
 
 автор: xpom   (16.04.2007 в 14:33)   письмо автору
 
   для: CrazyAngel   (15.04.2007 в 16:26)
 

>У вас на сервере настроены сессии?
Я думаю, да?

   
 
 автор: black_prince   (18.04.2007 в 10:36)   письмо автору
 
   для: xpom   (16.04.2007 в 14:33)
 

Если используете виртуальный сервер откатитесь на php.ini-recomended. у меня была проблема с сессиями - после отката все начало работать нормально...

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования