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

时间:2018-10-06 21:52:35

标签: php validation syntax-error conditional strlen

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

  

解析错误:语法错误,在 /home/xxx/domains/xxx/public_html/server/include/session.php 中出现意外的“ strlen”(T_STRING)第 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");
        }
    }

2 个答案:

答案 0 :(得分:0)

这行代码的语法无效:

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

考虑将其更改为:

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

答案 1 :(得分:0)

您不需要在第一个表达式中对$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