-1

いくつかの必須フィールドがある登録フォームがあります。データベースに挿入する前に、これらの必須フィールドが入力されているかどうか、およびそれらが正しく入力されているかどうかを確認したいと思います。

必須フィールドの 1 つは電子メールです。入力した電子メールが有効な電子メールかどうかも確認したいと思います。

私のコードは以下です。

よろしくお願いします。

<?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.";
}
?>
4

5 に答える 5

2
<?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>';
    }
}
?>
于 2012-09-06T11:05:13.707 に答える
0

JavaScriptを使用してクライアント側で送信する前にフォームを検証し、正しく入力されていない場合はユーザーに警告する必要があります。検証したら、送信を許可します。それ以外の場合は、サーバーで検証してから、クライアント側でユーザーに応答を送信するのはオーバーヘッドです。

于 2012-09-06T11:04:55.697 に答える
0

電子メールの場合、 https://stackoverflow.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>";
    }
?>
于 2012-09-06T11:06:26.290 に答える
0
<?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.";
}
}
?>
于 2012-09-06T11:08:41.537 に答える
0

PHP_FILTER1.)検証に使用できます。

2.)変数がnullの場合、データを挿入する前に適切なチェック(変数がnullであるかどうか)を行うことができます。それ以外の場合は、エラーメッセージが表示されます..

于 2012-09-06T11:15:25.697 に答える