繰り返しの質問で申し訳ありません。このフォーラムでいくつか見たことがありますが、どれもうまくいきませんでした...
私はPHPセッションを使用して基本的なログインを構築していますが、これは初めてです...
login.php は HTML ログイン フォームを検証し、変数を設定してセッションを開始します$_SESSION['login']
。$_SESSION['id]
次に、有効なログインを必要とする各ページはrequire 'session.php';
、変数をチェックし、$_SESSION['valid']
適切なログイン変数なしでユーザーをリダイレクトします。問題は、設定したセッション変数のどちらもログアウトすると、設定が解除されないことです。
現在、私の logout.php ファイルは、ほぼすべてのメソッドを使用して、オンラインで見つけることができた変数を破棄しますが、実際にそれを行うものはありません。
そのため、ログアウトしても「プライベート」ページにアクセスできます。
また、注:セッション名を付けて試してみました例:session_start();
うまくいかなかったので、今は使用していますsession_start("user");
また、注意してください:私はクッキーを使用していません。
私が言及したファイルは次のとおりです。
login.php
$email=$_POST['email-log']; $pass=$_POST['password-log'];
$i=-1;
do
{$i++; $path="users/".$i.".json";
$file= file_get_contents($path);
$x=json_decode($file,true);
} while($x['email']!=$email);
$id=$i;
$truepass=$x['pass'];
$errors=0;
$hash=hash('sha256',$pass);
if($hash != $truepass){$errors=$errors+1;}
if($errors==0){
session_start("user");
$_SESSION['login']="valid";
$_SESSION['id']=$id;
header('Location: loginlanding.php');}
else{header('Location: front.php?error=y');}
session.php
session_start("user"); if($_SESSION['login'] !== "valid") {header('Location: front.php?needto=login');}
logout.php
unset($_SESSION); unset($_SESSION['login']); unset($_SESSION['id']); session_unset("user"); $_SESSION=array(); session_destroy("user"); header('Location: front.php?logged=out');
また、私は一般的にログインが初めてなので、セキュリティを強化するためのアドバイスも大歓迎です. より安全にすることを計画していますが、まずこの基本的な機能を稼働させる必要があります。