2016-10-10 61 views
0

如何計算數字字符與string字符在PHP?如果我使用strlen,那只是計數string。我想限制username輸入值只有20個字符,如果我只輸入20或更多string,此代碼工作,但如果我輸入(例如:Admin123Admin123Admin123)那不工作,我的驗證輸入失敗。PHP - 我如何計算數字字符和字符串字符來檢查用戶名長度值?

我有這樣的警予2 useraccount控制器代碼:在PHP

   function saveNewUsers() 
       { 
        $.ajax({ 
           type  :'POST', 
           dataType : 'json', 
           data  : { id: $('#hiUserID').val(), username : $('#txtUsername').val(), password: $('#txtPassword1').val(), group: $('#cbUserGroup').val(), expired: $('#cbExpired').val() }, 
           url : '" . \Yii::$app->getUrlManager()->createAbsoluteUrl('useraccount/saveuser') . "', 
           success : function(response) { 
            if (!response.result) { 
             if (response.error == 2) 
             { 
              $('#errorMessageUser').html(DecodeEntities('{$myLabels[20]}.')).show(); 
             } 
             else if(response.error == 3) 
             { 
              $('#errorMessageUser').html(DecodeEntities('{$myLabels[56]}.')).show(); 
             } 
             else if(response.checkUsername > 20) 
             { 
              $('#errorMessageUser').html(DecodeEntities('{$myLabels[57]}.')).show();  
             } 
             else $('#errorMessageUser').html(DecodeEntities('{$myLabels[22]}.')).show(); 
            } 
            else {  
             $('#errorMessageUser').html('').hide(); 
             $('#myUserModal').modal('hide'); 
             $.pjax.reload({container:'#myPjax',timeout:false}); 


            } 
           }      
        }); 
       } 

那麼,如何計算數字和字符串:

 // new user 

     if ($username != '' && $password != '' && intval($group) > 0 && !$exist) 
     { 
      $myFunctions = new userFunctions; 
      $exist = $myFunctions->isUserNameExist($username); 
      $isValid = $myFunctions->isValidPassword($password); 
      $checkUsername = strlen($username); 
      // $temp = str_split($username); // Convert a string to an array by each character 
      // // if don't want the spaces 
      // $temp = array_filter($temp); // remove empty values 
      // $checkUsername = count($temp); 

      if ($isValid == 0 && !$exist) 
      { 
       $result = $myFunctions->saveNewUser($username, $password, $group, $expired); 
       $error = ($result) ? 0 : 1; 
      } 
      else if($exist) 
      { 
       $error = 3; 
      } 
      else $error = 2; 
     } 
    } 

    echo \yii\helpers\Json::encode(['result' => $result, 'error' => $error, 'checkUsername' => $checkUsername ]); 

這是我的代碼的看法?我真的很感謝PHP新手,希望我們的程序員能在這裏提出建議。對不起,我的英語不好。

+0

strlen不能算數值。 – yosafat

+0

顯示一個例子,因爲我有。 'Admin123Admin123Admin123'是24個字符,所以它不應該工作.. – chris85

回答

0

我已經找到了答案,是的感謝克里斯85,strlen的不是問題,但問題是在控制器,這是我改變我的代碼:

if ($username != '' && $password != '' && intval($group) > 0 && !$exist) 
     { 
      $myFunctions = new userFunctions; 
      $exist = $myFunctions->isUserNameExist($username); 
      $isValid = $myFunctions->isValidPassword($password); 
      $checkUsername = strlen($username); 
      // var_dump($checkUsername); die(); 

      if ($isValid == 0 && !$exist && $checkUsername <= 20) 
      { 
       $result = $myFunctions->saveNewUser($username, $password, $group, $expired); 
       $error = ($result) ? 0 : 1; 
      } 
      elseif ($checkUsername > 20) 
      { 
       $error = 99; 
      } 
      else if($exist) 
      { 
       $error = 3; 
      } 
      else $error = 2; 
     } 

,並在這樣的觀點:

function saveNewUsers() 
       { 
        $.ajax({ 
           type  :'POST', 
           dataType : 'json', 
           data  : { id: $('#hiUserID').val(), username : $('#txtUsername').val(), password: $('#txtPassword1').val(), group: $('#cbUserGroup').val(), expired: $('#cbExpired').val() }, 
           url : '" . \Yii::$app->getUrlManager()->createAbsoluteUrl('useraccount/saveuser') . "', 
           success : function(response) { 
            if (!response.result) { 
             if (response.error == 2) 
             { 
              $('#errorMessageUser').html(DecodeEntities('{$myLabels[20]}.')).show(); 
             } 
             else if(response.error == 3) 
             { 
              $('#errorMessageUser').html(DecodeEntities('{$myLabels[56]}.')).show(); 
             } 
             else if(response.error == 99) 
             { 
              $('#errorMessageUser').html(DecodeEntities('{$myLabels[57]}.')).show();  
             } 
             else $('#errorMessageUser').html(DecodeEntities('{$myLabels[22]}.')).show(); 
            } 
            else {  
             $('#errorMessageUser').html('').hide(); 
             $('#myUserModal').modal('hide'); 
             $.pjax.reload({container:'#myPjax',timeout:false}); 
            } 
           }      
        }); 
       } 

感謝您的幫助,最後我得到了答案。