|
|
|
| Мучаюсь вот с таким
function show_th(){
$_SESSION['UOS']=1;
// ;$UOS=1;
if (isset ($_SESSION['UOS'])) && (($_SESSION['UOS']) == 1) {
echo "Установлено";
}
else{
echo"Не установлено";
}
//(isset ($_SESSION['UOS'])) &&
}
|
Если по одному условию проверять, то оно работает. А как проверить через И?
Пишет он "Parse error: syntax error, unexpected '&&' (T_BOOLEAN_AND) in..."
Может elseif поможет (только условие нужно изменить), но хотелось бы одной строкой сделать проверку.
---
В нете смотрел - не доходит :( мне
Кажись я догадываюсь в чем проблема... щас проверю...ВСЕ!!! довольный иду пить чай и спать! Нужно было ДДЯ if все_выражение заключить в скобки.
function show_th(){
$_SESSION['UOS']=1;
// $UOS=1;
if ((isset ($_SESSION['UOS'])) && (($_SESSION['UOS'])) == 1) {
echo "Установлено";
}
else{
echo"Не установлено";
}
//(isset ($_SESSION['UOS'])) &&
}
|
if ((isset ($_SESSION['UOS'])) && (($_SESSION['UOS'])) == 1) {
НО это не все: Я вспомнил что нужны скобки потому что когда-то давненько нечто подобное было. Вопрос что именно значит ошибка
"Parse error: syntax error, unexpected '&&' (T_BOOLEAN_AND) in..."?
Очевидно if ожидает булевское значение (ложь или истина) - поэтому и матерится? а при ем тут T_BOOLEAN_AND ?
Спрашиваю для того чтобы понять логику возникновение ошибки в первом ошибочном примере. | |
|
|
|
|
|
|
|
для: root_xxx
(21.11.2014 в 02:07)
| | >Я вспомнил что нужны скобки потому что когда-то давненько нечто подобное было.
Глупости, какие скобки, которых кучу лишних во тором случае прописали?
Вот причина ошибки:
if (isset ($_SESSION['UOS'])) && (($_SESSION['UOS']) == 1)) - нет закрывающей скобки, ибо вы лишних написали кучу, а нужной нет.
if (isset ($_SESSION['UOS'])) - а тут лишняя
А вообще так должно быть:
if (isset ($_SESSION['UOS']) && $_SESSION['UOS'] == 1)
А еще проще так:
if ($_SESSION['UOS'] == 1)
Ибо отсутствие установленной переменной вернет NULL.
И вообще зачем проверять, если в начале $_SESSION['UOS']=1?
$UOS и одновременно $_SESSION['UOS'] может вызвать проблемы. | |
|
|
|
|
|
|
|
для: confirm
(21.11.2014 в 03:08)
| | хм-м... интересненько...
---
Об опасности применения одинаковых имен суперглоб и локальных переменных я знаю - тут ниже есть тема.
>И вообще зачем проверять, если в начале $_SESSION['UOS']=1?
Это для отладки.
Проверяется установлена ли переменная И равна ли она 1, потому что она возможно будет иметь значение НЕ равно 1. Это уже неважные детали.
---
>...какие скобки, которых кучу лишних во тором случае прописали?
%:)) Но оно работает.
---
Следующий вопрос: session_destroy(); - не удаляет $_SESSION['UOS'] . Нужно использовать unset ($_SESSION['UOS']); И использовать unset для всех переменных в сессионном масиве ($_SESSION['G_VARS']) ? | |
|
|
|
|
|
|
|
для: root_xxx
(21.11.2014 в 12:03)
| | Это не опасность, ничего не развалится, просто получите сообщение, что если хотите так именовать, то измените настройки и т.д...
2 * 2 * 2 * 2 * 2 * .... - будет тоже работать, но прописывать таким образом даже для 2 в степени 16, вместо pow(2, 16), не имеет никакого смысла.
<?
$_SESSION['a'] = 1;
$_SESSION['b'] = 2;
$_SESSION = null;
echo $_SESSION['a'],$_SESSION['b'];
|
Пишите код не в тетрадке в клеточку, а в редакторе, который всегда автоматом добавит закрывающие скобки, кавычки и т.д. | |
|
|
|
|
|
|
|
для: confirm
(21.11.2014 в 14:32)
| | >Пишите код не в тетрадке в клеточку, а в редакторе, который всегда автоматом добавит закрывающие скобки, кавычки и т.д.
http://linux.org.ua/yabbfiles/Smilies/36.gif http://linux.org.ua/yabbfiles/Smilies/wacko2.gif http://linux.org.ua/yabbfiles/Smilies/angry2.gif
Дело в том что я и пишу в редакторе с автодополнением. Если спереди нужно что то дописать в скобках, то рядом появляется закрывающаяся скобка ... ( _)_ (isset ($_SESSION['UOS'])) - ото так и путаюсь в том что и так плохо знаю.
---
>Это не опасность, ничего не развалится
Я не о развале (потери) сессии и данных написал. (или я не так понял?) У меня ничего страшного не выдает.
Опасность в том что можно перепутать локальные и суперглоб переменные - можно не то записать или сделать не то шо нада. Но это зависит от уровня разраба.
---
>2 * 2 * 2 * 2 * 2 * .... - будет тоже работать, но :) ага.
---
>$_SESSION = null;
Внатуре убивает сессию. щас допроверю кои щто... | |
|
|
|
|
|
|
|
для: root_xxx
(21.11.2014 в 16:47)
| | К чему вы указываете ссылки на смайлы ресурса linux, вы думаете кто-то непременно пройдется по ссылкам чтобы увидеть их? Не надо мусорить, пишите только то, что касается сути, хлам загромождает пост и отвлекает.
Вы просто запутались к куче ненужных скобок. Это результат или не внимательности, или не понимания.
Кроме автодополнения, нормальный редактор еще и отмечает парный символ, тег ... достаточно установить курсом на одном из них. Это первое, чем можно проверить корректность написанного. Кроме этого, если нормальный редактор, то он уже в процессе написания кода, а не его исполнения выдаст ошибку. Ну и можно разбить строку на строки, где каждую конструкцию прописать отдельно как блок, для поиска причины, если слишком много условий:
Что касается о развале и у вас ничего не происходит, так вам никто и не говорит, что таковое будет, вам сказали, что могут быть проблемы, думаю, что у вас есть шанс столкнуться с этим.
$_SESSION = null; не убивает сессию, это очищает ее. | |
|
|
|
|
|
|
|
для: confirm
(21.11.2014 в 17:05)
| | ---
>$_SESSION = null;
Внатуре убивает сессию. щас допроверю кои щто...
ага, вот в чем вопрос: Сессионнй массив исчезает, но остаются другие переменные и куки.
Я не уверен, но по правилам хорошего тона (этикета :%)) программирования нужно все НЕНУЖНЫЕ куки и все переменный удалить (например после того как пользователь нажал "Выход" из форума, магазина либо другого сайта). Вот в этом случае нужно использовать только unset () ?
Впринципе уже понял что это не убивает, а очищает. Вот только не пойму я почему session_destroy(); не убивает сессию ???
Возможно у меня где-то вызывается session_start();?
---
Остальное понял (по поводу хлама). | |
|
|
|
|
|
|
|
для: root_xxx
(21.11.2014 в 17:14)
| | session_destroy() уничтожает все данные, связанные с текущей сессией, но не сбрасывает глобальные переменные связанные с сессией.
При выходе session_destroy удалит текущую сессию, а при входе будет генерироваться новая, так что воспользоваться данными прошлой сессии будет невозможно.
Установка массива $_SESSION в NULL - не убивает сессию, так что в натуре вы ошибаетесь. | |
|
|
|
|
|
|
|
для: root_xxx
(21.11.2014 в 02:07)
| | if ожидает выражение внутри скобок, за которым сразу следует оператор
У вас выражением внутри скобок оказалась первая половина условия, за которым последовала лексема && ( Логическое_И , в терминах лексического анализатора php зовется T_BOOLEAN_AND) с которой оператор начинаться ну никак не может.
Диагностика при этом: Ошибка синтаксического анализа: неожиданное появление лексемы && (логическое И) в контексте.... только по аглицки. | |
|
|
|
|
|
|
|
для: Trianon
(21.11.2014 в 04:34)
| | понятно.
И я уже выше написал, что по отдельности эти условия работают без ошибок. И я прибавил лишних скобок, чтобы заключить эти два условия в одно. Так оно стало правильным. Но все таки - да!, много там скобок. | |
|
|
|