본문 바로가기
Project/project 1 - JH community

[php] 로그인 페이지 케이스별 생성

by 끊임없는정진 2022. 10. 24.

▶ 식별과 인증이 동시에 이루어지는 경우

핵심은 SELECT 문에서 id와 pw를 같이 조회하고 해당 데이터가 없으면 로그인을 실패하게끔 만드는 것.

더보기

 

index1.php

<?php
include("dbconn.php");

$jj_id = trim($_POST['jj_id']);
$jj_password  = trim($_POST['jj_password']);

if (!$jj_id || !$jj_password) {
echo "<script>alert('No blank or other chars');</script>";
        echo "<script>location.replace('./index.php');</script>";
exit;
}

$sql = " SELECT * FROM member WHERE jj_id = '$jj_id' and jj_password = '$jj_password' ";
$result = mysqli_query($conn, $sql);
$jj = mysqli_fetch_array($result);

if (!$jj['jj_id'] || !$jj['jj_password']) {
echo "<script>alert('Unassigned ID or Wrong Password, please check again!');</script>";
echo "<script>location.replace('index1.php');</script>";
exit;
}

$_SESSION['ss_jj_id'] = $jj_id;

mysqli_close($conn);

if(isset($_SESSION['ss_jj_id'])){
        echo "<script>alert('Login success!');</script>";
        echo "<script>location.replace('after_login.php');</script>";

 

 

▶ 식별과 인증이 따로 이루어지는 경우

핵심은 id값을 받아와서 쿼리문으로 pw값을 불러오는 것

더보기

 

index2.php

<?php
include("dbconn.php");

$jj_id = trim($_POST['jj_id']);
$jj_password  = trim($_POST['jj_password']);

if (!$jj_id || !$jj_password) {
echo "<script>alert('No blank or other chars');</script>";
        echo "<script>location.replace('./index.php');</script>";
exit;
}

$sql = " SELECT jj_password FROM member WHERE jj_id = '$jj_id' ";
$result = mysqli_query($conn, $sql);
$jj_pw = mysqli_fetch_array($result);

if (!($jj_pw[0] === $jj_password)) {
        echo "<script>alert('unassigned ID or wrong password, please check again!');</script>";
        echo "<script>location.replace('index2.php');</script>";
        exit;
}

$_SESSION['ss_jj_id'] = $jj_id;

mysqli_close($conn);

if(isset($_SESSION['ss_jj_id'])){
        echo "<script>alert('Login success!');</script>";
        echo "<script>location.replace('after_login.php');</script>";
}



식별과 인증이 동시에 이루어지는 경우(with Hash)

핵심은 비밀번호의 해쉬과정을 거치도록 하는 것.

더보기

 

index3.php

<?php
include("dbconn.php");

$jj_id = trim($_POST['jj_id']);
$jj_password  = trim($_POST['jj_password']);

if (!$jj_id || !$jj_password) {
echo "<script>alert('No blank or other chars');</script>";
        echo "<script>location.replace('./index.php');</script>";
exit;
}

$md5_password = md5($jj_password);
$sql = " SELECT * FROM md5member WHERE jj_id = '$jj_id' and jj_password = '$md5_password' ";
$result = mysqli_query($conn, $sql);
$jj = mysqli_fetch_array($result);

if (!$jj['jj_id'] || !$jj['jj_password']) {
echo "<script>alert('Unassigned ID or Wrong Password, please check again!');</script>";
echo "<script>location.replace('index3.php');</script>";
exit;
}

$_SESSION['ss_jj_id'] = $jj_id;

mysqli_close($conn);

if(isset($_SESSION['ss_jj_id'])){
        echo "<script>alert('Login success!');</script>";
        echo "<script>location.replace('after_login.php');</script>";
}

 

 

▶ 식별과 인증이 따로 이루어지는 경우(with Hash)

핵심은 식별 인증 과정을 따로하되, 비밀번호의 해쉬과정을 거치도록 하는 것.

더보기

 

index4.php

<?php
include("dbconn.php");

$jj_id = trim($_POST['jj_id']);
$jj_password  = trim($_POST['jj_password']);

if (!$jj_id || !$jj_password) {
echo "<script>alert('No blank or other chars');</script>";
        echo "<script>location.replace('./index.php');</script>";
exit;
}

$md5_password = md5($jj_password);

$sql = " SELECT jj_password FROM md5member WHERE jj_id = '$jj_id' ";
$result = mysqli_query($conn, $sql);
$jj_pw = mysqli_fetch_array($result);

if (!($jj_pw[0] === $md5_password)) {
        echo "<script>alert('Wrong password, please check again!');</script>";
        echo "<script>location.replace('index4.php');</script>";
        exit;
}

$_SESSION['ss_jj_id'] = $jj_id;

mysqli_close($conn);

if(isset($_SESSION['ss_jj_id'])){
        echo "<script>alert('Login success!');</script>";
        echo "<script>location.replace('after_login.php');</script>";
}

 

식별과 인증이 동시에 이루어지는 경우(with 개행)

SELECT문을 지정하면서 enter로 줄바꿈을 해줘서 개행처리가 되게끔 하는 것이 포인트

더보기

 

index5.php

<?php
include("dbconn.php");

$jj_id = trim($_POST['jj_id']);
$jj_password  = trim($_POST['jj_password']);

if (!$jj_id || !$jj_password) {
echo "<script>alert('No blank or other chars');</script>";
        echo "<script>location.replace('./index.php');</script>";
exit;
}

$sql = " SELECT * FROM member WHERE jj_id = '$jj_id'
        and jj_password = '$jj_password' ";
$result = mysqli_query($conn, $sql);
$jj = mysqli_fetch_array($result);

if (!$jj['jj_id'] || !$jj['jj_password']) {
echo "<script>alert('Unassigned ID or Wrong Password, please check again!');</script>";
echo "<script>location.replace('index5.php');</script>";
exit;
}

$_SESSION['ss_jj_id'] = $jj_id;

mysqli_close($conn);

if(isset($_SESSION['ss_jj_id'])){
        echo "<script>alert('Login success!');</script>";
        echo "<script>location.replace('after_login.php');</script>";
}

댓글