如何编写带有两个条件表达式的 if 语句?

How to write an if statement with two conditional expressions?

我正在处理登录表单及其会话。现在我收到这个错误:

Parse error: syntax error, unexpected 'strlen' (T_STRING) in /home/xxx/domains/xxx/public_html/server/include/session.php on line 130

这是错误行:

if(!$subuser strlen($subuser = trim($subuser)) == 0){

这是完整的代码:

function login($subuser, $subpass, $subremember){
    global $database, $form;  //The database and form object
    /* Username error checking */

    $field = "user";  //Use field name for username
    if(!$subuser strlen($subuser = trim($subuser)) == 0){
        $form->setError($field, "* Username not entered");
    }
    else{
        /* Check if username is not alphanumeric */
        if(!eregi("^([0-9a-z])*$", $subuser)){
            $form->setError($field, "* Username not alphanumeric");
        }
    }

这行代码语法无效:

if(!$subuser strlen($subuser = trim($subuser)) == 0){

考虑将其更改为:

if(!strlen(trim($subuser))) {

您不需要对第一个表达式中的 $subuser 进行两次检查——如果需要,您应该使用 || 来分隔它们。

使用 ctype_alnum() 而不是 preg_match() 来检查字母数字字符。

function login($subuser, $subpass, $subremember){
    global $database, $form;  //The database and form object

    $field = "user";  //Use field name for username
    if (!strlen($subuser = trim($subuser))) {
        $form->setError($field, "* Username not entered");
    //} elseif (!preg_match('/^[\da-z]+$/i', $subuser)) {
    } elseif (!ctype_alnum($subuser)) {
        $form->setError($field, "* Username not alphanumeric");
    }
}
  • 第一个条件中的设计逻辑是更新 $subuser 值,然后检查其长度,以便第二个条件不接收带有前导或尾随空格的字符串。

这是 demonstration