Как проверить поле формы в php

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

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

Мой код ниже.

Заранее спасибо за вашу помощь, я действительно ценю это.

<?php
include 'config.php';
$tbl_name="citizens"; // Table name
// Get values from form and formatting them as SQL strings
$firstname = mysql_real_escape_string($_POST['firstname']);
$middlename = mysql_real_escape_string($_POST['middlename']);
$lastname = mysql_real_escape_string($_POST['lastname']);
$sex = mysql_real_escape_string($_POST['sex']);
$address = mysql_real_escape_string($_POST['address']);
$employer = mysql_real_escape_string($_POST['employer']);
$posincom = mysql_real_escape_string($_POST['posincom']);
$states = mysql_real_escape_string($_POST['states']);
$agerange = mysql_real_escape_string($_POST['agerange']);
$income = mysql_real_escape_string($_POST['income']);
$email = mysql_real_escape_string($_POST['email']);
$phone = mysql_real_escape_string($_POST['phone']);

// Insert data into mysql 
$sql="INSERT INTO `$tbl_name` (firstname, middlename, lastname, sex, address, employer, position_in_company, states, age_range, local_govt_area, email, phone) VALUES('$firstname', '$middlename', '$lastname', '$sex', '$address', '$employer', '$posincom', '$states', '$agerange', '$income', '$email', '$phone')";
$result=mysql_query($sql);

// if successfully insert data into database, displays message "Successful". 
if($result){
echo "You Have Successful Registered";
}else {
echo "Sorry!!! Could Not Register You. All a* fields must be field.";
}
?>

5 ответов

Решение
<?php
include 'config.php';
$tbl_name="citizens"; // Table name

$required = array('email');
$errors = array();

foreach($required as $required_fieldname){
    if(!isset($_POST[$required_fieldname]) || empty($_POST[$required_fieldname])){
        $errors[] = 'Sorry!!! Could Not Register You. All a* fields must be field.';
        break;
    }
}

if(isset($_POST['email']) && !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)){
    $errors[] = "That is not a valid email address.";
}

if(count($errors) == 0){
    // Get values from form and formatting them as SQL strings
    $firstname = mysql_real_escape_string($_POST['firstname']);
    $middlename = mysql_real_escape_string($_POST['middlename']);
    $lastname = mysql_real_escape_string($_POST['lastname']);
    $sex = mysql_real_escape_string($_POST['sex']);
    $address = mysql_real_escape_string($_POST['address']);
    $employer = mysql_real_escape_string($_POST['employer']);
    $posincom = mysql_real_escape_string($_POST['posincom']);
    $states = mysql_real_escape_string($_POST['states']);
    $agerange = mysql_real_escape_string($_POST['agerange']);
    $income = mysql_real_escape_string($_POST['income']);
    $email = mysql_real_escape_string($_POST['email']);
    $phone = mysql_real_escape_string($_POST['phone']);

    // Insert data into mysql 
    $sql="INSERT INTO `$tbl_name` (firstname, middlename, lastname, sex, address, employer, position_in_company, states, age_range, local_govt_area, email, phone) VALUES('$firstname', '$middlename', '$lastname', '$sex', '$address', '$employer', '$posincom', '$states', '$agerange', '$income', '$email', '$phone')";
    $result= mysql_query($sql);

    // if successfully insert data into database, displays message "Successful". 
    if($result){
        echo "You Have Successfully Registered";
    }else {
        echo "A technical error has occured.";
    }
}
else{
    echo '<strong>ERRORS!</strong><br>';
    foreach($errors as $error){
        echo $error . '<br>';
    }
}
?>

1.) вы можете использовать PHP_FILTER для проверки.

2.) вы можете правильно проверить (переменная равна нулю или нет), прежде чем вставлять данные, если переменная равна нулю, отображается сообщение об ошибке msg.

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

Для электронной почты вы можете использовать эту (или аналогичную) функцию из https://stackru.com/questions/3314493/check-for-valid-email-address для проверки электронной почты

function isValidEmail($email){
    return preg_match("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$^", $email);
}

Или же

function isValidEmail( $email ){
    return filter_var( $email, FILTER_VALIDATE_EMAIL );
}

В остальном вы можете использовать следующие

<?php
    $error = '';

    //put chosen function here
    function isValidEmail( $email ){
        return filter_var( $email, FILTER_VALIDATE_EMAIL );
    }

    //get values and validate each one as required
    $firstname = mysql_real_escape_string($_POST['firstname']);
        if(!$firstname){ $error .= "First name is required<br />"; }

    //repeat for each field
    $email = mysql_real_escape_string($_POST['email']);
        if(!isValidEmail($email)){ $error .= "The email entered is invalid<br />"; }

    //and so on...

    if(!$error){
         //add insert into database code here
    }
    else{
        //display $error however you want e.g....
        echo "<div class=\"error\">$error</div>";
    }
?>
<?php
include 'config.php';
$tbl_name="citizens"; // Table name
// Get values from form and formatting them as SQL strings

//your other fields ...
$email = mysql_real_escape_string($_POST['email']);
if(!filter_var($email, FILTER_VALIDATE_EMAIL)){ 
$errors = 1;
echo "Please enter a correct email address";
}

//similar approach can be used for other fields..
// this is one of the simplest validating approach


if($errors == 0){
// Insert data into mysql 
$sql="INSERT INTO `$tbl_name` (firstname, middlename, lastname, sex, address, employer, position_in_company, states, age_range, local_govt_area, email, phone) VALUES('$firstname', '$middlename', '$lastname', '$sex', '$address', '$employer', '$posincom', '$states', '$agerange', '$income', '$email', '$phone')";
$result=mysql_query($sql);

// if successfully insert data into database, displays message "Successful". 
if($result){
echo "You Have Successful Registered";
}else {
echo "Sorry!!! Could Not Register You. All a* fields must be field.";
}
}
?>
Другие вопросы по тегам