Эта тема на forum.dklab.ru


Александр Бухаров: Опять эти сессии!
Вроде и в поиске посмотрел, но ответа так и не нашел... а вопрос такой:
если просто запускаю такой код:
<?php
session_name("Sess1");
session_start();
session_register("a");
$a=@$a+1;
echo("Счетчик $a");
?>
все работает отлично, но если запускаю такую штуку:
if ($log=="bukh" && $pass=="1111") {
session_name("$log");
session_start();
session_register("$g");
$g=$log;
?>
<center>
<font color=black>Здраствуйте!</font><br>
<font color=red><?php echo("$log") ?></font><br>
</center>
<?php
}
(правда этот код вызывается как функция в тело странички), то вначале вроде все в шоколаде, пишет здрасте... а нажимаю обновить(или перехожу сюда же по ссылке на эту страницу с неё же), то он не хочет определять переменную ж....
Почему так?????
Что я не так написал????
Евгений Галашин:
www.php.net/features.sessions
Александр Бухаров:
а на русском какие-нибудь советы есть? а то к своему огромному стыду не в ладах с английским...
Алекс Светкин:
Возможно, поможет: http://detail.phpclub.ru/article/sessions. А вообще, поищите мануал на русском, были же переводы. Правда, на php.net про сессии как раз не переведено :)
Дмитрий Котеров: session_register
session_register
Александр Бухаров:
Дмитрий, а вы прочитали то, что я написал?
У меня в одном варианте ВСЕ РАБОТАЕТ, а в другом нет...
Я не могу понять почему....
А поиск я смотрел..


Может это из-за того, что я сессию в середине кода открываю??? Хотя может ли это причиной являться? я даже не знаю, включается ли сессия во втором коде.... (((
Dmitri R. S.:
сессию в середине кода
Близко...
Сессии должны обрабатываться _до_ какого-либо вывода. Иначе - см. вывод при error_reporting(E_ALL);
Юрий Насретдинов:
Александр Бухаров
Я так понимаю, у Вас Денвер не стоит, да? Иначе бы он выдавал кучу нотисов (ну по крайней мере один). Дело в том, что Вы не очень хорошо понимаете, что делает строчка session_register("$g"); . А во-вторых, этот синтаксис устарел и нужно использовать массив $_SESSION, а не это издевательство с session_register
Maus: Тот самый вариант без издевательств, о которых сказал Юрий Насретдинов
он не хочет определять переменную ж
Где не хочет определять?
Вот это
<?php
/*
session_name("Sess1");
session_start();
$_SESSION['a'] = isset($_SESSION['a']) ? ++$_SESSION['a'] : 1;
echo("Счетчик {$_SESSION['a']}");
*/
function bar($log, $pass)
{
if ($log=="bukh" && $pass=="1111") {
session_name("$log"); // а это - зря. Утащат у Вас сессию ,а Вы и не заметите
session_start();
echo isset($_SESSION['g']) ? "<br>g, радость моя! ".$_SESSION['g'] : "<br>нету g - не сезон";
$_SESSION['g'] = $log;
?>
<center>
<font color=black>Здраствуйте!</font><br>
<font color=red><?php echo $log ?></font><br>
</center>
<?php
} else echo "<br>как-то что-то не того";
}
bar("bukh", "1111");

echo "<br>Guu! ".rand();
?>
у Вас работает? Если да - жизнь прекрасна...
Александр Бухаров:
Maus
СПАСИБО!!!!

Можно еще маленькую просьбу?
объясните пожалуйста, что значит вот эта строчка:
echo isset($_SESSION['g']) ? "<br>g, радость моя! ".$_SESSION['g'] : "<br>нету g - не сезон";
если можно по-подробнее...
и еще, почему нельзя так определять переменную: session_register("$g"); ?????

и еще, что это: echo "<br>Guu! ".rand(); ???
я это не вставлял в код....
Алекс Светкин:
объясните пожалуйста, что значит вот эта строчка:
echo isset($_SESSION['g']) ? "<br>g, радость моя! ".$_SESSION['g'] : "<br>нету g - не сезон";
Тернарный оператор.
<условие> ? <значение-истина> : <значение-ложь>
Выполняет условие, в случае истины возвращает "значение-истина", иначе "значение-ложь".

и еще, почему нельзя так определять переменную: session_register("$g"); ?????
1. Потому что устарело (возможно, не будет поддерживаться в следующих версиях), да и $_SESSION удобнее имхо.
2. "$g" - это чудовищно. Зачем здесь используются двойные кавычки, когда не нужны никакие?

и еще, что это: echo "<br>Guu! ".rand(); ???
http://ru.php.net/manual/ru/function.rand.php
Maus:
Алекс Светкин
Спасибо.

и еще, что это:
Это средство от мнительности. При нажатии Refresh как-то легче на душе, когда что-то меняется на странице...
Юрий Насретдинов:
1. Потому что устарело (возможно, не будет поддерживаться в следующих версиях), да и $_SESSION удобнее имхо.
Ответ, конечно, правильный, вот только имел ввиду я совсем не это. session_register("$g"); создает переменную с именем $g, то есть обращаться к ней нужно как $$g, если кто-то не понял... Скорее всего это просто опечатка, или логическая ошибка, имелось ввиду session_register('g'); . Ну а то, что вообще говоря нужно массив $_SESSION использовать - это на 100% правда
Александр Бухаров:
Я тут поковырялся и понял, что я ОЧ. крупно протупил....

Всем огромное спасибо за помощь, у меня теперь все работает! ))))) ОГРОМНЫЙ СЕНКС!!!!
Евгений Галашин:
Тема закрыта.

Эта тема на forum.dklab.ru