2012-09-06 4 views
-1

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

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

Мой код ниже.

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

+0

Какие подходы вы пробовали для проверки? –

+0

Пока нет, поэтому я пришел сюда. –

ответ

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>'; 
    } 
} 
?> 
+0

Большое спасибо. Это отлично работает –

0

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

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>"; 
    } 
?> 
+0

Использование регулярных выражений для проверки правильных адресов электронной почты - не очень хорошая идея. Используйте [filter_var] (http://php.net/filter_var), как объясняет ответ Уэйна. – Jocelyn

+0

Уже добавлен этот вариант. filter_var также проверяет некоторые недействительные электронные письма в последних версиях php до 5.2.14 – Onimusha

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

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

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

Смежные вопросы