Форум сетевых администраторов
Показаны 12 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- Что здесь неправильно...? (http://netadmin.ws/forum/showthread.php?threadid=2322)


Помещено polo 27-07-2002 в 13:38:

Что здесь неправильно...?

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']))
то все нормально.

__________________
Всегда есть решение.


Помещено SCHIZO 27-07-2002 в 14:03:

Дело в том что запрос может быть сделан одним из методов GET или POST... т.е. они взаимоисключают друг друга.
Когда ты вызываешь скрипт с установленым $_GET['languige'] то в $_POST['languige'] оно будет empty или !isset , т.е. условие выполняется =) ...и наоборот при POST запросе - $_GET['languige'] будет пустым

Вместо OR попробуй написать XOR

may be help...

P.S.
..а зачем такие длинные названия массивов?
есть же просто $_GET $_POST $_COOKIE $_REQUIEST

__________________
FAQ OFF


Помещено polo 27-07-2002 в 14:09:

Ð_то понятно что таже переменная не не может быть переданы и гетом и постом, но тут трабла в другом: можно рассшивровать так:
если нет куков и ланг из пост или гет пусты то выполнить - так? не понятно почему не работает, XOR тоже не помог.

quote:
P.S.
..а зачем такие длинные названия массивов?
есть же просто $_GET $_POST $_COOKIE $_REQUIEST

ну это по привычке

polo добавил 27-07-2002 в 14:13:44:
тоесть я хочу выполнить это условие только в том случае если скрипту не передали никаких параметров через POST либо через GET и установлены куки.

polo добавил 27-07-2002 в 14:35:30:
да уж пришлось извратится полностью, написал так

PHP:

if (!isset($HTTP_GET_VARS['language'])) {
   if (isset(
$HTTP_COOKIE_VARS[language]) AND !isset($HTTP_POST_VARS['language'])) {


все работает, но для меня всеравно остается загадкой почему не работает первый вариант, глюк пхп?

__________________
Всегда есть решение.


Помещено SCHIZO 27-07-2002 в 15:06:

тогда выйдет подлиннее...

PHP:


// функция возвращет 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


Помещено polo 27-07-2002 в 15:19:

Спасибо но уж нет, мой вариант канает. Тем более мне это один раз использовать надо.

__________________
Всегда есть решение.


Помещено SCHIZO 27-07-2002 в 15:20:

еще вариант...

PHP:


// обрати внимание
$HTTP_COOKIE_VARS[language];
// или...?
$HTTP_COOKIE_VARS['language'];
// есть разница?


P.S.
в начале любого тестового скрипта рекомендуется сделать:

PHP:

error_reporting
(E_ALL);


а у тебя по всей видимости нотисы не показывает...

__________________
FAQ OFF


Помещено polo 27-07-2002 в 15:22:

у меня в пхп.ини стоит E_ALL.

__________________
Всегда есть решение.


Помещено SCHIZO 27-07-2002 в 15:28:

значт не из за того что я думал...
P.S.
нотисы по поводу кавычек связаны еще с *magic_quotes*
но я их все всегда отключаю

.. мой PHP орет обычно если такое встречает

P.S.P.S.
иногда программирование превращается в извращение =)

__________________
FAQ OFF


Помещено polo 27-07-2002 в 16:31:

да нет все нормально, я просто забыл что на днях убрал енотисы, поэтому и не выводило.

__________________
Всегда есть решение.


Помещено SCHIZO 27-07-2002 в 17:25:

дак в чем было дело то? в кавычках или в чем?

P.S.
а мы старались... старались..

__________________
FAQ OFF


Помещено MyCom 29-07-2002 в 21:02:

polo, Ошибка в самой логике (прочти внимательно свой первый код, сразу ясно станет).
В твоем случае, нужно везде AND ставить:



PHP:


if (
isset(
$HTTP_COOKIE_VARS[language]) AND 
!isset(
$HTTP_POST_VARS['language']) AND
!isset(
$HTTP_GET_VARS['language'])
)


Помещено SCHIZO 29-07-2002 в 23:16:

просто смешно стало - как все было просто =)
10 сообщений ни очем

P.S.
где ж ты раньше был? =)

__________________
FAQ OFF


Формат времени GMT. Текущее время 03:59.
Показаны 12 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.