PHP 로그인 기능에 사용자 액세스 수준을 추가하는 방법
P粉680000555
2023-09-05 20:51:43
<p>저는 사용자가 로그인할 때 세션을 시작하고 쿠키를 생성한 다음 다음을 사용하여 사용자를 Dashboard.php로 리디렉션하는 PHP 로그인/등록 스크립트를 개발했습니다. </p>
<pre class="brush:php;toolbar:false;">//변수에서 데이터 가져오기
$emailAddress = mysqli_real_escape_string($conn,$_POST['emailAddress']);
$password = mysqli_real_escape_string($conn,$_POST['password']);
$remember = isset($_POST['rememberMe']);
if(!filter_var($emailAddress, FILTER_VALIDATE_EMAIL)) {
$error = '유효한 이메일 주소를 입력해주세요.';
}
elseif(email_exists($emailAddress,$conn)) { // 이메일 주소가 존재하는 경우
$result = mysqli_query($conn,"email = '$emailAddress'"에서 사용자의 비밀번호를 선택하세요.);
$retrievePassword = mysqli_fetch_assoc($result);
if(!password_verify($password,$retrievePassword['password'])) // 비밀번호가 일치하지 않는 경우
{
$error = '비밀번호가 정확하지 않습니다.';
} else { // 비밀번호가 정확하면 사용자 로그인
$_SESSION['email'] = $emailAddress;
if($remember == 'on') { // "사용자 로그인 유지"가 선택된 경우;
setcookie("email",$emailAddress,time()+7200) // 사용자 로그인을 2시간 동안 유지합니다.
}
header("위치: Dashboard.php");
}
} else { // 이메일이 존재하지 않는 경우
$error = '이메일 주소가 등록되지 않았습니다.';
}</pre>
<p>모든 제한된 페이지(예: Dashboard.php) 상단에는 다음이 있습니다. </p>
<pre class="brush:php;toolbar:false;">if(logged_in()) { // 사용자가 로그인한 경우 페이지 표시</pre>
<p>logged_in() 함수는 다음과 같습니다.</p>
<pre class="brush:php;toolbar:false;">functionlogged_in(){
if(isset($_SESSION['email']) || isset($_COOKIE['email'])) {
사실을 반환;
} 또 다른 {
거짓을 반환;
}
}</pre>
<p>데이터베이스에는 관리자의 경우 "1", 일반 사용자의 경우 "3"인 <code>usrUserTypeNo</code>라는 제목의 열이 있습니다.
역할에 따라 사용자에게 표시되는 콘텐츠를 결정할 수 있도록 이 사용자 유형을 세션에 어떻게 통합합니까? </p>
정확히는 아닙니다.
세 가지 다른 작업(로그인하지 않음, 일반 사용자, 관리자 사용자) 중 하나를 수행하려면 해당 상태를 테스트하고 각 상태에 대한 논리를 작성해야 합니다.
매번 데이터베이스에 액세스 수준을 요청하는 대신 세션에 액세스 수준을 저장할 수 있습니다.