|
|
|
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
|
|||
|---|---|---|---|
|
#18+
Проблема такая: есть функция 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 что то не так. Просто я раньше уже использовал такие проверки (в других проектах) все нормально работало. Может кто знает в чем тут дело? Заранее спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2005, 18:45 |
|
||
|
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
|
|||
|---|---|---|---|
|
#18+
Читать 1. http://www.phpfaq.ru/sessions 2. http://www.phpfaq.ru/debug ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2005, 18:51 |
|
||
|
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
|
|||
|---|---|---|---|
|
#18+
P.S. Изюм у Вас неправильный... ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2005, 18:52 |
|
||
|
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2005, 14:04 |
|
||
|
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
|
|||
|---|---|---|---|
|
#18+
Anjey aka PMпроблема конечно не в этом но проверку наявности ключа в массиве делаешь неверно тынц С чего вы взяли, что isset для этих целей не годится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2005, 14:50 |
|
||
|
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
|
|||
|---|---|---|---|
|
#18+
$_SESSION['somekey'] = undef; с того. Ключ может присутствовать но быть undef или как перлист скажу: надо ощущать разницу между defined и exists в применении к хешу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2005, 15:10 |
|
||
|
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
|
|||
|---|---|---|---|
|
#18+
Anjey aka PM$_SESSION['somekey'] = undef; имелось ввиду NULL, сори забыл уже пхп-шку частично :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2005, 15:12 |
|
||
|
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
|
|||
|---|---|---|---|
|
#18+
Ну и что из того, что будет существовать элемент массива с указанным именем? В чем глубокий смысл? ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2005, 15:25 |
|
||
|
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
|
|||
|---|---|---|---|
|
#18+
в том что если он существует знач сессия активна просто он NULL... а собсно NULL от пустой строки отличать уже не надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2005, 15:32 |
|
||
|
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
|
|||
|---|---|---|---|
|
#18+
>в том что если он существует знач сессия активна просто он NULL... Оригинальный признак активности сессии. :-) ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2005, 16:18 |
|
||
|
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
|
|||
|---|---|---|---|
|
#18+
Anjey aka PMпроблема конечно не в этом но проверку наявности ключа в массиве делаешь неверно тынц помоему я выразился недвусмысленно: неверная проверка наявности ключа в массиве, с чем уважаемый 4m@t!c никак согласиться не может ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2005, 17:05 |
|
||
|
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
|
|||
|---|---|---|---|
|
#18+
Мы знаем, что $_SESSION["status"] имеет вполне определенное значение. Хотя убейте, но я не могу понять, что даст мне поиск значения элемента массива, которого нет в помине? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ---------------------------------------- Артисты не приехали, приехали цыгане ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2005, 17:53 |
|
||
|
(PHP) Сессии, не срабатывает элементарная проверка в скрипте
|
|||
|---|---|---|---|
|
#18+
Anjey aka PMа собсно NULL от пустой строки отличать уже не надо?Чтобы там NULL оказался - это ещё постараться надо. Хотя в общем идея понятна и иллюстрируется кодом Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.12.2005, 18:09 |
|
||
|
|

start [/forum/topic.php?fid=23&msg=33450302&tid=1477050]: |
0ms |
get settings: |
8ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
183ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
| others: | 277ms |
| total: | 563ms |

| 0 / 0 |
