나의 기록, 현진록

[Web] PHP 로그인/로그아웃/회원가입 본문

Programming/Web

[Web] PHP 로그인/로그아웃/회원가입

guswlsdk 2017. 7. 11. 01:14
반응형

MySQL DB를 연동하여 HTML 및 PHP 세션을 이용하여 로그인/로그아웃/회원가입 페이지 구현  



main.php


1
2
3
4
5
6
7
8
9
10
11
12
<?php
session_start();
if(!isset($_SESSION['userid'])) //세션이 존재하지 않을 때
{
    header ('Location: ./login.html');
}
 
echo "홈(로그인 성공)";
 
echo "<a href=logout.php>로그아웃</a>";
 
?>
cs


세션 변수의 값이 없다면(=로그인 상태가 아니라면) 로그인 페이지로 이동한다.


세션 변수가 존재한다면 로그인 성공 메시지 출력과 로그아웃 링크 생성



 login.html


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<html>
<head>
    <title>login page</title>
    <meta charset="utf-8">
</head>
<body>
    <form method="post" action="/login_check.php">
        <div>
            <label for="id">ID </label>
            <input type="text" name="id"/>
        </div>
        <div>
            <label for="pw">PW </label>
            <input type="text" name="pw"/>
        </div>
        
        <div class="button">
            <button type="submit"> login </button>
        </div>
    </form>
    <button onclick="location.href='signUp.html'"> sign up </button>
</body>
</html>
cs


회원 정보가 이미 등록되어 있다면 ID, PW를 입력한 후 login 버튼 클릭 후 login_check


회원 정보가 등록되어 있지 않다면 sign up 버튼 클릭 후 회원가입 페이지로 이동



singUp.html


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<html>
<head>
    <title> Sign Up </title>
    <meta charset="utf-8">
</head>
<body>
    <form action = "./signUp.php" method="post">
        <div>
            <label for="id"> ID </label>
            <input type="text" name="id"/>
        </div>
        <div>
            <label for="pw"> PW </label>
            <input type="text" name="pw"/>
        </div>
        <div>
            <label for="pwc"> pwc </label>
            <input type="text" name="pwc"/>
        </div>
        
        <div>
            <label for="name"> Name </label>
            <input type="text" name="name"/>
        </div>
        <div>
            <label for="email"> E-mail </label>
            <input type="text" name="email"/>
        </div>
        <div class="button">
            <input type="submit" value="submit">
        </div>
    </form>
</body>
</html
cs


회원 정보 입력 후 버튼 클릭 시 signUp.php로 이동



signUp.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
$id=$_POST['id'];
$pw=$_POST['pw'];
$pwc=$_POST['pwc'];
$name=$_POST['name'];
$email=$_POST['email'];
 
if($pw!=$pwc//비밀번호와 비밀번호 확인 문자열이 맞지 않을 경우
{
    echo "비밀번호와 비밀번호 확인이 서로 다릅니다.";
    echo "<a href=signUp.html>back page</a>";
    exit();
}
if($id==NULL || $pw==NULL || $name==NULL || $email==NULL//
{
    echo "빈 칸을 모두 채워주세요";
    echo "<a href=signUp.html>back page</a>";
    exit();
}
 
$mysqli=mysqli_connect("localhost","root","123456789","test2");
 
$check="SELECT *from user_info WHERE userid='$id'";
$result=$mysqli->query($check);
if($result->num_rows==1)
{
    echo "중복된 id입니다.";
    echo "<a href=signUp.html>back page</a>";
    exit();
}
 
$signup=mysqli_query($mysqli,"INSERT INTO user_info (userid,userpw,name,email) 
VALUES ('$id','$pw','$name','$email')");
if($signup){
    echo "sign up success";
}
 
?>
cs


회원가입 시 필터


1. 비밀번호 재확인

2. 회원정보 빈 칸(공백 입력)

3. 아이디 중복 


회원가입 후 login.html에서 로그인 성공 시 login_check.php로 이동


login_check.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php
session_start();
$id=$_POST['id'];
$pw=$_POST['pw'];
$mysqli=mysqli_connect("localhost","root","비밀번호","test2");
 
$check="SELECT * FROM user_info WHERE userid='$id'";
$result=$mysqli->query($check); 
if($result->num_rows==1){
    $row=$result->fetch_array(MYSQLI_ASSOC); //하나의 열을 배열로 가져오기
    if($row['userpw']==$pw){  //MYSQLI_ASSOC 필드명으로 첨자 가능
        $_SESSION['userid']=$id;           //로그인 성공 시 세션 변수 만들기
        if(isset($_SESSION['userid']))    //세션 변수가 참일 때
        {
            header('Location: ./main.php');   //로그인 성공 시 페이지 이동
        }
        else{
            echo "세션 저장 실패";
        }            
    }
    else{
        echo "wrong id or pw";
    }
}
else{
    echo "wrong id or pw";
}
?>
cs



로그인 성공 시 세션 변수 생성 후 main.php 이동


main.php에서 로그인을 성공했을 때 로그아웃 링크가 생성된다.


logout.php


1
2
3
4
5
6
7
<?php
session_start();
$res=session_destroy(); //모든 세션 변수 지우기
if($res){
    header('Location: ./main.php'); // 로그아웃 성공 시 로그인 페이지로 이동
}
?>
cs




반응형