PHP在单个if语句中检查ctype和strlen

时间:2013-05-08 00:33:32

标签: php forms strlen

我有一个表单,可以在处理之前验证名字,姓氏和电子邮件。然而,似乎某些东西不起作用。如果我输入一个电子邮件地址并且我的脚本对其进行了验证,那么无论我对名字和姓氏进行检查,页面都会继续。

HTML表单输入

First Name <input type="text" id="new_user_fn" name="new_user_fn">
Last Name <input type="text" id="new_user_ln" name="new_user_ln">

PHP脚本

$ec = 0;
$fn = trim($_POST['new_user_fn']);
$ln = trim($_POST['new_user_ln']);

if(!ctype_alpha($fn) OR strlen($fn) <= 0){
    $error = "First Name cannot be blank and may only contain letters";
    $ec++;
}

if(!ctype_alpha($ln) OR strlen($ln) <= 0){
    $error = "Last Name cannot be blank and may only contain letters";
    $ec++;
}

本质上,这将检查$ fn是否为字母且长度大于0,以确保用户使用有效文本填写输入。我继续验证电子邮件地址(这部分工作正常,因此已从帖子中省略)并检查$ ec的值。

if($ec > 0){
    die($error);
}else{
    // Finish Processing
}

因此,如果我将“fn”和“ln”的输入留空但提供有效的电子邮件地址,则脚本仍会像$ ec = 0一样执行。

我错过了一些简单的东西吗?

1 个答案:

答案 0 :(得分:0)

卢卡斯发现了上述问题。另一个$ ec = 0存在,没有被注释掉。删除它解决了这个问题。谢谢大家。总是很高兴有时候额外的一双眼睛。非常感谢!