URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 5328
[ Назад ]

Исходное сообщение
"Не распознается входящая переменая"

Отправлено Дмитрий , 24-Окт-07 12:11 
Какойто бред происходит. Кто что скажет?
из html  передается:
...
<form action="test.php" method="GET">
<input type="text" name="www">
...
В test.php :
<?php
print ("$www bla-bla-bla\n");
...
...
?>

В браузере: http://xx.xx.xx.xx/test.php?www=test&submit=Submit%21

bla-bla-bla

Куда пропала $www ???

И еще, пхп не понимает почемуто if(isset($xxx)):, else:, endif;
Просто тупо не видет %(


Содержание

Сообщения в этом обсуждении
"Не распознается входящая переменая"
Отправлено XAnder , 24-Окт-07 14:44 
>Куда пропала $www ???

Как насчёт register_globals? http://www.php.net/manual/ru/security.globals.php

>И еще, пхп не понимает почемуто if(isset($xxx)):, else:, endif;
>Просто тупо не видет %(

Что значит не видит? Пример, пожалуйста. Да, и версию ПХП неплохо бы знать.


"Не распознается входящая переменая"
Отправлено Дмитрий , 24-Окт-07 15:18 
>Как насчёт register_globals? http://www.php.net/manual/ru/security.globals.php

Спасибо за ссылку, не знал. Стояла, ясное дело, в Off  

>Что значит не видит? Пример, пожалуйста. Да, и версию ПХП неплохо бы
>знать.

php 4.4.4 Вот примерчик:

<html>
...
<?
if(isset($submit)):
   print ("Ok");
else:
?>
...
<form actin=this.php...>
<input type=submit...>
...
<?
endif;
?>
...
</html>


"Не распознается входящая переменая"
Отправлено XAnder , 24-Окт-07 16:17 
>Спасибо за ссылку, не знал. Стояла, ясное дело, в Off

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

>php 4.4.4 Вот примерчик:
>...

Ну и? Как этот пример "тупо не видит" конструкции языка? Неужели выполняются операторы и после if, и после else? Не верю.

Наверое, дело в тех же register_globals. Ведь переменная $submit - это, вероятно, тот самый замечательный submit=Submit%21, или я ошибаюсь?


"Не распознается входящая переменая"
Отправлено Дмитрий , 24-Окт-07 16:22 
>Ну и? Как этот пример "тупо не видит" конструкции языка? Неужели выполняются
>операторы и после if, и после else? Не верю.

нет, не выполнялся код после if

>Наверое, дело в тех же register_globals. Ведь переменная $submit - это, вероятно,
>тот самый замечательный submit=Submit%21, или я ошибаюсь?

Да, Вы совершенно правы, дело было в register_globals, сейчас все работает. Сервер локальный, поэтому включение опции ничем не грозит.
Спасибо.


"Не распознается входящая переменая"
Отправлено tux2002 , 24-Окт-07 17:06 
>[оверквотинг удален]
>>операторы и после if, и после else? Не верю.
>
>нет, не выполнялся код после if
>
>>Наверое, дело в тех же register_globals. Ведь переменная $submit - это, вероятно,
>>тот самый замечательный submit=Submit%21, или я ошибаюсь?
>
> Да, Вы совершенно правы, дело было в register_globals, сейчас все работает.
>Сервер локальный, поэтому включение опции ничем не грозит.
>Спасибо.

Давно я PHP не занимался, но по памяти register_globals в OFF это уж точно. А к гету обращаются $HTTP_GET_VARS['www'];


"Не распознается входящая переменая"
Отправлено XAnder , 25-Окт-07 08:57 
>Давно я PHP не занимался, но по памяти register_globals в OFF это
>уж точно. А к гету обращаются $HTTP_GET_VARS['www'];

Да, видно, что давно ;) Теперь обычно обращаются $_GET['www'] или $_REQUEST['www'].


"Не распознается входящая переменая"
Отправлено tux2002 , 25-Окт-07 12:05 
>>Давно я PHP не занимался, но по памяти register_globals в OFF это
>>уж точно. А к гету обращаются $HTTP_GET_VARS['www'];
>
>Да, видно, что давно ;) Теперь обычно обращаются $_GET['www'] или $_REQUEST['www'].

