在php形式的用户输入中包含12位数字的电话号码


contain 12 digit for phone number in user input in php form

我想设置landLineTelNo是一个整数,必须包含12位。。。这是我的php表单代码。。。。

    <?php
// Start the session
session_start();
?>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Page Title Goes Here</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="form1.css"/>
</head>
<body>
<?php 
//define variable and set to empty value
$forenameErr = $surnameErr = $emailErr = $postalAddressErr = $landLineTelNoErr = $mobileTelNoErr = $sendMethodErr = "";
$valid = true;
// if forename is null , make it null , else test_input()
$forename = empty($_POST["forename"]) ? NULL : test_input($_POST["forename"]);
// if surname is null , make it null , else test_input()
$surname =  empty($_POST["surname"]) ? NULL : test_input($_POST["surname"]);
// if postalAddress is null , make it null , else test_input()
$postalAddress = empty($_POST["postalAddress"]) ? NULL : test_input($_POST["postalAddress"]);
// if landLineTelNo is null , make it null , else test_input()
$landLineTelNo = empty($_POST["landLineTelNo"]) ? NULL : test_input($_POST["landLineTelNo"]);
// if mobileTelNo is null , make it null , else test_input()
$mobileTelNo = empty($_POST["mobileTelNo"]) ? NULL : test_input($_POST["mobileTelNo"]);
//email
$email = empty($_POST["email"]) ? NULL : test_input($_POST["email"]);
// if sendMethod is null , make it null , else test_input()
$sendMethod = empty($_POST["sendMethod"]) ? NULL : test_input($_POST["sendMethod"]);
    if  (isset($_POST["submit"])){

        //check forename
        if($forename === NULL)  {
            //forename is empty
            $forenameErr = "Forename is required";
            $valid = false;
        } else {
            //check characters
             if (!preg_match("/^[a-zA-Z ]*$/",$forename)) {
                 $forenameErr = "Only letters and white space allowed";
                 $valid = false;
             }
        }
        //check surname
        if($surname === NULL){
            //surname is empty
            $surnameErr = "Surname is required";
             $valid = false; //false
        } else {
            //check charaters
             if (!preg_match("/^[a-zA-Z ]*$/",$surname)) {
             $surnameErr = "Only letters and white space allowed";
             $valid = false;
            }
        }   
         //check address
         if (!preg_match("/^[a-zA-Z0-9'-'',. ]*$/", $postalAddress)) {
                     // check characters
                     $postalAddressErr = "Invalid Postal Address";
                     $valid = false;//false
        }

            // check if invalid telephone number added
            if (!preg_match("/^$|^[0-9]{12}$/",$landLineTelNo)) {
                //check number
                     $landLineTelNoErr = "Invalid telephone number entered";
                     $valid = false;//false
            }

            //check valid mobiel tel no
            if (!preg_match("/^$|^[0-9]{11}$/",$mobileTelNo)) {
                //check number
                     $mobileTelNoErr = "Invalid telephone number entered";
                     $valid = false;//false
            }

        //check valid email
            if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
                 $emailErr = "Invalid email format";
                 $valid = false;//false
             }

        //check sendMethod
        if($sendMethod === NULL){
             //send method is empty
             $sendMethodErr = "Contact method is required";
             $valid = false; //false
        } else {
            $sendMethod = test_input($_POST["sendMethod"]);
        }

     //if valid then redirect
    if($valid){
         $_SESSION['forename'] = $forename;
         $_SESSION['surname'] = $surname;
         $_SESSION['email'] = $email;
         $_SESSION['postalAddress'] = $postalAddress;
         $_SESSION['landLineTelNo'] = $landLineTelNo;
         $_SESSION['mobileTelNo'] = $mobileTelNo;
         $_SESSION['sendMethod'] = $sendMethod;
         header('Location: userdetail.php');
         exit();
        }    
    }   else{
         //user did not submit form!
    }

//check
function test_input($data) {
   $data = trim($data);
   $data = stripslashes($data);
   $data = htmlspecialchars($data);
   return $data;
}
?>

<div id="wrapper">
<h1>Welcome to Chollerton Tearoom! </h1>
<nav> 
    <ul>
         <li><a href="index.html">Home</a></li>
         <li><a href="findoutmore.html">Find out more</a></li>
         <li><a href="offer.html">Offer</a></li>
         <li><a href="credit.html">Credit</a></li>
         <li><a href="#">Admin</a></li>
         <li><a href="wireframe.html">WireFrame</a></li>
    </ul>
