2017-03-24 9 views
0

"username"と "password"が一致するとセッションを開始し、インデックスページにリダイレクトする単純な "checklogin"ファイルに送信するログインフォームがあります。インデックスページでは、セッションIDが一致しなくなった場合に、ログインフォームページにリダイレクトする機能があります。

インデックスページでecho $_SESSION['sid'];を実行しましたが、session_idが正常に実行されたようです。ただし、ページをリロードすると、$_SESSION['sid']は設定されておらず、値は割り当てられなくなりました。ログインページにリダイレクトされます。

以下は私のコードです。どんな援助も感謝します

FILE 1 - checklogin.php

<?php 
session_start(); 
$uid = username; 
$pw = password; 
if (($uid == 'username' and $pw == 'password')) 
    { 
     $_SESSION['sid']=session_id(); 
     header("location:index.php"); 
     exit(); 
    } 
?> 

FILE 2 - index.phpの

<?php 
session_start(); 
if ($_SESSION['sid'] !== session_id()) { 
header("location:login.php"); 
} 
?> 

ADDITIONAL INFO: サーバはPHP 5.4を実行しています。しかし、XAMPP(PHP 7)経由でlocalhost上で実行するとうまく動作します。回避策はありますか?

+0

はあなたのインデックスページに破壊したセッションを持っているのですか?それを取り除く。 – shazyriver

+0

私はsession_destroy()を持っていません。私のサイトのどこにでも。 @shazyriver –

+0

セッションIDを更新するたびに、開始時にセッションが開始されるため、IDが変更されます。他の変数をチェックしてください。 – shazyriver

答えて

0

FILE 1 - checklogin.php

session_start(); 
$uid = username; 
$pw = password; 
if (($uid == 'username' and $pw == 'password')) 
{ 
    $_SESSION['login_status'] = 'logged_in'; 
    header("location:index.php"); 
    exit(); 
} 

FILE 2 - index.phpの

session_start(); 
if($_SESSION['login_status'] != 'logged_in') 
{ 
    header("location:login.php"); 
} 
+0

@shazriverいいえ運がいいです。この問題はおそらく価値そのものとは関係がありません。私はそれが実際にサーバーの互換性にまで下がっているのだろうかと思います。参照してください。 –

+0

私もこの設定を持っています。しかしセッションは私のためにうまくいく。 – shazyriver

関連する問題