Как остановить форму PHP от добавления пустой информации в базу данных MYSQL при обновлении страницы? - PullRequest
0 голосов
/ 22 сентября 2009

При необходимости я помещу код, который я просто хотел знать, какой код мне понадобится и где я могу разместить его, чтобы остановить ввод формы с пустыми полями в базу данных.

Фрагмент кода приветствуется. Этот вопрос может быть слишком расплывчатым, дайте мне знать.

Я использую PHP и MySQL.

Ответы [ 6 ]

3 голосов
/ 22 сентября 2009

Вы должны проверить содержимое формы перед вставкой в ​​базу данных.

Также важно проверить, является ли содержимое пустым. Переменная может существовать, но содержимое может быть пустым. Это то, что вы не хотите, если поле не является обязательным.

Примерно так:

<?php
    if (isset ($_POST['field']) && strlen($_POST['field'] >0))
    {
        insert_to_database();
    }
?>
3 голосов
/ 22 сентября 2009
if(isset($_POST['formfield'])) {
    //add to db
}
else {
    //don't add to db
}

http://www.php.net/isset

1 голос
/ 18 января 2010

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

1 голос
/ 22 сентября 2009

Вы должны сделать некоторые поля обязательными для заполнения. например, форма имеет обязательное поле: имя, конечно, вам нужно знать имя людей, которые с вами связываются .. поэтому имя должно быть обязательным для заполнения. в файле действий вам нужно поместить условие if, которое решит эту проблему:

if(isset($_POST['name'])){
//script that adds the variables to the database
}else{ echo 'the required field : name. was not filled, please try again. Thank you'; }
// it can work without else but you could output something if the required field is not filled in

также вы можете сделать электронное письмо обязательным полем и найти php-скрипт, который проверяет почту, чтобы она не была поддельной: - / в любом случае надеюсь, что это поможет вам

1 голос
/ 22 сентября 2009

Проверьте, верна ли отправленная форма, если нет, не вставляйте ее в базу данных.

0 голосов
/ 19 января 2010

Для предотвращения обновления страницы будет полезен файл cookie; Чтобы проверить пустые поля, isset ()

<?php
//in the top of the page, BEFORE every output!
if(isset($_COOKIE['givemeaname'])){
    setcookie('givemeaname', 'some foo&bar data, maybe a timestamp?', time()+3600);
    //now check the mandatory fields and
    //do whatever you want with your db
}else{
    //do nothing, the page is been refreshed!
}
//do whatever you have to do now!
?>

Если вы не хотите перемещать код db-about в верхнюю часть страницы, при проверке файлов cookie вы можете оценить булеву переменную, а затем просто проверить ее ... выберите свой путь.

Вместо куки вы можете использовать сеанс, если вам удобнее ... но поведение должно быть ясным;)

Это решение сэкономит вам все время, даже если вы попадаете на страницу с формой POST, некоторые браузеры запрашивают повторную отправку информации при появлении запроса на обновление страницы (и ленивые пользователи обычно нажимают «да» без читать или понимать, что это значит;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...