2017-11-22 33 views
1

私は現在以下の作業コードを持っていますが、実際の電子メールと電話番号であることを確認するために、この電子メールと電話番号の検証を行う必要があります。私は使用するコードが見つかりましたPHPの電子メールと電話番号の妥当性確認

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

私は現在のコードにこれを組み込む方法がわかりません。私はこれにいくつかの助けが大好きです。

これは私の現在のPHPコード

//load form validate 
$firstName= $_POST['firstName']; 
$lastName= $_POST['lastName']; 
$address = $_POST['address']; 
$phoneNumber = $_POST['phoneNumber']; 
$email= $_POST['email']; 
$username= $_POST['username']; 
$password = sha1 ($_POST['password']); 
$role = 1; 


//prepare input data in an array 
$userdata = array($firstName, $lastName, $address, $phoneNumber, $email, $username, $password,$role); 


//prepare error list 
$errors = array(); 

//Validation tests and store list 
if ($firstName == "" || $lastName == "" || 
    $address == "" || $phoneNumber == "" || 
    $email == "" || $username == "" || 
    $password == "" || $role == "") { 
    array_push($errors, "All form fields must be filled out before submitting."); 
} 

//if errors redirect back to form page and save attempted data. 
if (count($errors) > 0) { 
    $_SESSION['userdata'] = $userdata; 
    $_SESSION['errors'] = $errors; 
    header("Location: ../register.php"); 
}else{ 
    unset($_SESSION['userdata']); 
    unset($_SESSION['errors']); 
    $query = "INSERT INTO customers (firstName, lastName, address, phoneNumber, email, username, password) VALUES ('$firstName','$lastName', '$address', '$phoneNumber', '$email', '$username', '$password')"; 

    //die (print_r($query)); 
    if (mysqli_query($mysqli, $query)) { 
     $last_id = $mysqli->insert_id; 
     $query2 = "INSERT INTO users_in_roles (userID, roleID) VALUES ('$last_id', 1);"; 

     if ($mysqli->query($query2)) { 
      header("Location: ../Login.php"); 
     }else { 
      die(print_r($mysqli->error)); 
     } 
    } 
} 
+1

電子メール変数のサニタイズと検証。次に、値をエスケープしてデータベースに挿入する方法を学ぶ必要があります。 準備文を使用することを忘れないでください。 http://php.net/manual/en/filter.filters.validate.php || http://php.net/manual/en/filter.filters.sanitize.php || http://php.net/manual/en/function.mysql-escape-string.php –

+1

@Thomas PHPに組み込まれている関数があるときにregexを使う理由は何ですか?電子メールのすべてのバリエーションをキャプチャするための正規表現を作成することは非常に面倒です。 – Andreas

答えて

1

これは一例です。
私は両方の出力を表示するために配列を使ってforeachを作成しました。な長さが10

ある場合

if ($firstName == "" || $lastName == "" || 
$address == "" || $phoneNumber == "" || 
$email == "" || $username == "" || 
$password == "" || $role == "") { 
    array_push($errors, "All form fields must be filled out before submitting."); 
} 

If(!filter_var($email, FILTER_VALIDATE_EMAIL)){ 
    array_push($errors, "Email is not valid."); 
} 



$phone = "11-331-11111"; 
$phone = Preg_replace("/[^\d]/", "", $phone); 
If(strlen($phone) <= 10){ 
    array_push($errors, "Phone not valid."); 
} 

は非数字とチェックを削除します:あなたのケースのいずれかのフィールドが空であるかどうかをチェックした後、あなたはおそらくそれを持っていなければならないで

$email = ["[email protected]","[email protected]"]; 
Foreach($email as $e){ 
    If(filter_var($e, FILTER_VALIDATE_EMAIL)){ 
     Echo "valid"; 
    }Else{ 
     Echo "not valid"; 
    } 
} 

https://3v4l.org/GcKRp

編集は申し訳ありませんが10でなく、10以下です。

+0

ああありがとうございます。私はそれを私のコードの間違ったセクションに入れていたので、うまくいきませんでした。電話番号を有効にするためにあなたは何を使用しますか? –

+0

@Nicola私に聞かせてください。電話番号が有効かどうかはどのように分かりますか?私があなたに電話番号を渡すと、これが正しいかどうか、あなたは何を言っていますか? – Andreas

+0

フォームフィールドに数字だけを持ち、最大10の数字を持つようにするには? –

関連する問題