Формы, Mysql и значения

0

Так сказать, у меня есть такая форма:

            <form action="submit2.php">
                <input name="name" type="text" />
                <input name="age" type="text" />
                <input type="submit" />
            </form>

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

mysql_query("INSERT INTO example (name, age) VALUES('$name', '$age' ) ") or die(mysql_error());  

Однако все, что я получаю, это пустая запись в таблице. Я ошибаюсь, полагая, что входное значение становится переменной, если если в html-коде указывается имя (например, name= "age" )?

Теги:
forms

3 ответа

1
Лучший ответ

Доступ к переменным через глобальную переменную $_POST.

if(isset($_POST['name']) && isset($_POST['age'])){
 $name = mysql_real_escape_string($_POST['name']);
 $age = mysql_real_escape_string($_POST['age']);
 mysql_query("INSERT INTO example (name, age) VALUES('$name', '$age' ) ") or die(mysql_error());
}
  • 1
    Важно сказать, что это огромная проблема безопасности. Вы должны использовать mysql_real_escape_string (с mysql API).
  • 0
    Ах, я тоже это заметил, но забыл указать это в своем ответе - опасайтесь SQL-инъекций! Спасибо!
1

Ввод с именем "name" создаст переменную $name в submit2.php, только если включена функция register_globals, , которая является проблемой безопасности. Вы никогда не должны включать register_globals (кстати, он будет удален в PHP6).

Я не уверен, что такое атрибут method по умолчанию, но он должен создать переменную с именем $_GET ['name'] или $_POST ['name']. Если он не создает ни одного из них, добавьте в форму форму method:

<form action="submit2.php" method="post">

Однако, это не гарантирует, что эти переменные существуют (что, если кто-то получит доступ к submit2.php без использования вашей формы?). Вы должны использовать либо isset, либо! Empty (я предпочитаю последний, потому что он также проверяет, не является ли он пустым).

Последнее: не забывайте избегать переменных. Никогда не доверяйте пользовательскому вводу. В этом случае, поскольку вы вставляете переменную в запрос, вы должны использовать функцию mysql_real_escape_string.

1

вам нужно изменить данные из формы на полезные значения

        <form action="submit2.php" method="post">
            <input name="name" type="text" />
            <input name="age" type="text" />
            <input type="submit" />
        </form>

и изменить часть запроса базы данных на:

        $name=mysql_real_escape_string($_POST['name']);
        $age=mysql_real_escape_string($_POST['age']);
        mysql_query("INSERT INTO example (name, age) VALUES('$name', '$age' ) ") or die(mysql_error());  

mysql_real_escape_string помогает обеспечить безопасность, не введя script в вашу базу данных и кто-то изменит или удалит записи.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню