2016-08-30 10 views
-1

ユーザーの資格情報を確認する関数を定義していますが、authが渡された場合はtrueを返し、失敗した場合はfalseを返します。次のように私の関数が定義されています関数内から値を返す

function _userLogin($username, $password){ 
    include 'mysqli.php'; 
    $logged_in; 
    $mysqli->select_db('Directories'); 
    // query the login table for the username 
    $query = $mysqli->query("SELECT * FROM LOGININFO WHERE USERNAME='$username'"); 
    $num_rows = mysqli_num_rows($query); 

    // check to see if the user exists 
    if ($num_rows > 0) { 

     $query = "SELECT * FROM LOGININFO WHERE USERNAME='$username'"; 
     if ($result = $mysqli->query($query)){ 
      while ($result_ar = mysqli_fetch_assoc($result)){ 
       $dbuser = $result_ar['USERNAME']; 
       $dbpass = $result_ar['PASSHASH']; 
       $salt = $result_ar['SALT']; 
      } 

     } else { 
      echo "Could not connect to table: <br />".mysqli_error()."<br />"; 


      // create the hash for password validation 
      $hash = hash('sha256', $salt.$password); 

      // validate the password 
      if ($hash == $dbpass){ 
       $logged_in = True; 
       // retrieve info from the userinfo table 
       $query = ("SELECT * FROM USERINFO WHERE USERNAME='$username'"); 
       if($result = $mysqli->query($query)){ 
        while ($result_ar = mysqli_fetch_assoc($result)){ 
         $name = $result_ar['name']; 

        } 
       } 
      } else { 
       $logged_in = False; 
       //$message = "Invalid USERNAME or PASSWORD"; 
       //echo $message; 
      } 
     } 
    } else { 
     $logged_in = False; 
     //$message = "Invalid USERNAME or PASSWORD"; 
     //echo $message; 
    } 
    return $logged_in; 
} 

私は関数を呼び出すと、私は、変数が定義されていないというエラーが出る返された値であるべきものを使用しようとしたとき、私はに実行しています問題は、このです。

_userLogin($username, $password); 
    if ($logged_in == True){ 
    'do something'; 
    } else { 
    'do something else' 
} 

私は間違っていますか?

+1

を修正以外の任意の論理チェックを実行しませんでした: '$ LOGGED_IN = _userLogin($ユーザ名、$パスワード); '(PHPのドキュメント)(http://php.net/manual/en/functions.returning-values.php) –

+0

は、私はそれが常に真実を返すようにしました、また、$ logged_inが関数内から定義されていないというエラーが出ます。何か案は? –

+0

Paytonそれはしばらくして、あなたは答えを選択しなかったし、フィードバックもしなかった。あなたの問題を理解し、解決策を見つけてあなたのために書き留めるには、多くの時間が必要です。解決策があなたのために働いた場合は、それを選択しupvoteします。そうでない場合は、少なくとも私たちに(なぜ助けようとしたのか)この問題から学ぶことができる理由をお知らせください – BeetleJuice

答えて

0

が簡単に(あなたが関数を使用する)あなたの分岐を交換してください:あなたがブロックの外に機能_userLoginで定義されている変数$logged_inを使用しようとしている

if(_userLogin($username, $password)){ 
    //success 
}else{ 
    //failure 
} 
1

。 、のような

$logged_in = _userLogin($username, $password) 
if ($logged_in == True){ 
    'do something'; 
    } else { 
    'do something else' 
} 

を関数によって返される戻り値を代入あなたは、彼らがフィールドが正しく割り当てられていないため、検索されているかのブロックの外側の変数$salt$passwordにアクセスしているので、また、あなたは常にTRUEを受け取ることになります。

function _userLogin($username, $password){ 
    include 'mysqli.php'; 
    $logged_in = false; 
    $mysqli->select_db('Directories'); 
    // query the login table for the username 
    $query = $mysqli->query("SELECT * FROM LOGININFO WHERE USERNAME='$username'"); 
    $num_rows = mysqli_num_rows($query); 

    // check to see if the user exists 
    if ($num_rows > 0) { 
     $query = "SELECT * FROM LOGININFO WHERE USERNAME='$username'"; 
     if ($result = $mysqli->query($query)){ 
      $dbpass = ''; 
      $salt = ''; 

      while ($result_ar = mysqli_fetch_assoc($result)){ 
       $dbuser = $result_ar['USERNAME']; 
       $dbpass = $result_ar['PASSHASH']; 
       $salt = $result_ar['SALT']; 
      } 

      // create the hash for password validation 
      $hash = hash('sha256', $salt.$password); 

      // validate the password 
      if ($hash == $dbpass){ 
       $logged_in = True; 
       // retrieve info from the userinfo table 
       $query = ("SELECT * FROM USERINFO WHERE USERNAME='$username'"); 
       if($result = $mysqli->query($query)){ 
        while ($result_ar = mysqli_fetch_assoc($result)){ 
         $name = $result_ar['name']; 

        } 
       } 
      } 

     } else { 
      echo "Could not connect to table: <br />".mysqli_error()."<br />"; 
     } 
    } 

    return $logged_in; 
} 

ご注意:私はあなたがそれを割り当てないで返された値を破棄しているあなたの構文

関連する問題