猿问

使用 preg_match 和正则表达式进行 PHP 表单验证

大家好,我目前正在尝试验证表单中的用户输入。我正在使用正则表达式和 php preg_match 函数。我正在尝试使用电子邮件、电话号码和邮政编码来执行此操作。但是,当用户输入不符合正则表达式的电子邮件、电话号码或邮政编码时,什么也不会发生,用户应该会在这种情况下收到一条错误消息。所以我相信我的正则表达式没有被读取,我也不知道为什么。感谢您的任何帮助。


这是我的代码:


  <?php



  if(isset($_POST['order'])){

    $fname = trim(htmlspecialchars($_POST['first_name']));

    echo $fname;

    $address = trim(htmlspecialchars($_POST['address']));

    echo $address;

    $city = trim(htmlspecialchars($_POST['city']));

    echo $city;

    $zipcode = trim(htmlspecialchars($_POST['zip_code']));

    echo $zipcode;

    $email = trim(htmlspecialchars($_POST['email']));

    echo $email;

    $validzip = "/^\d{5}$|^\d{5}-\d{4}$/";

    $validemail = "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/";

    $state = $_POST['states'];

    echo $state;

    $lname = trim(htmlspecialchars($_POST['last_name']));

    echo $lname;

    $phonenumber = trim(htmlspecialchars($_POST['phone_number']));

    echo $phonenumber;

    $vaildpn = "/^[0-9]{3}-[0-9]{4}-[0-9]{4}$/";





    if(isset($_POST['first_name']) && $fname!= "" && isset($_POST['address'])&& $address !="" && isset($_POST['city']) && $city != "" && isset($_POST['zip_code']) && $zipcode != ""&& isset($_POST['email']) && $email != "" && isset($_POST['last_name']) && $lname != "" && isset($_POST['phone_number']) && $phonenumber != "" && isset($_POST['card_Number']) && $cardnumber != "" && isset($_POST['exp_date']) && $expdate != "" && isset($_POST['cvc']) && $cvc != "" && preg_match($validzip, $zipcode) && preg_match($validemail, $email)){



        header("Location: orderplaced.php");

    }

}


扬帆大鱼
浏览 95回答 1
1回答

米脂

没有$_POST['order']提交。尝试将此添加到您的表单中:<input type="hidden" value="1" name="order">我还建议您使用更好的验证方法,例如filter_var
随时随地看视频慕课网APP
我要回答