![]() |
Показаны 12 сообщений на этой странице |
Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- Что здесь неправильно...? (http://netadmin.ws/forum/showthread.php?threadid=2322)
Что здесь неправильно...?
if (isset($HTTP_COOKIE_VARS[language]) AND (!isset($HTTP_POST_VARS['language']) OR !isset($HTTP_GET_VARS['language'])))
при вызове script.php?language=english это условие выполняется, хотя по логике не должно, если меняю на
if (isset($HTTP_COOKIE_VARS[language]) AND !isset($HTTP_GET_VARS['language']))
то все нормально.
__________________
Всегда есть решение.
Дело в том что запрос может быть сделан одним из методов GET или POST... т.е. они взаимоисключают друг друга.
Когда ты вызываешь скрипт с установленым $_GET['languige'] то в $_POST['languige'] оно будет empty или !isset , т.е. условие выполняется =) ...и наоборот при POST запросе - $_GET['languige'] будет пустым
Вместо OR попробуй написать XOR
may be help...
P.S.
..а зачем такие длинные названия массивов?
есть же просто $_GET $_POST $_COOKIE $_REQUIEST
__________________
FAQ OFF
Ð_то понятно что таже переменная не не может быть переданы и гетом и постом, но тут трабла в другом: можно рассшивровать так:
если нет куков и ланг из пост или гет пусты то выполнить - так? не понятно почему не работает, XOR тоже не помог.
quote:
P.S.
..а зачем такие длинные названия массивов?
есть же просто $_GET $_POST $_COOKIE $_REQUIEST
if (!isset($HTTP_GET_VARS['language'])) {
if (isset($HTTP_COOKIE_VARS[language]) AND !isset($HTTP_POST_VARS['language'])) {
__________________
Всегда есть решение.
тогда выйдет подлиннее...
// функция возвращет TRUE если указанный параметр
// присутсвует только в куках и отсутсвует в массиве запроса
function is_only_cookie($param)
{
$yes = 0;
if (!empty($_COOKIE[$param]))
{
if(empty($_GET[$param])) $yes = 1;
if(empty($_POST[$param])) $yes = 1;
}
return $yes;
}
// потом...
if (is_only_cookie($param)) // что то сделать
__________________
FAQ OFF
Спасибо но уж нет, мой вариант канает. Тем более мне это один раз использовать надо.
__________________
Всегда есть решение.
еще вариант...
// обрати внимание
$HTTP_COOKIE_VARS[language];
// или...?
$HTTP_COOKIE_VARS['language'];
// есть разница?
error_reporting(E_ALL);
__________________
FAQ OFF
у меня в пхп.ини стоит E_ALL.
__________________
Всегда есть решение.
значт не из за того что я думал...
P.S.
нотисы по поводу кавычек связаны еще с *magic_quotes*
но я их все всегда отключаю
.. мой PHP орет обычно если такое встречает
P.S.P.S.
иногда программирование превращается в извращение =)
__________________
FAQ OFF
да нет все нормально, я просто забыл что на днях убрал енотисы, поэтому и не выводило.
__________________
Всегда есть решение.
дак в чем было дело то? в кавычках или в чем?
P.S.
а мы старались... старались.. 
__________________
FAQ OFF
polo, Ошибка в самой логике (прочти внимательно свой первый код, сразу ясно станет).
В твоем случае, нужно везде AND ставить:
if (
isset($HTTP_COOKIE_VARS[language]) AND
!isset($HTTP_POST_VARS['language']) AND
!isset($HTTP_GET_VARS['language'])
)
просто смешно стало - как все было просто =)
10 сообщений ни очем
P.S.
где ж ты раньше был? =)
__________________
FAQ OFF
| Формат времени GMT. Текущее время 03:59. | Показаны 12 сообщений на этой странице |
Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.