Опять про сессии. Помогите, плиз!

Ashotovich

Новичок
Опять про сессии. Помогите, плиз!

Всем привет. Опять начались у меня непонятки с сессиями. А именно - массив сессии не передается на следующую страницу. Вот листинг тестового файла, дабы вам, уважаемые, не надо было ковыряться в лишних данных:

Файл 0.php
PHP:
session_unset();
session_start();
$_SESSION['var1']="testvar";
header("Location: [url]http://localhost/test/01.php[/url]");
Файл 01.php
PHP:
session_start();
print_r($_SESSION);
В итоге, на странице 01.php выдается мрачное Array ( ) вместо желаемого Array (var1 => testvar). Ума не приложу, в чем может быть загвоздка? Может, в php.ini поковыряться надо?

Заранее благодарю за помощь.
С уважением, Ashotovich
 

Ashotovich

Новичок
У меня PHP 4.3.3, там уже это не нужно.

Да, нашел я таки ошибку. В php.ini стояло:
session.use_cookies = 0. Поменял на единичку, все заработало.

Г-да админы! Пожалуйста, добавьте и эту ошибку в ваш FAQ (http://faq.phpclub.net/sessions), ибо там о ней не упомянуто.
 

Crazy

Developer
Дело в редиректе с вроятностью 99%. Для сравнения попробуй не через header, а через meta redirect.

Товарищу саливону рекомендуется вначале проверять свои советы на кошках... :)
 

Ashotovich

Новичок
Из всего этого исчо один вопрос: а можно ли пользоваться сессиями не прибегая к кукам?
 

Фанат

oncle terrible
Команда форума
Чего там нету?
вот этого?
Сессии используют стандартные, хорошо известные способы передачи данных. Собственно, других-то просто и нет.
Идентификатор - это обычная переменная. По умолчанию ее имя - $PHPSESSID.
Задача PHP отправить ее браузеру, чтобы он передал ее со следующим запросом. Из из уже упоминавшегося раздела FAQ ясно, что переменную можно передать только двумя способами: в куках или POST/GET запросом.
PHP использует оба метода.
За это отвечают две настройки в php.ini:
session.use_cookies - если равно 1, то PHP передает
идентификатор в куках, если 0 - то нет.
...
Проблемы начинаются, если браузер куки не возвращает. В этом случае, не получая куки с идентификатором, PHP будет все время стартовать новую сессию, и механизм работать не будет.
А может быть, товарищам админам скинуться тебе на очки?
 

Фанат

oncle terrible
Команда форума
Или вот этого в факе нет?
Еще одна проблема может возникнуть, если после авторизации вы используете перенаправление через header.
Дело в том, что РНР сам автодополняет ссылки на странице, но не делает этого для header-ов
Поэтому надо добавлять СИД руками, например, так:
header("Location: /script.php?".SID);
???
 

Ashotovich

Новичок
Понял. Читал невнимательно. Хорошо хоть сам допер глянуть.

А как передавать данные сессии через $_POST, а не через куку? Насколько я понял, такая возможность имеется... Через $_GET - понятно, а в $_POST как ее запихивать? Через форму? Если да, то тады лучше куками. ;)))
 

Фанат

oncle terrible
Команда форума
На все это есть исчо один ответ.
ПРОЧЕСТЬ ФАК!
Не видя фигу, а ВНИМАТЕЛЬНО!
 

Ashotovich

Новичок
:) Уж сколько раз твердили миру... И сколько раз я уже убеждаюсь... Мде. Спасибо за помощь и за правильный FAQ. А то, что не вчитался тольком - так напрягся очень, занервничал, вот и того... :)
 

Фанат

oncle terrible
Команда форума
Ашотик.
Тебе не надоело?
Мне - надоело. Тебя носом тыкать. Сейчас пинать ночну, ногами.
Иди и прочти, все, что тебя интересует про формы.
 

Ashotovich

Новичок
"Ашотиком" зовут моего отца, очень редко, да все больше моя мама.

Про формы я знаю. В PHP ковыряюсь уже почти год, при этом достаточно плотно. Текущий вопрос возник по той причине, что я на локальной машине сам поставил Apache, PHP и MySQL - приходится мигрировать с Оракла на бесплатный MySQL (на сервер с Ораклом PHP год назад ставил БД-админ, у меня профиль несколько иной).
Понятное дело, что за несколько месяцев азы типа session_start подзабываются, в голове крутится всякая высокопарная муть про вложенные SQL-запросы, передачу массивов из PHP в JavaScript и пр. Кто ж знал, что придется заново ковыряться с настройками. Так что уж не обессудьте за глупые вопросы. Насчет FAQ уяснил.

Спасибо за помощь.
С уважением, Ashotovich
 

Фанат

oncle terrible
Команда форума
Весь твой пассаж про базы данных и забывчивость показывает ПОЛНОЕ отсутствие логики в твоей голове.
Я бы промолчал, если бы не эти твои нелепые оправдания.
Тебя НИКТО не попрекает незнанием сессий.

Тебя попрекают нуемением читать.
И все. Ну, еще попыткой свалить это неумение на админов.
но два раза наступать на те же грабли - это уже слишком.
Выяснить, что ответ в факе есть, милу улыбнуться и тут же задавать вопрос который там тоже есть. На клоунаду смахивает.
А оракл тут не при чем.
 

Ashotovich

Новичок
Во многом ты прав и в последнем посте. Но уж очень настроение у тебя сегодня поганое, видать. Понимаю и замолкаю.
 
Сверху