Forum Webscript.Ru

Программирование => PHP => Тема начата: sparx от 02 Августа 2003, 19:13:26

Название: sessions + functions
Отправлено: sparx от 02 Августа 2003, 19:13:26
здраствуй народ !
наткнулся на такую странную проблему:
я сделал файл с набором функций, одна из них должна проверять определена ли переменная Х, переменная эта принадлежит сессии и потому глобальна (?).
к сожалению функция всегда говорит что переменная не определенна.
вот как это выглядит :


если есть идеи /опыт .. буду рад :)
Название: sessions + functions
Отправлено: WildWizard от 02 Августа 2003, 19:44:36
А как ты определяешь, есть ли переменная?
Название: sessions + functions
Отправлено: sparx от 02 Августа 2003, 19:52:01
isset($X)
Название: sessions + functions
Отправлено: D1g174LM4n14c от 02 Августа 2003, 19:55:26

function functionX($var)
{
if (session_is_registered($var)) return true;
return false;
}
Название: sessions + functions
Отправлено: WildWizard от 02 Августа 2003, 20:01:30
Вот :)
Меня опередили, или

 return isset ($_SESSION["X"]);
Название: sessions + functions
Отправлено: sparx от 02 Августа 2003, 20:13:58
огромное спасибо D1g174LM4n14c твой метод работает
а метод WildWizard (тот же самый кстати что и я использовал) не работает :(
Название: sessions + functions
Отправлено: Ardzhan от 03 Августа 2003, 12:15:23
А попробуй так:


return !empty ($_SESSION["X"]);
Название: sessions + functions
Отправлено: Меняздесьдавнонет от 03 Августа 2003, 12:45:11
вам обоим двойка по чтению мануала.
все равботает, если функция не кривыми руками вызывается

но метод с глобальным массивом правильнее

арджан, вот только извращений не надо.
Не понял вопроса - сиди молчи.
Название: sessions + functions
Отправлено: Ardzhan от 03 Августа 2003, 12:59:43
Как скажешь, дорогой друг  RomikChef  :)
Название: sessions + functions
Отправлено: sparx от 05 Августа 2003, 14:16:59
цитирую из мануала ПХП :)
(к вопросу о массиве)

Caution
If you are using $_SESSION (or $HTTP_SESSION_VARS), do not use session_register(), session_is_registered() and session_unregister().
 
так что очень даже логично что не работало странно что только во внешней функции.
оба способа одинаково правильные
и не надо гнать на то как написана сама функция.
Название: sessions + functions
Отправлено: Меняздесьдавнонет от 05 Августа 2003, 14:51:04
типичный пример барана, который смотрит в книгу и видит фигу.

запомни, мальчик.
единственный, кто здесь гонит - это ты.
и все у тебя бы работало, если бы ты функцию правильно вызывал.
Название: sessions + functions
Отправлено: sparx от 05 Августа 2003, 15:59:21
ну с гениями спорить сложно ... если бы ты еще что-то дельное говорил кроме того насколько ты крут а все дураки ... совсем прекрасно бы было
Название: sessions + functions
Отправлено: Меняздесьдавнонет от 05 Августа 2003, 16:57:01
а я дельное говорю, когда меня вежливо спрашивают.
не "не надо гнать", а "извините, а где я ошибся по Вашему мнению".
а то, что ты дурак - это полбеды. вот то, что ты дурак с самомнением, ака ламер - это хуже.
"не надо гнать" - это ты мамаше своей говори, которая тебя таким воспитала. уродом.

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

тебе просто ума не хватает понять то дельное, которое я пишу.
перечитай мое сообщение. я ясно указал, где ошибка.
причем у двоих сразу.
ты полез в мануал с гордым видом достал оттуда то, что к теме вообще не относится, замечание совершенно из другой оперы, и давай собой гордиться - "какой я умный!".
и на человека наезжать, который тебя, дурака, уму-разуму учит.
тьфу.

