본문 바로가기
웹/PHP

PHP에서의 인증과 식별 방식

by 매이나 2022. 10. 22.

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

댓글