>  기사  >  백엔드 개발  >  PHP에서 사용자 로그인 동작을 확인하는 방법

PHP에서 사용자 로그인 동작을 확인하는 방법

PHPz
PHPz원래의
2023-03-31 09:05:331263검색

웹사이트 개발에 있어서 로그인은 필수적인 기능입니다. 이 기사에서는 PHP에서 사용자의 로그인 동작을 확인하는 방법을 소개합니다.

1. 사용자 로그인 확인의 기본 개념
1.1 사용자 신원 인증
사용자 신원 인증은 일반적으로 사용자가 입력한 사용자 이름과 비밀번호가 시스템에 저장된 데이터와 일치하는지 확인하는 것을 말합니다. 사용자가 입력한 사용자 이름과 비밀번호에는 일반적으로 사용자 이름이 비어 있는지 또는 길이가 요구 사항을 충족하는지 여부와 같은 클라이언트(브라우저)에서 몇 가지 기본적인 확인이 필요합니다.

1.2 세션 제어
세션 제어란 사용자가 로그인에 성공한 후 웹사이트의 여러 페이지에 들어갈 때 로그인 상태를 유지할 수 있도록 몇 가지 메커니즘을 사용하는 것을 말합니다. PHP에서는 세션 기술을 통해 세션 제어가 가능합니다.

2. 사용자 로그인 확인을 위한 PHP 코드 구현
PHP에서 사용자 로그인 확인을 위한 코드 구현은 일반적으로 사용자 로그인 페이지에서 이루어지며, 사용자가 입력한 사용자 이름과 비밀번호를 승인하고 백그라운드에서 합법성을 확인합니다. 다음은 간단한 예입니다:

index.php (로그인 페이지)

<!DOCTYPE html>  
<html>  
<head>  
<meta charset="utf-8">  
<title>用户登录</title>  
</head>  
<body>  
<form action="login.php" method="post">  
<label>用户名:</label><input type="text" name="username" required><br>  
<label>密码:</label><input type="password" name="password" required><br>  
<input type="submit" value="登录">  
</form>  
</body>  
</html>

login.php (로그인 확인 페이지)

<?php  
session_start();    // 启用 session  
$username = $_POST[&#39;username&#39;];    // 获取用户输入的用户名  
$password = $_POST[&#39;password&#39;];    // 获取用户输入的密码  

if ($username == &#39;admin&#39; && $password == &#39;123456&#39;) {    // 假设 admin 为合法用户,密码为 123456  
    $_SESSION[&#39;username&#39;] = $username;    // 存储用户名到 session 中  
    header(&#39;Location: welcome.php&#39;);    // 跳转到欢迎页面  
} else {  
    echo "用户名或密码错误,请重新登录。";  
}  
?>

welcome.php (환영 페이지)

<?php  
session_start();    // 启用 session  
if (isset($_SESSION[&#39;username&#39;])) {    // 判断是否已登录  
    echo "欢迎" . $_SESSION[&#39;username&#39;] . "登录成功!";  
} else {  
    header(&#39;Location: index.php&#39;);    // 如果未登录,跳转回登录页面  
}  
?>

위 예는 사용자가 로그인 시 입력하는 경우입니다. 페이지 사용자 이름과 비밀번호를 입력한 후 login.php 페이지에 양식을 제출하면 확인됩니다. 사용자 이름과 비밀번호가 정확하면 세션에 저장되고 환영 페이지인 Welcome.php로 이동합니다. 환영 페이지에서 사용자가 이미 로그인되어 있는지 확인합니다. 로그인되어 있으면 환영 메시지가 표시될 수 있으며, 그렇지 않으면 사용자는 로그인 페이지로 다시 리디렉션됩니다.

3. PHP 확인 로그인 기술
3.1 비밀번호 보호
사용자 비밀번호가 유출되지 않도록 일반적으로 암호화하여 저장해야 합니다. PHP에서는 md5() 함수나 sha1() 함수를 사용하여 비밀번호를 암호화할 수 있습니다. 예:

$password = md5($_POST['password']);    // 将密码用 md5() 函数加密后存储

3.2 CSRF 공격 방지
CSRF(교차 사이트 요청 위조) 공격은 공격자가 사용자인 것처럼 가장하고 사용자 요청을 위조하여 서버에 요청을 보내는 것을 의미합니다. 일반적으로 CSRF 공격을 방지하려면 무작위로 생성된 토큰을 양식에 추가한 다음 백그라운드에서 유효성을 확인할 수 있습니다. 예:

index.php(로그인 페이지)

<!DOCTYPE html>  
<html>  
<head>  
<meta charset="utf-8">  
<title>用户登录</title>  
</head>  
<body>  
<form action="login.php" method="post">  
<input type="hidden" name="token" value="<?php echo uniqid(); ?>">     <!-- 添加随机 token -->
<label>用户名:</label><input type="text" name="username" required><br>  
<label>密码:</label><input type="password" name="password" required><br>  
<input type="submit" value="登录">  
</form>  
</body>  
</html>

login.php(로그인 확인 페이지)

<?php  
session_start();    // 启用 session  
$username = $_POST[&#39;username&#39;];    // 获取用户输入的用户名  
$password = $_POST[&#39;password&#39;];    // 获取用户输入的密码  

if ($_POST[&#39;token&#39;] !== $_SESSION[&#39;token&#39;]) {    // 检查 token 是否合法  
    echo "非法请求!";  
} elseif ($username == &#39;admin&#39; && $password == &#39;123456&#39;) {    // 假设 admin 为合法用户,密码为 123456  
    $_SESSION[&#39;username&#39;] = $username;    // 存储用户名到 session 中  
    header(&#39;Location: welcome.php&#39;);    // 跳转到欢迎页面  
} else {  
    echo "用户名或密码错误,请重新登录。";  
}  
?>

3.3 XSS 공격 방지
XSS(Cross-site scripting) 공격은 공격자가 특정 악성 코드를 주입하여 사용자 정보를 훔치는 것을 의미합니다. 또는 약간의 파괴를 달성합니다. XSS 공격을 방지하기 위해 htmlspecialchars() 함수를 사용하여 사용자 입력을 처리할 수 있습니다. 예:

$username = htmlspecialchars($_POST['username'], ENT_QUOTES, 'UTF-8');    // 对用户名进行处理

IV. 요약
이 기사에서는 PHP에서 사용자 로그인을 확인하는 기본 개념과 코드 구현은 물론 CSRF 및 XSS 공격을 방지하는 몇 가지 기술을 소개합니다. 실제 개발 프로세스에서는 특정 상황에 따라 해당 조정 및 최적화가 이루어져야 합니다.

위 내용은 PHP에서 사용자 로그인 동작을 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.