Ну и ладно. На нашем предприятии всё равно Oracle и странички мы клепаем в HTMLDB. Изысков конечно нет, но то что я делаю за 15 минут, в PHP я просто упрусь делать.


"Не распознается входящая переменая"
Отправлено angra , 25-Окт-07 09:22 
Что можно сказать, поздравляю с присоединением к толпе пыхобыдлокодеров. Если захотите когда либо вырасти из этого в вебдевелоперы, то читайте доку к языку, изучите основы web-безопасности и не используйте порочных практик.



"Не распознается входящая переменая"
Отправлено Mighty , 27-Дек-07 15:57 
Может я , конечно. что-то путаю
но если не ошибаюсь, то для ввода переменных лучше делать метод POST
насколько мне известно, строка GET-метода ограничена длиной 256 символов, в то время как у POST размер неограничен...ну почти не ограничен..
ещё может быть проблема...вообщем если несколько одноимённых форм...

"Не распознается входящая переменая"
Отправлено dev , 27-Дек-07 23:31 
>Может я , конечно. что-то путаю
>но если не ошибаюсь, то для ввода переменных лучше делать метод POST

нет

>насколько мне известно, строка GET-метода ограничена длиной 256 символов,

нет

>ещё может быть проблема...вообщем если несколько одноимённых форм...

нет


"Не распознается входящая переменая"
Отправлено Fisher , 29-Дек-07 13:50 
>[оверквотинг удален]
>
>нет
>
>>насколько мне известно, строка GET-метода ограничена длиной 256 символов,
>
>нет
>
>>ещё может быть проблема...вообщем если несколько одноимённых форм...
>
>нет

1)А если передовать имя пользователя и пароль, так тоже будите использовать GET?
2) И еще может лучше так писать:

if(isset($submit) && strlen($submit)>0)
{ //
}


"Не распознается входящая переменая"
Отправлено dev , 30-Дек-07 00:50 
>1)А если передовать имя пользователя и пароль, так тоже будите использовать GET?

Утверждение "для ввода переменных лучше делать метод POST" - неверно. Какое слово непонятно?

>2) И еще может лучше так писать:
>
>if(isset($submit) && strlen($submit)>0)
>{ //
>}

Зачем?


"Не распознается входящая переменая"
Отправлено Fisher , 30-Дек-07 14:14 

>>if(isset($submit) && strlen($submit)>0)
>>{ //
>>}
>
>Зачем?

"Не распознается входящая переменая"
Отправлено Fisher , 30-Дек-07 14:29 
>>if(isset($submit) && strlen($submit)>0)
>>{ //
>>}
>
>Зачем?

У меня была, такая проблема, при передачи значения из формы,т.е.

$ftel =strip_tags($HTTP_POST_VARS['tel']); //это передаю телефон
if (isset($ftel) // это проверяю есть ли он
{
сюда попадаю если даже телефон не установлен
}

а так

$ftel =strip_tags($HTTP_POST_VARS['tel']); //это передаю телефон
if (isset($ftel && strlen($submit) // это проверяю есть ли он
{
сюда попадаю если телефон установлен
}

Извините за неточность.

P.S. можно через _GET
     register_globals=off

Отрывок из книги:Профессиональное PHP программирование Второе издание
Л.Аргерих, В.Чой..

Глава: Небезопасность register_globals
Одной из самых удобных и опасных характеристик РНР является возмож-
ность пользоваться переменными, которые не были явно определены. Это
904 Глава 23. Система безопасности
очень популярная функция РНР, но в сочетании с установкой register_globals
может создать проблему безопасности вашего приложения.



"Не распознается входящая переменая"
Отправлено Fisher , 30-Дек-07 15:15 
register_globals
Это, вероятно, самая опасная из всех настроек РНР. Если она имеет значе-
ние on (установка по умолчанию вплоть до РНР 4.1), а не off (значение по
умолчанию начиная с РНР 4.2), то переменные EGPCS регистрируются как
глобальные. С этим связано несколько угроз.
Прежде всего, это означает, что пользователю не надо проверять, откуда по-
ступила переменная (от POST, GET или cookie), поэтому значения перемен-
ных могут быть поддельными. Одно это обстоятельство вызывает большин-
ство проблем со сценариями РНР. Если вы установили значение этой пере-
менной равным off (рекомендуется), то включите tгасk_vars в on....