Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Пернедача параметров из формы

7.3K
28 июля 2005 года
tot
25 / / 24.03.2005
Apache 1.3 + PHP 4.4.0
Вот код
form.html

    <html><body>
    <form action=hello.php>
    Name: <input type=text name="name" value="unknow">

    Age: <input type=text name="age" value="undef">

    <input type=submit value="Submit">
    </form>
    </body></html>

А вот и сам сценарий hello.php

    <html><body>
    <? echo "Привет, $name!
    Я знаю, Вам $age лет!" ?>
    </html></body>

При выполнении пишет что неизвестные переменные age и name
В чем ошибка
А может быть нужно включить параметр при компиляции track_vars
7.3K
28 июля 2005 года
tot
25 / / 24.03.2005
Все разобрался Это просто я такой придурок. В конфиге php.ini register_globals надо было включить(on)
365
28 июля 2005 года
MasterSID
230 / / 23.02.2003
лучше не юзай этот метод http://forum.codenet.ru/showthread.php?s=&threadid=24572
7.3K
28 июля 2005 года
tot
25 / / 24.03.2005
Цитата:
Originally posted by MasterSID
лучше не юзай этот метод http://forum.codenet.ru/showthread.php?s=&threadid=24572


Так что предлагаеш самому разбирать строку

8
28 июля 2005 года
mfender
3.5K / / 15.06.2005
Цитата:
Originally posted by tot
Так что предлагаеш самому разбирать строку


Не глупи. У тебя в форме не указан метод. У иебя на серванте может стоять дефолтом что-ни-попадя. И как ты будешь потом(!) из этой ситуации выгребать?
Всегда мысли масштабно. Даже, если пишешь на PHP под MySQL всегда предполагай, что эту программу нужно будет перенести на другой хостинг с другой DB, например, FB...
Так вот, к чему это я. Прикинь, что будет, если у хОстера register_globals is off? А у тебя написано 6000 строк кода под твою собственную конф, с register_globals on?
Каково?
А?
Пиши лучше сразу, и без порчи для своего же мозга.

15
28 июля 2005 года
shaelf
2.7K / / 04.05.2005
Цитата:
Originally posted by mfender
Не глупи. У тебя в форме не указан метод. У иебя на серванте может стоять дефолтом что-ни-попадя. И как ты будешь потом(!) из этой ситуации выгребать?
Всегда мысли масштабно. Даже, если пишешь на PHP под MySQL всегда предполагай, что эту программу нужно будет перенести на другой хостинг с другой DB, например, FB...
Так вот, к чему это я. Прикинь, что будет, если у хОстера register_globals is off? А у тебя написано 6000 строк кода под твою собственную конф, с register_globals on?
Каково?
А?
Пиши лучше сразу, и без порчи для своего же мозга.


Полность согласен.

365
29 июля 2005 года
MasterSID
230 / / 23.02.2003
Цитата:
Originally posted by tot
Так что предлагаеш самому разбирать строку


Нет, я предлагаю использовать массивы $_GET и $_POST, в которые помещаются все переменные, пришедшие этими методами. Это, как уже сказал Mfender, наиболее универсальный метод. Т.е. твой скрипт будет работать с входящими данными всегда!!! Не зависимо от настроек сервера, т.к. эти 2 массива создаются в любом случае. А вот ввод перемной в сам скрипт - мало того, что не универсальный способ, так он еще и небезопасный. В принципе почти на любом хостинге ты можешь эти register_globals включить сам, но только учти, что если ты будешь использовать какую-то переменную и по ходу скрипта у тебя будет такое условие:

if($abc)echo $abc;

А сама эта переменная $abc должна быть определена нигде, кроме как в скрипте, то любой чел, введя ее в адресной строек браузера сможет выполнить весь блок кода, находящийся внутри if($abc){/* блок кода */}

На первый взгляд пример, конечно, безобидный, а теперь представь, например, что ты используешь механизм сессий для того, чтобы пропустить какого-то пользователя по паролю. Создаешь в сессии переменную $logged и если она == 1, то юзер считается залогиненым. Предположим, что ты создал условие:

if($logged==1){/* пускаем на сайт */}

Взломщику будет достаточно обратиться к твоему сайту таким образом: http://www.your-site.ru/?logged=1 и он будет считаться залогиненым. Точно также он сможет поступить с любой переменной в сессии, которая, например, может содержать статус пользователя. Представь, если хакер выставит себе статус админа? Здорово будет? :)

Наиболее рациональный выход из подобного рода ситуаций это использование трех массивов:
$_GET //для обработки входящих данныйх из адресной строки
$_POST //для обработки входящих данныйх в заголовках запроса
$_SESSION // для всех переменных сессий
И во всем скрипте обращайся к этим данным только через эти массивы. Т.е.:
if($_SESSION['logged']==1){/* пускаем на сайт */}

Это только один пример. В принципе можно не хило проколоться. Кстати, если у тебя не выставленны уровни вывода ошибок, то злоумышленник может таким же способом попытаться определить местонахождение некоторых отдельных скриптов и использовать их в тех целях, которые ты даже не планировал.

7.3K
29 июля 2005 года
tot
25 / / 24.03.2005
Всем спасибо. Разобрался. Ясно что register_globals on это ни есть хорошо. Будем работать с переменными $_GET //для обработки входящих данныйх из адресной строки
$_POST //для обработки входящих данныйх в заголовках запроса
$_SESSION // для всех переменных сессий
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог