сессия в функции

kompo

Guest
сессия в функции

Хотел спросить. Можно ли зарегистрировать сессию в функции? Есть у меня функция login, которой на вход подается понятно что.. И если удачно, то поехали..
PHP:
session_start();
session_register("valid_user");
Но почему-то ни чему не равно у меня это valid_user получается... Хотя, если я спрашиваю:
PHP:
session_is_registered("valid_user")
то мне говорят true.

Может нельзя в функциях? Или надо где-то как-то global писать? Поискал в книжках умных, но про функции нигде не говорят..
 

trent

Developer
PHP:
function test($test) {
 echo $test;
}
session_start();
if (lalala) {
 $_SESSION["test"] = 1;
}
test($_SESSION["test"]);
 

RomikChef

Guest
я не знаю, что тебе понятно, что передается в функцию логин, но сессии тут не при чем!

перед тем, как делать session_register("valid_user");
напиши echo $valid_user;

и разбирайся, почему она у тебя пустая.
 

kompo

Guest
Автор оригинала: RomikChef
я не знаю, что тебе понятно, что передается в функцию логин, но сессии тут не при чем!

перед тем, как делать session_register("valid_user");
напиши echo $valid_user;

и разбирайся, почему она у тебя пустая.
нет, к сожалению, не пустая. но все равно спасибо за участие.

правильно ли я понял, что неважно, где я зарегистрирую сессию (читай: в теле функции), она везде должна быть видна?
 

RomikChef

Guest
правильно.
только
во-первых, сессию зарегистрировать нигде нельзя.
сессия - это механизм.
зарегистировать можно переменную в сессии.
во-вторых, переменные в сессии регистрируют для доступа между скриптами. А не в том же самом скрипте.

Тебе надо почитпть в любом учебнике программирования про область видимости.
чтобы переменная в функции была видна вне ее, ее надо объявить глобальной, директивой global
 

trent

Developer
в дополнение: или возвращать ее из функции, что считаю правильней...
 

.des.

Поставил пиво кому надо ;-)
1. Совет не использовать эту функцию, а использовать массив $_SESSION
правильно ли я понял, что неважно, где я зарегистрирую сессию [понято как переменную сессии .des.](читай: в теле функции), она везде должна быть видна?
Нет. Не совсем верно. [m]session_register[/m] регистрирует глобальную переменную... а вообще вот тебе ман.
Caution

This registers a global variable. If you want to register a session variable from within a function, you need to make sure to make it global using the global keyword or the $GLOBALS[] array, or use the special session arrays as noted below.
http://www.php.net/manual/en/function.session-register.php
 
Сверху