イントラネット用に構築している内部Webサイトのログイン用phpフォームを作成しました。 1つのログインシステムでいくつかの異なるWebサイトを組み合わせるつもりです。私は、ユーザーがURLのいずれかに直接アクセスし、ログインしていない場合にログインページにリダイレクトする方法を確認したいと考えています。ユーザーがログインしているかどうかを確認する方法
ユーザー名とパスワードをCookieに記録しました。私はこれが安全ではないことを知っていますが、これも企業のイントラネットの社内Webサイトです。だから私は多くのセキュリティを必要としません。ログインシステムは、各ユーザーが何をしているのかを追跡するだけです。
これは私のログインコードですが、ユーザーがログインしているかどうかを確認する方法を理解する必要があります。
//get info from login form
if(isset($_POST['login'])) {
$username = $_POST['username'];
$password = $_POST['password'];
$rememberme = $_POST['rememberme'];
$username = mysqli_real_escape_string($connection, $username);
$password = mysqli_real_escape_string($connection, $password);
//query users table
$query = "SELECT * FROM users WHERE username = '{$username}' ";
$select_user_query = mysqli_query($connection, $query);
if(!$select_user_query) {
die("Query failed" . mysqli_error($connection));
}
//loop through user info and assigning to variables
while($row = mysqli_fetch_array($select_user_query)) {
$db_id = $row['user_id'];
$db_username = $row['username'];
$db_password = $row['user_password'];
$db_firstname = $row['user_firstname'];
$db_lastname = $row['user_lastname'];
$db_role = $row['user_role'];
}
//validate username and password
if($username === $db_username && $password === $db_password) {
//create cookie to remember user
if(isset($rememberme)) {
//set cookie to last one year
setcookie('username', $_POST['username'], time()+60*60*24*365, '/', 'localhost');
setcookie('password', md5($_POST['user_password']), time()+60*60*24*365, '/', 'localhost');
} else {
//cookie expires when browser closes
setcookie('username', $_POST['username'], false, '/', 'localhost');
setcookie('password', md5($_POST['user_password']), false, '/', 'localhost');
}
//if user exists send to dashboard
$_SESSION['username'] = $db_username;
$_SESSION['user_firstname'] = $db_firstname;
$_SESSION['user_lastname'] = $db_lastname;
$_SESSION['user_role'] = $db_role;
header("Location: ../dashboard.php ");
} else {
header("Location: ../index.php");
}
}
あなたは2分以上毎にユーザーIDでajax呼び出しを行うことができます。ユーザーをテキストファイルに保存します。アヤックスが止まったら、ユーザーはもうアクティブではないことを知ってください –
@RoljhonどうすればDBでそれを行うことができますか?私はまだ少しPHPとmysqlの新しいです – JBaldwin
この質問を見て、あなたの質問に答えるかどうかを参照してください。私はあなたがしたいことが100%であるかどうかは分かりませんが、それは近いかもしれません。 http://stackoverflow.com/questions/31031344/php-how-to-check-if-user-is-already-logged-in-and-otherwise-redirect-to-login-p – lostInTheTetons