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

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

0 голосов
/ 27 ноября 2010

Скажем, у меня есть такая форма:

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

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

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

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

Ответы [ 3 ]

1 голос
/ 27 ноября 2010

Вход с именем "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 голос
/ 27 ноября 2010

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

        <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 помогает обезопасить себя от того, что скрипт не внедрен в вашу базу данных и кто-то изменил или удалил записи.

1 голос
/ 27 ноября 2010

Доступ к переменным через глобальную переменную $ _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());
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...