powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Сессии, не срабатывает элементарная проверка в скрипте
13 сообщений из 13, страница 1 из 1
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
    #33450290
PHPпист
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Проблема такая:

есть функция

function ChangeColor()
{
if (!isset($_SESSION["status"]))
{
@session_start();
$index = mt_rand (1,2);
if ($index==1) {$_SESSION["color"] = "red";}
if ($index==2) {$_SESSION["color"] = "green";}
$_SESSION["status"] = "active";
}
}

которая вызывается в самом начале каждой страницы сайта.

эта функция регистрирует переменную в сессии со случайным цветом.
В итоге этот цвет является допустим цветом фона какой нибудь таблицы.
Смысл скрипта в том чтобы каждый раз при загрузке сайта он был разных цветов (так сказать изюминка :)). Но цвет меняется каждый раз когда пользователь обновляет страницу, а по задумке цвет не должен меняться пока активна сессия (тоесть пока посетитель не ушел с сайта), а выходит что он заходя на разные страницы сайта будет каждый раз видеть разные цвета.

Что бы этого не случилось я регистрирую переменную ($_SESSION["status"] = "active";) в сесси при первом запуске функции, а потом перед повторным запуском функции (допустим при обновлении страницы) проверяю ее существование (if (!isset($_SESSION["status"]))) , если она уже существует значит соответсвенно функция уже выполнялась и запускать ее снова не надо.

Вроде бы все довольно элементарно, но все равно не работает.
С такой проверкой функция вобще не работает :(

Я пробовал уже по другому

function ChangeColor()
{
if (isset($_SESSION["status"]))
{

}
else
{
@session_start();
$index = mt_rand (1,2);
if ($index==1) {$_SESSION["color"] = "red";}
if ($index==2) {$_SESSION["color"] = "green";}
$_SESSION["status"] = "active";
}
}

Так хотябы функция работает, но выполняется всегда несмотря на условия.
Я думаю как то не так работает функция isset - !isset. Может это в настройках PHP что то не так. Просто я раньше уже использовал такие проверки (в других проектах) все нормально работало.

Может кто знает в чем тут дело?
Заранее спасибо.
...
Рейтинг: 0 / 0
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
    #33450302
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читать
1. http://www.phpfaq.ru/sessions
2. http://www.phpfaq.ru/debug
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
    #33450305
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
P.S. Изюм у Вас неправильный...
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
    #33451997
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проблема конечно не в этом но проверку наявности ключа в массиве делаешь неверно

тынц
...
Рейтинг: 0 / 0
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
    #33452186
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Anjey aka PMпроблема конечно не в этом но проверку наявности ключа в массиве делаешь неверно

тынц С чего вы взяли, что isset для этих целей не годится?
...
Рейтинг: 0 / 0
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
    #33452292
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
$_SESSION['somekey'] = undef;

с того.

Ключ может присутствовать но быть undef

или как перлист скажу:

надо ощущать разницу между defined и exists в применении к хешу
...
Рейтинг: 0 / 0
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
    #33452298
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anjey aka PM$_SESSION['somekey'] = undef;

имелось ввиду NULL, сори забыл уже пхп-шку частично :)
...
Рейтинг: 0 / 0
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
    #33452371
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и что из того, что будет существовать элемент массива с указанным именем? В чем глубокий смысл?
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
    #33452410
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в том что если он существует знач сессия активна просто он NULL...

а собсно NULL от пустой строки отличать уже не надо?
...
Рейтинг: 0 / 0
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
    #33452571
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>в том что если он существует знач сессия активна просто он NULL...
Оригинальный признак активности сессии. :-)
----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
    #33452700
Anjey aka PM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anjey aka PMпроблема конечно не в этом но проверку наявности ключа в массиве делаешь неверно

тынц
помоему я выразился недвусмысленно: неверная проверка наявности ключа в массиве, с чем уважаемый 4m@t!c никак согласиться не может
...
Рейтинг: 0 / 0
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
    #33452829
Фотография 4m@t!c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мы знаем, что $_SESSION["status"] имеет вполне определенное значение. Хотя убейте, но я не могу понять, что даст мне поиск значения элемента массива, которого нет в помине?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
<?php
echo "<PRE>";
var_dump($_SESSION);
session_start();
echo "<BR> After start session<BR>";
var_dump($_SESSION);
echo "</PRE>";
if (!isset($_SESSION["status"]))
{
	$_SESSION["status"] = "active";
}
else
{
	$_SESSION["status"] = "active is yet";
}
echo '<BR> $_SESSION["status"]='.$_SESSION["status"];
?>
Ваш "тынц" вообще не в тему, потому что человек не знает, как работают сессии, а так же потому что никто не проверяет корректность переменной только ее существованием.

----------------------------------------
Артисты не приехали, приехали цыгане
...
Рейтинг: 0 / 0
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
    #33452879
*
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
*
Гость
Anjey aka PMа собсно NULL от пустой строки отличать уже не надо?Чтобы там NULL оказался - это ещё постараться надо. Хотя в общем идея понятна и иллюстрируется кодом
Код: plaintext
1.
2.
3.
4.
$arr = array('x'=> 1 ,'z'=>NULL);
foreach (range('x','z') as $v){
  echo "$v\n";
  var_dump(array_key_exists($v,$arr),isset($arr[$v]));
}
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / (PHP) Сессии, не срабатывает элементарная проверка в скрипте
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]