ламерский вопрос по php

apxx

на досуге решил поизучать php. Ну и сразу же наткнулся на грабли. Взял статейку http://www.phpclub.ru/detail/article/phpintro
полностью копирую текст
request.html
  <HTML> 
<HEAD>
<TITLE>Запрос информации</TITLE>
<BODY>
<CENTER>
Хотите больше знать о наших товарах?
<P>
<TABLE WIDTH = 400><TR><TD align = right>
<FORM ACTION="email.php" METHOD="POST">
Ваше имя:<BR> <INPUT TYPE="text" NAME="name" SIZE="20" MAXLENGTH="30">
<P>
Ваш email:<BR> <INPUT TYPE="text" NAME="email" SIZE="20" MAXLENGTH="30">
<P>
Меня интересуют:
<SELECT NAME="preference">
<OPTION value = "Яблоки">Яблоки
<OPTION value = "Апельсины">Апельсины
</SELECT>
<P>
<INPUT TYPE="submit" VALUE="Отправить запрос!">
</FORM>
</TD></TR></TABLE></CENTER>
</BODY>
</HTML>

email.php
 <? 
/* Этот скрипт получает переменные из request.html */

/* Переменные для соединения с базой данных */
$hostname = "localhost";
$username = "myusername";
$password = "mypassword";
$dbName = "products";

/* Таблица MySQL, в которой хранятся данные */
$userstable = "clients";

/* email администратора */
$adminaddress = "admime.com";

/* создать соединение */
mysql_connect($hostname,$username,$password) OR DIE("Не могу создать соединение ");
/* выбрать базу данных. Если произойдет ошибка - вывести ее */
mysql_select_db($dbName) or die(mysql_error;

echo "<CENTER>";
echo "Привет, ".$_POST['name'];
echo "<BR><BR>";
echo "Спасибо за ваш интерес.<BR><BR>";
echo "Вас интересуют ".$_POST['preference'].". Информацию о них мы пошлем вам на email: ".$_POST['email'];
echo "</CENTER>";

/* Отправляем email-ы */
$subj = "Запрос на информацию";
$text = "Уважаемый ".$_POST['name']."!
Спасибо за ваш интерес!
Вас интересуют ".$_POST['preference']."
Мы их распространяем бесплатно.
Обратитесь в ближайший филиал нашей компании и получите ящик этого продукта.";
mail($_POST['email'], $subj, $text);

$subj="Поступил запрос на информацию";
$text = $_POST['name']." интересовали ".$_POST['preference']." email-адрес: ".$_POST['email'];
mail($adminaddress, $subj, $text);

/* составить запрос для вставки информации о клиенте в таблицу */
$query = "INSERT INTO $userstable VALUES('$name','$email', '$preference')";
/* Выполнить запрос. Если произойдет ошибка - вывести ее. */
mysql_query($query) or die(mysql_error;
echo "Информация о вас занесена в базу данных.";

/* Закрыть соединение */
mysql_close;
?>

так вот, первая часть работает а вот
 $query = "INSERT INTO $userstable VALUES('$name','$email', '$preference')" 

запрос то до мускуля идет только переменные пустые. где косяк? ЗЫ обидно когда первый раз видишь код этого языка и пример с книжки не идет:(

artimon

Потому что переменных $name и т.д. нет.
Замени на $_POST['name'] и т.д.
А лучше возьми книжку Котерова по PHP.

kruzer25

А ещё он тут такой простор для sql injection оставил...

ALEX02112

мб в конфиге PHP не прописано register_globals (должно быть ON).

feliks28

Не должно быть.

kruzer25

Ага, ещё мб штаны не сняты и задница вазелином не смазана (должна быть смазана).

uncle17

ДОЛЖНО БЫТЬ off
On было раньше.

Tori_201087

про $_POST то я читал и понял (и работает). Я силился понять как автор статьи для начинающих перешел к обычным перенным. Так ничего и не придумал, подумал что там какаято хитрая конструкция

kruzer25

Просто автор статьи - долбоёб.

pitrik2

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

uncle17

но перед этим выипет моск доброму десятку программерских форумов

pitrik2

но перед этим выипет моск доброму десятку программерских форумов
зато когда вырастет будут мозг ему ипать
Оставить комментарий
Имя или ник:
Комментарий: