Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > сессии..


Автор: polosatij 1.9.2005, 12:29
прет сем smile

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

не могу разобраться, почему не передаються переменные..

Код


#file 1:
<?
// стартуем сессию:
session_start();

//получаем имя сессии
$session_name = session_name();

//получаем ID сессии:
$session_id = session_id();

//инициализируем переменные:
$x = "hi :)";
session_register("x");

//пересылаем юзера на адрес:
$url = "./adminbereich.php";
$header_string = "Location: " . $url . "?" . $session_name . "=" . $session_id;
header($header_string);
?>




Код

<?
#file 2: adminbereich.php

//стартуем сессию, или находим уже имеющуюся:
session_start();

var_dump($_SESSION); //возвращает мне пустой array

echo $_SESSION('x'); //ничего мне не возвращает
?>


ошибок никаких не бросаеться, но и не возвращаеться мне тоже ничего smile
smile

Автор: Mal Hack 1.9.2005, 12:35
С каких это пор можно индекс указывать через круглые скобки?
И еще. Инициализировть переменую сессии надо не через session_register, а $_SESSION['x'] = "value";

Автор: polosatij 1.9.2005, 13:47
Цитата(Mal @ 1.9.2005, 12:35)
$_SESSION['x'] = "value";


так я пробовал тот же результат..



Цитата(Mal @ 1.9.2005, 12:35)
С каких это пор можно индекс указывать через круглые скобки?



даже не знаю.. может я здесь по запарке поставил круглые (т.к. писал по памяти..)..
надо проверить..

Автор: o.s.a. 1.9.2005, 14:52
Цитата
var_dump($_SESSION); //возвращает мне пустой array

А мне все нормально вернул.
Цитата
echo $_SESSION('x'); //ничего мне не возвращает

Как сказал Mal Hack здесь должны быть квадратные скобки ['x']

Автор: polosatij 2.9.2005, 11:36

переустановил вчера apache и всё заработало нормально..
apache раньше был в составе Maguma.. может быть они что-то там нахимичили.. сколько я промучился.. млин..

всем пасиба smile

Автор: Timkin 2.9.2005, 17:02
У меня был зе сейм щит, и я, воспользовавшись советом полосатого, переустановил Апач. Теперь он мне вообще запрещает стартовать сессию - выводит 2 ошибки:
Цитата
Warning: session_start(): Cannot send session cookie - headers already sent by (output started at z:\home\localhost\www\project\index.php:3) in z:\home\localhost\www\project\include\news.php on line 25
и
Цитата
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at z:\home\localhost\www\project\index.php:3) in z:\home\localhost\www\project\include\news.php on line 25

Скажите, что я делаю не так (может быть я делаю где-нибудь совершенно идиотскую ошибку, поскольку с сессиями работал только в JSP - а там всё устроено несколько иначе).
У меня есть страница index.php, отвечающая за статичное оформление и загружающая нужные php-файлы в зависимости от того, что написано в адресной строке.
Есть файл login.php, подгружающийся вышеупомянутой страницей, который по идее и должен устанавливать значения для переменных сессии:
Код

session_start();
$usr = "admin";
session_register("usr");
Когда всё это сделано, страница перенаправляет юзера на страницу новостей (она грузится, естественно, тоже через index.php). Там есть такой код:
Код

session_start();
if ($_SESSION['usr']=="admin") {
  //blabla...
}
Так вот, session_start() вызывает ошибки, эта самая "блабла" не происходит, а если посмотреть, что возвращает $_SESSION['usr'], то увидим пустое место.
Я, кстати, по совету кое-какой книжки пробовал использовать вместо session_register("usr") просто $_SESSION['usr']="admin") - тоже не помогает.
Кто-нибудь знает, в чём тут может быть дело?

Автор: Mal Hack 2.9.2005, 18:28
Не допускается любой вывод до session_start

Автор: Timkin 2.9.2005, 20:26
Цитата(Mal @ 2.9.2005, 18:28)
Не допускается любой вывод до session_start

Ну, например, ставлю я этот session_start в самый-самый верх самого-самого внешнего документа (index.php) - результат тот же.

Автор: Mal Hack 2.9.2005, 20:44
Пробел, перевод строки перед <? или <?php тоже выводом считается.

Автор: Timkin 2.9.2005, 20:49
Цитата(Mal @ 2.9.2005, 20:44)
Пробел, перевод строки перед <? или <?php тоже выводом считается.

Собственно, я ничего не менял, а зайдя проверить, обнаружил, что уже всё работает. smile
Наверное, это из-за того, что я поставил в php.ini session.auto_start = 1.
Всё равно, огромное спасибо!

Автор: Timkin 2.9.2005, 22:26
И всё-таки рано радоваться, поскольку это я на локалхосте могу делать с php.ini всё, что мне вздумается, а на каком-нибудь хостинге автоматический старт сессий может и не стоять (например, siteburg.com).
Так вот, даже если написать session_start в самом-самом начале файла (никаких пробелов и ничего подобного перед "<?" нету - проверено не раз) - всё равно жалуется, что хедеры уже отправлены и т.п.
Неужели это неразрешимая проблема?

Автор: Timkin 3.9.2005, 10:34
Всё, разобрался. Пардон, больше не побеспокою. smile
Дело было в том, что файл index.php был сохранён в кодировке UTF-8, а она пересылается в хедере по умолчанию раньше, чем в дело вступает любой код пользователя.
Зато теперь из-за различий в кодировке кирриллица на моей странице отображается криво, но это уже иная песня...

Автор: R.M. 5.9.2005, 09:53
Timkin

Не регайся на siteburg.com - русскоязычные сайты банят
Аналог для русскоязычных сайтов holm.ru

Автор: Timkin 5.9.2005, 10:32
Куксикус

Да, я читал правила siteburg'a, но у меня сайт вообще на 4-х языках, так что на holm'e его, по идее должны бы тоже забанить. У меня на странице английский язык по умолчанию установлен, может быть не заметят... smile
Ну в общем, видно будет - пока всё ОК. А на holm'e такой уродливый баннер, что я уж лучше найду себе вообще иной ресурс, чем там сайт размещу. smile

Автор: R.M. 5.9.2005, 13:09
Timkin

Это точно, ну это ещё не самое худшее, на какомто хосте мне вобще на страницу постоянно рекламу гей-сайта пихали. Не очень прикольно смотрится особенно на сайте на тему скейтбординга smile

Автор: Mal Hack 5.9.2005, 16:21
Куксикус
Timkin
Не флеймите.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)