php-login.net のログイン スクリプトを変更して、より安全にしようとしています。この特定のログイン スクリプトには、ユーザーのログイン時に Cookie 変数とセッション変数の両方を設定するログイン クラスがあります。
/**
* write user data into PHP SESSION [a file on your server]
*/
$_SESSION['user_name'] = $result_row->user_name;
$_SESSION['user_email'] = $result_row->user_email;
$_SESSION['user_logged_in'] = 1;
/**
* write user data into COOKIE [a file in user's browser]
*/
setcookie("user_name", $result_row->user_name, time() + (3600*24*100));
setcookie("user_email", $result_row->user_email, time() + (3600*24*100));
$this->user_is_logged_in = true;
残念なことに、ユーザーがアクセスするページでは、そのページにアクセスしたときにユーザーがログインしていることを確認するチェックを誰も書きませんでした。そのため、URL を直接入力するだけであれば、ログインする必要はありません。
ユーザーがログインしたことを確認する最善の方法を知りたいです。現在、これを使用していますが、冗長かどうかはわかりません (つまり、Cookie 変数は常にセッション変数と等しいので、チェックしても意味がありません)。両方?) 任意の入力が役に立ちます。
session_start();
if(!(isset($_COOKIE['user_email']) &&
isset($_SESSION['user_email']) &&
($_COOKIE['user_email']===$_SESSION['user_email']) &&
isset($_COOKIE['user_name']) &&
isset($_SESSION['user_name']) &&
($_COOKIE['user_name']===$_SESSION['user_name']) &&
isset($login) &&
$login->isUserLoggedIn())){
header("location:../../index.php");
exit;
}
(フォーマットが不十分なコードで申し訳ありません。このサイトのテキストフォーマットのニュアンスをまだ理解しようとしています)