php
  • login
  • 2017-01-25 8 views 0 likes 
    0

    こんにちは皆、私はPHPでログインスクリプトを作成しようとしています。それはうまく動作しますが、私はこの奇妙なバグを持っています。私は管理者としてログインしたときに、私はそれは私のログインに失敗したと言い、同じ時間ではなく、中にlogedます...ログインは受け入れられ、失敗しましたか?

    私は、このウェルカムメッセージました:そう、私はactullyにログインしていますことを知っている

    <?php echo "<h3 id ='tjena'> Welcome ".$_SESSION['user']."</h3>";?> 
    

    を... しかし、私にも私を導くはずのヘッダーがありますが、何らかの理由で失敗して私に指示してくれますか?エラー

    ここに私のコードです:

    while($row = $result->fetch_object()) { 
        if($username == $row->username) { 
         $checkPassword = password_verify($password,$row->password); 
         if($checkPassword){ 
          session_start(); 
          $_SESSION['loggedIn'] = true; 
          $_SESSION['user'] = $row->username; 
          $_SESSION['admin'] = $row->admin; 
          $_SESSION['LAST_ACTIVITY'] = time(); 
          header("Location:index.php?success"); 
          $fail = false; 
         } 
        } else { 
         $fail = true; 
        } 
    } 
    
    if($fail){  
        header("Location:index.php?error"); 
    } 
    

    誰かがこのエラーの原因を知っていますか?事前にThans!

    +0

    'session_start'をトップに移動して何か変わるのを見ますか?上はコード –

    +0

    の最初の行を意味します。いくつかのログインを投げます。それはpassword_verifyに到達していますか? password_verifyは合格ですか? – aynber

    +0

    @HosseinShahsahebi違いtho –

    答えて

    1

    PHPスクリプトはユーザを別のページにリダイレクトしますが、指示しない限りそのスクリプトは実行を停止しません。

    だから、私はexit();の行を追加することがトリックを行うと思います。

    while($row = $result->fetch_object()) { 
        if($username == $row->username) { 
         $checkPassword = password_verify($password,$row->password); 
         if($checkPassword){ 
          session_start(); 
          $_SESSION['loggedIn'] = true; 
          $_SESSION['user'] = $row->username; 
          $_SESSION['admin'] = $row->admin; 
          $_SESSION['LAST_ACTIVITY'] = time(); 
          header("Location:index.php?success"); 
          exit(); 
          $fail = false; 
         } 
        } else { 
         $fail = true; 
        } 
    } 
    
    if($fail){  
        header("Location:index.php?error"); 
    } 
    
    0

    あなたは通常のユーザーか管理者かをチェックするコードはどこですか? $ checkpasswordがtrueの場合、$ _SESSSION ['user']と$ _SESSSION ['admin']があります。 session_start();間違いなく最上位に置くべきです+単純なif文を書いてユーザまたは管理者をチェックしてください。

    • $ fail = false;ヘッダー( "Location:index.php?success")ステートメントの前に挿入します。
    関連する問題