уж его, казалось бы, проще:
ткнули носом - неправильно вызываешь функцию.
побежал рысью в ман, посмотрел, хлопнул себя по башке, исправился, прибежал, спасибо сказал.
или смотрел-смотрел, ни хрена не понял, прибежал, спросил - че я не понял?
Это если человек сознает, что он да - действительно, что-то не понял. если он понимает, что он новичок и не стесняется спросить.
А если он сам считает себя супер-крутым, любое замечание считает оскорблением, "как это так - мне посмели указать на ошибку! когда я сам лучше всех все понимаю". то это отброс просто.
Мало того, что это выглядит просто смешно - при микроскопическом уровне знаний, так еще и противно.
Название: sessions + functions
Отправлено: Меняздесьдавнонет от 05 Августа 2003, 17:12:32
Беда форумов по пхп, да и не по пхп тоже, в том, что в основном в них отвечает две категории людей:
- новички, которые сами очень мало понимают в заданном вопросе ,и чаще всего даже не могут его толком понять
- вот такие ламеры, как этот спаркс - то есть, новички, НО, которые считают, что им все тут обязаны и которые себя считают большими специалистами и болезненно реагируют на критику.

нормальные люди, которые хотя бы раз пользовались функцией, о которой берутся писать, и такие, которые знают, что такое ОТЛАДКА программы - пишут очень редко. у них и так много дел.
таких, как я - чтобы и знали до хера, и писали - единицы.
поэтому и получается, профессиональная болезнь. когда видишь митрофанушек в таких комерических количествах - тут никакие защитные барьеры не спасают.
Название: sessions + functions
Отправлено: Shamandeffer от 07 Августа 2003, 09:12:46
...
Название: sessions + functions
Отправлено: ThE0ReTiC от 07 Августа 2003, 15:05:27
[off]
ну е мае...
начинается...
[/off]
sparx
тебе, как цитатчику мануала должны были встретится эти строки:
Цитировать

If register_globals is disabled, only members of the global associative array $_SESSION can be registered as session variables. The restored session variables will only be available in the array $_SESSION.

Use of $_SESSION (or $HTTP_SESSION_VARS with PHP 4.0.6 or less) is recommended for improved security and code readablity. With $_SESSION, there is no need to use the session_register(), session_unregister(), session_is_registered() functions. Session variables are accessible like any other variables.


Теперь, надеюсь, понятно, почему RomikChef прав ?
Название: sessions + functions
Отправлено: Меняздесьдавнонет от 08 Августа 2003, 10:25:47
Блин, надо было мне не выпендриваться, а сразу открытым текстом писать :-)
извините, я был неправ.
Действительно, стереотип пробить очень трудно. Это очень распространенная ошибка.
Дело не в глобалсах и не в способе. А именно в синтаксисе.
Непривычном.
Я так думаю, что частично из-за дурного синтаксиса функций session_*, как раз и ввели этот массив.
потому, что:
параметром этих функций является не переменная, а СТРОКА, содержащая имя переменной.
т.е. не session_is_registered($var), а session_is_registered("var") !

Более того, я думаю, что все эти ограничения про разные способы обращения действуют в пределах ОДНОГО скрипта.
Т.е., если ты в одном скрипте написал $_SESSION[\'a\']=1;
то в другом у тебя вполне сработает session_is_registered("a") без каких бы то ни было ограничений. Ну, кроме накладываемых регистер глобалс, естественно.

И последнее. Самая первая проверка - isset() у спаркса, естественно, не работала, поскольку переменные, зарегистрированные в сессии, ничем не отличаются от обычных и их надо так же специально объявлять глобальными.
т.е.
global $X;
if (isset($X))
вернет себе спокойно труй.
Название: sessions + functions
Отправлено: MrGreeN от 08 Августа 2003, 11:15:25
RomikChef
Более того, я думаю, что все эти ограничения про разные способы обращения действуют в пределах ОДНОГО скрипта.
Это в смысле что нельзя одновременно в одном скрипте вытягивать их из $_SESSION и пользоваться ф-циями session_* ()  ?
 Я просто чего спросил, потому как работаю с session_*() ,а в отладке
print_r($_SESSION)...И в пределах одного скрипта...
Название: sessions + functions
Отправлено: Меняздесьдавнонет от 08 Августа 2003, 11:40:09
не рекомендуется.
почему - здесь не один раз цитату приводили.