我花了很多时间在这个PHP代码中使用这个表单来工作,我现在问你Stackoverflow。
我有这个代码,我试图插入一个电话输入表格,我已经成功地使用正确长度的8位电话号码正确验证。 (例如12345678)
HTML
<form action="index.php" method="post">
<legend>Sign up here.</legend>
<label>Name <input type="text" name="na" /></label><br>
<label>Email <input type="text" name="em" /></label><br>
<label>Phone <input type="number" name="ph" pattern=".{0}|.{8}" /></label><br>
<input type="submit" value="Sign Up" /></form>
PHP
$nam = filter_input(INPUT_POST, 'na', FILTER_SANITIZE_STRING)
or die('Please insert a name.');
$ema = filter_input(INPUT_POST, 'em', FILTER_VALIDATE_EMAIL)
or die('The email you typed is not valid.');
$pho = filter_input(INPUT_POST, 'ph', FILTER_VALIDATE_INT)
or die('Phone number was incorrect. It must contain 8 numbers.');
if(preg_match('/[0-9] {8}/', $pho));
echo 'Hello ' . $nam . ' we registered your mail as ' . $ema . ' and your phone number as ' . $pho . '<br>' . PHP_EOL;
$sql = 'INSERT INTO signup (name, email, phone) VALUES (?,?,?)';
$stmt = $link->prepare($sql);
$stmt->bind_param('sss', $nam, $ema, $pho);
$stmt->execute();
$link->close();
?>
当我插入并提交我的表单时,它不会注册preg_match,并且无论如何都要插入0到7个长度的数字。
代码在添加手机部分之前有效,如果没有效果,则不会插入姓名和/或电子邮件。
答案 0 :(得分:0)
我认为正则表达式中的额外空格会导致这种行为。
也许这会奏效:
if(preg_match('/[0-9]{8}/', $pho)) {
echo 'Hello ' . $nam . ' we registered your mail as ' . $ema . ' and your phone number as ' . $pho . '<br>' . PHP_EOL;
};