</nav>
<form id = "userdetail" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="POST">
    <fieldset id="aboutyou">
    <legend id="legendauto">user information</legend>
        <p>
        <label for="forename">Forename: </label>
        <input type="text" name="forename" id="forename" value="<?php echo $forename;?>">
        <span class="error">* <?php echo $forenameErr;?></span>
        </p>
        <p>
        <label for="surname">Surname:</label>
        <input type="text" name="surname" id="surname" value="<?php echo $surname;?>">
        <span class="error">* <?php echo $surnameErr;?></span>
        </p>
        <p>
        <label for="postalAddress">Postal Address:</label>
        <input type="text" name="postalAddress" id="postalAddress" value="<?php echo $postalAddress;?>">
        <span class="error"> <?php echo $postalAddressErr;?></span>
        </p>
        <p>
        <label for="landLineTelNo">Landline Telephone Number:</label>
        <input type="text" name="landLineTelNo" id="landLineTelNo" value="<?php echo $landLineTelNo;?>" >
        <span class="error">  <?php echo $landLineTelNoErr;?></span>
        </p>
        <p>
        <label for="mobileTelNo">Moblie:</label>
        <input type="text" name="mobileTelNo" id="mobileTelNo" value="<?php echo $mobileTelNo;?>" >
        <span class="error">  <?php echo $mobileTelNoErr;?></span>
        </p>
        <p>
        <label for="email">E-mail:</label>
        <input type="text" name="email" id="email" value="<?php echo $email;?>">
        <span class="error"> </span> <?php echo $emailErr;?> </span>
        </p>
        <fieldset id="future">
        <legend>Lastest news</legend>
        <p>
        Choose the method you recommanded to recevive the lastest information
        </p>
        <br>
        <input type="radio" name="sendMethod" id="sendMethod" <?php if (isset($sendMethod) && $sendMethod=="email") echo "checked";?>  value="email">
        Email
        <input type="radio" name="sendMethod" id="sendMethod" <?php if (isset($sendMethod) && $sendMethod=="post") echo "checked";?>  value="post">
        Post
        <input type="radio" name="sendMethod" id="sendMethod" <?php if (isset($sendMethod) && $sendMethod=="SMS") echo "checked";?>  value="SMS">
        SMS
        <span class="error">* <?php echo $sendMethodErr;?></span>
        </fieldset>
       <p><span class="error">* required field.</span></p>

        <input type="checkbox" name="checkbox" value="check" id="agree" /> 
        I have read and agree to the Terms and Conditions and Privacy Policy

        <p> 
        <input type="submit" name="submit" value="submit" >
        </p>
        </form>
       </fieldset>
    </form>
</div>

</body>
</html>

这是我的redodata.php代码,用于获取数据。。。

  <?php 
session_start();
$forename = $_SESSION['forename'];
$surname = $_SESSION['surname'];
$email = $_SESSION['email'];
$postalAddress = $_SESSION['postalAddress'];
$landLineTelNo = $_SESSION['landLineTelNo'];
$mobileTelNo = $_SESSION['mobileTelNo'];
$sendMethod = $_SESSION['sendMethod'];
echo "<h1>Successfull submission :</h1>";
echo "<p>Forename :  $forename <p/>";
echo "<p>Surname : $surname <p/>";

if($_SESSION['postalAddress']==NULL)
{echo "postalAddress:NULL";} 
else {echo "<p>PostalAddress : $postalAddress </p>";}
if($_SESSION['email']==NULL)
{echo "email:NULL";} 
else {echo "<p>email : $email</p>";}
if($_SESSION['landLineTelNo']==NULL)
{echo "landLineTelNo:NULL";} 
else {echo "<p>landLineTelNo : $landLineTelNo </p>";}
if($_SESSION['mobileTelNo']==NULL)
{echo "mobileTelNo:NULL";} 
else {echo "<p>mobileTelNo : $mobileTelNo </p>";}

echo "<p>sendMethod : $sendMethod </p>";
?>

我尝试过"/^[0-9]{12}$/",但当它为空时无法提交表单。。。。它假设在空的时候也提交。。。。当我尝试"/^[0-9]*$/"时,一切都正常。。。。那么我如何将landLineTelNo设置为12位,否则它无法提交表格。。。如果表格为空,它可以提交。。。。

下面的正则表达式检查空值或原始正则表达式。

/^$|^[0-9]{12}$/

希望这能有所帮助。

如果它是空的,为什么不简单地尝试一下?

if($_SESSION['landLineTelNo'] === null){
    echo "<p>landLineTelNo:NULL<p/>";
} elseif (is_empty($_SESSION['landLineTelNo'])) {
     echo "<p>landLineTelNo:EMPTY<p/>";
} else {
    echo "<p>landLineTelNo : $landLineTelNo <p/>";
}

希望这能帮助

您可以这样做:

// Make sure landLineTelNo is set
// If landLineTelNo is empty then that's OK
if (isset($_POST["landLineTelNo"]) && $_POST["landLineTelNo"] !== '') {
    // Check if non-digits were provided
    if (!ctype_digit($_POST['landLineTelNo'])) {
        $landLineTelNoErr = "Must contain only digits";
        $valid = false;
    }
    // Check if exactly 12 digits were provided
    elseif (strlen($_POST['landLineTelNo']) !== 12) {
        $landLineTelNoErr = "Must contain 12 digits";
        $valid = false;
    }
}