Пернедача параметров из формы
Вот код
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
лучше не юзай этот метод http://forum.codenet.ru/showthread.php?s=&threadid=24572
Так что предлагаеш самому разбирать строку
Так что предлагаеш самому разбирать строку
Не глупи. У тебя в форме не указан метод. У иебя на серванте может стоять дефолтом что-ни-попадя. И как ты будешь потом(!) из этой ситуации выгребать?
Всегда мысли масштабно. Даже, если пишешь на PHP под MySQL всегда предполагай, что эту программу нужно будет перенести на другой хостинг с другой DB, например, FB...
Так вот, к чему это я. Прикинь, что будет, если у хОстера register_globals is off? А у тебя написано 6000 строк кода под твою собственную конф, с register_globals on?
Каково?
А?
Пиши лучше сразу, и без порчи для своего же мозга.
Не глупи. У тебя в форме не указан метод. У иебя на серванте может стоять дефолтом что-ни-попадя. И как ты будешь потом(!) из этой ситуации выгребать?
Всегда мысли масштабно. Даже, если пишешь на PHP под MySQL всегда предполагай, что эту программу нужно будет перенести на другой хостинг с другой DB, например, FB...
Так вот, к чему это я. Прикинь, что будет, если у хОстера register_globals is off? А у тебя написано 6000 строк кода под твою собственную конф, с register_globals on?
Каково?
А?
Пиши лучше сразу, и без порчи для своего же мозга.
Полность согласен.
Так что предлагаеш самому разбирать строку
Нет, я предлагаю использовать массивы $_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){/* пускаем на сайт */}
Это только один пример. В принципе можно не хило проколоться. Кстати, если у тебя не выставленны уровни вывода ошибок, то злоумышленник может таким же способом попытаться определить местонахождение некоторых отдельных скриптов и использовать их в тех целях, которые ты даже не планировал.
$_POST //для обработки входящих данныйх в заголовках запроса
$_SESSION // для всех переменных сессий