인트라넷 용으로 구축하려는 내부 웹 사이트에 대한 로그인 php 양식을 만들었습니다. 하나의 로그인 시스템으로 몇 가지 다른 웹 사이트를 결합하려고합니다. 나는 사용자가 URL 중 하나를 직접 방문 할 경우 사용자가 로그인했는지 여부를 확인할 수있는 방법을보고 싶습니다. 로그인하지 않은 상태에서 로그인 페이지로 리디렉션 한 다음 처음 페이지로 다시 리디렉션하면 로그인 할 수 있습니다.사용자가 로그인했는지 확인하는 방법
사용자 이름과 암호를 쿠키에 기록했습니다. 나는 이것이 안전하지 않다는 것을 안다.하지만 다시 이것은 회사 인트라넷에있는 사내 웹 사이트 일 뿐이다. 그래서 나는 많은 보안을 필요로하지 않는다. 로그인 시스템은 각 사용자가 수행중인 작업을 추적하는 것입니다.
내 로그인 코드가 있지만 이제 사용자가 별도의 웹 페이지에 로그인했는지 여부를 확인하는 방법을 알아야합니다.
//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 분 이상마다 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