Как проверить, пусто ли какие-либо поля в форме

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

<?php $con = mysql_connect(localhost, 262096, 9201999); if (!$con) { die('Could not connect: ' . mysql_error()); } mysql_select_db("262096", $con); $firstname = $_POST['firstname']; $lastname = $_POST['lastname']; $username = $_POST['username']; $password = $_POST['password']; $passwordconf = $_POST['passwordconf']; $email = $_POST['email']; $securityq = $_POST['securityq']; $qanswer = $_POST['qanswer']; if(empty($firstname) || empty($lastname) || empty($username) || empty($password) || empty($passwordconf) || empty($email) || empty($securityq) || empty($qanswer)) { echo "You did not fill out the required fields."; } $uname = "SELECT * FROM users WHERE username='{$username}'"; $unamequery = mysql_query($uname) or die(mysql_error()); if(mysql_num_rows($unamequery) > 0) { echo "The username you entered is already taken"; } $emailfind = "SELECT * FROM users WHERE email='{$email}'"; $emailquery = mysql_query($emailfind) or die(mysql_error()); if(mysql_num_rows($emailquery) > 0) { echo "The email you entered is already registered"; } if($password != $passwordconf) { echo "The passwords you entered do not match"; } $regex = "/^[a-z0-9]+([_.-][a-z0-9]+)*@([a-z0-9]+([.-][a-z0-9]+)*)+.[az]{2,}$/i"; if(!preg_match($regex, $email)) { echo "The email you entered is not in name@domain format"; } 

Solutions Collecting From Web of "Как проверить, пусто ли какие-либо поля в форме"

При использовании больших форм я рекомендую создать массив с полями формы:

 $fields = array('firstname', 'lastname', 'username', 'password', 'passwordconf', 'email', 'securityq', 'qanswer'); $error = false; //No errors yet foreach($fields AS $fieldname) { //Loop trough each field if(!isset($_POST[$fieldname]) || empty($_POST[$fieldname])) { echo 'Field '.$fieldname.' misses!<br />'; //Display error with field $error = true; //Yup there are errors } } if(!$error) { //Only create queries when no error occurs //Create queries.... } 

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

почему бы вам не попробовать проверку на стороне клиента с помощью JQuery

http://docs.jquery.com/Plugins/Validation#Options_for_the_validate.28.29_method

Прежде всего используйте mysql_real_escape_string (), чтобы избежать инъекций MYSQL:

 ... $firstname = mysqli_real_escape_string($con, $_POST['firstname']); $lastname = mysqli_real_escape_string($con, $_POST['lastname']); ... 

И чтобы проверить, пустое ли поле, чтобы вернуть ошибку или сообщение, просто сделайте это (краткий пример):

 if (!(empty($_POST['firstname']))){ execute some code.... } else { execute some code... } 

надеюсь, это поможет

С этим кодом возникает несколько проблем:

  1. Это не безопасно.
  2. Вы показываете сообщения об ошибках, но код продолжает выполняться, поэтому он будет выполнять ваш запрос выбора, даже если имя пользователя пуст.
  3. По причине два, почти все ваши запросы ниже могут потерпеть неудачу.

Итак, вы должны остановиться здесь

 if(empty($firstname) || empty($lastname) || empty($username) || empty($password) || empty($passwordconf) || empty($email) || empty($securityq) || empty($qanswer)) { echo "You did not fill out the required fields."; die(); // Note this } 

Используйте простой оператор if, чтобы узнать, пусто ли какие из полей, которые пользователь отправил. Например, чтобы проверить, пусто ли поле пользователя:

 $username = $_POST['username']; if ($username == "") { echo "Username field is empty! <a href='page.php'>Go Back</a> { else { echo "The username field has text in it. It is not empty."; } 

Если вы делаете что-либо с базой данных, вы должны дезинформировать свой вход. Что касается проверки значений POST. Если вам нужно, чтобы все сообщения на этой странице были заполнены, вы можете попробовать выполнить цикл через $ _POST и проверить каждый. Вы также должны остановить выполнение, если вы повторяете, что произошла ошибка. И ПОЖАЛУЙСТА, не слушайте людей, которые говорят, что используют javascript для этого, вам нужна сильная проверка на стороне сервера, прежде чем вы будете беспокоиться о javascript!

 foreach($_POST as $key => $value) { if(empty($value)) { echo "Error, not all values given."; die; } } 

Но я бы посоветовал вам также проверять отдельные сообщения более подробно. Убедитесь, что их имя пользователя и пароль имеют правильные символы .. и используйте mysql_escape_string($str) если вы запрашиваете его в базе данных.

U может захотеть использовать функции isset () и empty ()

 //! means NOT so: exists and NOT empty if(isset($_POST['firstname']) && !empty($_POST['firstname'])) { $firstname = $_POST['firstname']; //Do something with $firstname } 

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

  if(in_array("",$_POST)){ //this will check the whole post data if any field is empty. echo 'form is empty'; echo 'some error message'; exit; }else{ echo "form is not empty"; //some code }