2016-08-01 8 views
1

私はこの小さなプライベート「ニッチ」サイト用の非常にシンプルなログイン/ログアウトスクリプトを用意しています。「単純な」ログイン/ログアウトPHPスクリプトで苦しんでいる日

session_start(); 

// Array with users and passwords 
$lgns = array(
'firstuser' => '5d0a158df212de401a9509a88a8d9f96b060f6c5', 
'seconduser' => 'f8a913721596fffbf18a4777e6f163316154e6e5', 
'thirduser' => 'f8a913721596fffbf18a4777e6f163316154e6e5', 
); 

$user = isset($_POST['username']) ? $_POST['username'] : ''; 
$passu = isset($_POST['password']) ? $_POST['password'] : ''; 
$pass = sha1($passu); 

// Check if credentials are valid 
// If not... 
if(!isset($lgns[$user]) or $lgns[$user] != $pass) 
{ 
    // Check if session is valid 
    // If not... 
    if (!(isset($_SESSION['user']) && $_SESSION['user'] != '')) 
    { 
     echo "Wrong creds, no session; redirecting..."; 
    } 
    else 
    { 
     // If credentials are not valid but there IS session 
     echo "Wrong creds, but there IS session, so stay."; 
    } 

} 
// If credentials are valid, set session. 
else 
{ 
    echo "Correct credentials"; 
    $sessionUser = $_POST['username']; 
    $_SESSION["user"] = $sessionUser; 
} 

これは、別のPHPファイルにログアウトスクリプトです:

session_start(); 

unset($_SESSION["user"]); 
session_destroy(); 
header("Location: ../index.php"); 

問題は次のとおりです。どんなに私がしようと何を、私は「間違ったcredsをを得続けるませんが、セッションがありますので、ご利用いただけます。 "メッセージ。私はセッションを正しくチェックしていないのか、セッションを正しく終了していないのか分かりません。

私はこれを数日間探して苦労してきました。私は愚かに感じ始めています。私は前にこの仕事を作った!だから私は尋ねなければならなかった。前もって感謝します。

+0

はに 'すべての変数(' $のLGN [$ユーザー] '、' $のpass'と '$ _SESSION [ 'ログイン'])をエコーそれらがあなたが期待しているものであることを確認してください。マニュアルの[example](http://php.net/manual/en/function.session-destroy.php)を使ってセッションを破壊してください。 –

+0

わかりやすくするために、コードを追加しました。 $ _SESSION ['user']の$ _SESSION ['login']が変更されましたが、問題はそのまま残ります。ユーザーアレイ、ログインフォーム、およびユーザー/パスワードの確認は意図どおりに機能します。 –

+0

あなたはそれのバイブルを作れますか? – Sampad

答えて

0

以下のコードを見てください。私はそれがあなたを助けてくれることを願っています!

<html> 
    <head> 
    </head> 
     <title>Quiz</title> 
      <body> 
       <center>Log In Page</center> 
       <form action="" method='POST'> 
       Email ID : -<input name="email" type="text"><br/><br/> 
       Password : -&nbsp; <input name="password" type="text"><br/> 
       <input type='submit' value="Log In" name="login"> 
       </form> 
<?php 
    $con = mysqli_connect("localhost","root","","Database_name"); 
    if(isset($_POST['login'])){ 
    $login=mysqli_real_escape_string($con,$_POST['email']); 
    $pass=mysqli_real_escape_string($con,$_POST['password']); 
    $conv_md_pass=md5($pass); 
    echo "$conv_md_pass"; 
    $select_user="SELECT * FROM mst_user where email='".$login."' AND pass='".$conv_md_pass."'"; 
    $run_user=mysqli_query($con,$select_user); 
    $check_user=mysqli_num_rows($run_user); 
    echo "/$check_user"; 
    if($check_user>0) 
    { 
     echo "Successfully logged in"; 



    } 
    else 
    { 
     echo "Wrong username and password"; 
    } 

} 

?> 
</body> 
</html> 

サインアウト

<?php 
session_start(); 
session_destroy(); 
header("Location: login.php"); 
?> 
+0

ありがとうございますが、私の質問を読んでもらえませんか?あなたのスクリプトはセッションを利用せず、それが私の質問の唯一のポイントです。ユーザーアレイ(ミニデータベース)、ログインフォーム、およびユーザー/パスワードの確認が正しく機能します。問題は、セッションを終了しても、フォームからユーザー名とパスワードを送信せずにスクリプトを実行したときにセッションが存在するとスクリプトは考えているということです。 "間違った信用、セッションなし、リダイレクト..."というメッセージが表示されるはずです。 –

関連する問題