1. 식별과 인증 동시에 하는 방식
$sql = "SELECT * FROM user WHERE user_name='$user_name' and user_password='$user_password'";
$result = mysqli_query($conn, $sql);
$mb = mysqli_fetch_assoc($result);
if (!$mb['user_name']) {
echo "<script>alert('로그인 실패!');</script>";
exit;
}
로그인을 할때 SQL문에 AND 구문을 이용해 유저 아이디와 유저 비밀번호를 동시에 처리하는 방식이다.
인증을 할때 코드가 가장 간결 하지만 많이 쓰이지 않는 방식이다.
2. 식별과 인증 분리하는 방식
$sql = "SELECT * FROM user WHERE user_name='$user_name'";
$result = mysqli_query($conn, $sql);
$mb = mysqli_fetch_assoc($result);
if (!$mb['user_name'] || !($user_password == $mb["user_password"])) {
echo "<script>alert('로그인 실패!')</script>";
exit;
}
로그인을 할 때 유저의 아이디로 유저를 식별하고
로그인 폼에서 받은 패스워드와 SQL에서 가져온 패스워드를 서로 비교해서 유저를 인증하는 방식이다.
3. 식별과 인증 동시에 하는 방식 (with Hash)
$sql = "SELECT * FROM user WHERE user_name='$user_name' and user_password=md5('$user_password')";
$result = mysqli_query($conn, $sql);
$mb = mysqli_fetch_assoc($result);
if (!$mb['user_name']) {
echo "<script>alert('로그인 실패!');</script>";
exit;
}
위에 식별과 인증을 동시에 하는 방식과 같지만 md5라는 SQL에서의 해쉬 함수를 사용하여 비밀번호를 임호화하여 비교하는 방식이다.
4. 식별과 인증 분리하는 방식 (with Hash)
$sql = "SELECT * FROM user WHERE user_name='$user_name'";
$result = mysqli_query($conn, $sql);
$mb = mysqli_fetch_assoc($result);
if (!$mb['user_name'] || !(md5($user_password) == $mb["user_password"])) {
echo "<script>alert('로그인 실패!');</script>";
exit;
}
위에 식별과 인증을 분리하는 방식과 같지만 PHP에서의 md5 해쉬 함수를 사용하여 비밀번호를 암호화하여 비교히는 방식이다.
5. 식별과 인증 동시에 하는 방식 (with 개행)
$sql = "SELECT * FROM user WHERE user_name='$user_name' and \n user_password='$user_password'";
$result = mysqli_query($conn, $sql);
$mb = mysqli_fetch_assoc($result);
if (!$mb['user_name']) {
echo "<script>alert('로그인 실패!');</script>";
exit;
}
위에 식별과 인증을 동시에 하는 방식과 같지만 SQL에 구문에 "\n"이라는 개행 문자를 삽입하는 방식이다.
여기서 개행 문자를 삽입하는 이유는 회사에서 SQL구문을 사용할 때 SQL문이 많이 길어지는 경우에 가독성을 높이 위함이다.
'웹 > PHP' 카테고리의 다른 글
PHP에서 MYSQL연결 시 한글 깨질 때 (0) | 2022.11.03 |
---|---|
PHP SQL 관련 명령어 (0) | 2022.10.19 |
댓글