1. signup.php

<!DOCTYPE html>
<?php session_start(); ?>
<html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Join</title>
        <script type="text/javascript" src="./checkid.js"></script>
        <script type="text/javascript" src="./decide.js"></script>
        <script type="text/javascript" src="./change.js"></script>
        <script type="text/javascript" src="./address.js"></script>// 각 함수를 불러오는 코드

    </head>
    <body>
        <h2>SignUp</h2>
        <?php if(!isset($_SESSION['user_id']) || !isset($_SESSION['user_name'])) { ?>
        <form method="post" action="signup_ok.php" autocomplete="off">
            <p>이름: <input type="text" name="signup_name" required></p>
            <p>아이디: <input type="text" name="signup_id" id="uid" required></p>
                <input type="hidden" name="decide_id" id="decide_id">
                 <p><span id="decide" style='color:red;'>ID 중복 여부를 확인해주세요.</span>
                <input type="button" id="check_button" value="ID 중복 검사" onclick="checkid();"></p>
            <p>비밀번호: <input type="password" name="signup_pw" required></p>
                <p>비밀번호 확인: <input type="password" name="signup_pw2" required></p>
                <p><div class=subject>주소</div><br>
        <input class=textform type="text" name="sign_addr" id="addr" onclick="address();" placeholder="주소를 검색해주세요." required></p>
            <p><input type="submit" id="join_button" value="SignUp" disabled=true></p>
        </form>
        <small><a href="login.php">You have account?</a><small>
        <?php } else {
                $user_id = $_SESSION['user_id'];
                $user_name = $_SESSION['user_name'];
                echo "<p>$user_name($user_id)already Login";
                echo "<p><button onclick=\"window.location.href='home.php'\">Go to Main</button> <button onclick=\"window.location.href='logout.php'\">로그아웃</button></p>";
        } ?>
    </body>
</html>

 

2. signup_ok.php

<?php
    if (!isset($_POST['signup_name']) || !isset($_POST['decide_id']) || !isset($_POST['signup_pw'])) {
        header("Content-type: text/html; charset=UTF-8");
        echo "<script>alert('check the content!!')";
        echo "window.location.replace('signup.php');</script>";
        exit;
    }
    $join_name = $_POST['signup_name'];
    $join_id = $_POST['decide_id'];// POST값을 decide_id로 변경한다
    $join_pw = $_POST['signup_pw'];
    $address = $_POST['sign_addr'];
    $conn= mysqli_connect('localhost', 'admin', 'kisec123', 'MEMBER');
    //신규 회원정보 삽입 + ID 재정렬
     $multi = "
        INSERT INTO login (name, id, pw, address) VALUES ('$join_name', '$join_id', '$join_pw', '$address')";
    $res = $conn -> query($multi);
    if($res){
        echo "<script>alert('회원가입이 완료되었습니다.');";
        echo "window.location.replace('login.php');</script>";
        exit;
    }
    else{
       echo "<script>alert('저장에 문제가 생겼습니다. 관리자에게 문의해주세요.');</script>";
    }
    mysqli_close($conn);
?>
<meta http-equiv="refresh" content="0;url=main.php">

3. checkid.js

function checkid(){
        var userid = document.getElementById("uid").value;
        if(userid)  //userid로 받음
        {
                url = "check.php?userid="+userid;
                window.open(url,"checkid","width=400,height=200");
        } else {
                alert("아이디를 입력하세요.");
        }
}

 

4. check.php

1) ID 중복검사를 처리하는 코드

<?php
    $conn= mysqli_connect('localhost', 'admin', 'kisec123', 'MEMBER');
    $uid= $_GET["userid"];  //GET으로 넘긴 userid
    $sql= "SELECT * FROM login where id='$uid'";
    $result = mysqli_fetch_array(mysqli_query($conn, $sql));

    if(!$result){
        echo "<span style='color:blue;'>$uid</span> 는 사용 가능한 아이디입니다.";
       ?><p><input type=button value="이 ID 사용" onclick="opener.parent.decide(); window.close();"></p>

    <?php
    } else {
        echo "<span style='color:red;'>$uid</span> 는 중복된 아이디입니다.";
        ?><p><input type=button value="다른 ID 사용" onclick="opener.parent.change(); window.close()"></p>
    <?php
    }
?>

 

5. decide.js

1) [이 ID 사용]을 클릭했을 때 실행되는 코드

function decide(){
        document.getElementById("decide").innerHTML = "<span style='color:red;'>ID 중복 여부를 확인해주세요.</span>"
        document.getElementById("decide_id").value = document.getElementById("uid").value
        document.getElementById("uid").disabled = true
        document.getElementById("join_button").disabled = false
        document.getElementById("check_button").value = "다른 ID로 변경"
        document.getElementById("check_button").setAttribute("onclick", "change()")
}

 

6. change.js

1) [다른 ID 사용]을 클릭했을 때 실행되는 코드

function change(){
        document.getElementById("decide").innerHTML = "<span style='color:red;'>ID 중복 여부를 확인해주세요.</span>"
        document.getElementById("uid").disabled = false
        document.getElementById("uid").value = ""
        document.getElementById("join_button").disabled = true
        document.getElementById("check_button").value = "ID 중복 검사"
        document.getElementById("check_button").setAttribute("onclick", "checkid()")
}

 

 

'Web Development' 카테고리의 다른 글

로그인 case  (0) 2022.10.24
로그인/로그아웃  (0) 2022.10.20

1. 식별, 인증 동시

<?php
    $user_id = $_POST['id'];
    $user_pw = $_POST['pw'];
    $conn = mysqli_connect('localhost', 'admin', 'kisec123', 'MEMBER');
    $sql = "SELECT * FROM login where id='$user_id' and pw='$user_pw'"; //id와pw를 동시에 가져와 구문을 실행한다
    $res = mysqli_fetch_array(mysqli_query($conn,$sql));
    if($res){
        session_start();
        $_SESSION['user_id'] = $res['id'];
        $_SESSION['user_name'] = $res['name'];
        echo "<script>alert('Login Success!!');";
        echo "window.location.replace('home.php');</script>";
        exit;
    }
    else{
       echo "<script>alert('retry!!');";
       echo "window.location.replace('login2.php');</script>";
    }
?>

 

2. 식별, 인증 분리

<?php
    $user_id = $_POST['user_id'];
    $user_pw = $_POST['user_pw'];
    $conn= mysqli_connect('localhost', 'admin', 'kisec123', 'MEMBER');
    $sql = "SELECT pw FROM login where id='$user_id'";
    $res = mysqli_fetch_array(mysqli_query($conn,$sql));
    if($res['pw'] == $user_pw){
        session_start();
        $_SESSION['user_id'] = $res['id'];
        $_SESSION['user_name'] = $res['name'];
        echo "<script>alert('로그인에 성공했습니다!');";
        echo "window.location.replace('home.php');</script>";
        exit;
    }
    else{
       echo "<script>alert('아이디 혹은 비밀번호가 잘못되었습니다.');";
       echo "window.location.replace('login.php');</script>";
    }
?>

 

3. 식별, 인증 동시(해시)

<?php
    $user_id = $_POST['user_id'];
    $user_pw = $_POST['user_pw'];
    $conn = mysqli_connect('localhost', 'admin', 'kisec123', 'MEMBER');
    $sql = "SELECT * FROM login where id='$user_id' and pw=md5('$user_pw')"; // 비밀번호만 md5처리 해주면 된다(DB에 pw값도 md5로 받을 수 있게 해줘야 한다)
    $res = mysqli_fetch_array(mysqli_query($conn,$sql));
    if($res){
        session_start();
        $_SESSION['user_id'] = $res['id'];
        $_SESSION['user_name'] = $res['name'];
        echo "<script>alert('Welcome!!');";
        echo "window.location.replace('home.php');</script>";
        exit;
    }
    else{
       echo "<script>alert('invalid account!!');";
       echo "window.location.replace('login3.php');</script>";
    }
?>

 

4. 식별, 인증 분리(해시)

<?php
    $user_id = $_POST['user_id'];
    $user_pw = $_POST['user_pw'];
    $conn= mysqli_connect('localhost', 'admin', 'kisec123', 'MEMBER');
    $sql = "SELECT * FROM login where id='$user_id'";
    $res = mysqli_fetch_array(mysqli_query($conn,$sql));
    if($res['pw'] == md5($user_pw)){
        session_start();
        $_SESSION['user_id'] = $res['id'];
        $_SESSION['user_name'] = $res['name'];
        echo "<script>alert('Welcome!!');";
        echo "window.location.replace('home.php');</script>";
        exit;
    }
    else{
       echo "<script>alert('invalid account!!');";
       echo "window.location.replace('login4.php');</script>";
    }
?>

 

5. 식별, 인증 개행

<?php
    $user_id = $_POST['user_id'];
    $user_pw = $_POST['user_pw'];
    $conn = mysqli_connect('localhost', 'admin', 'kisec123', 'MEMBER');
    $sql = "SELECT * FROM login where id='$user_id' and
            pw='$user_pw'";
    $res = mysqli_fetch_array(mysqli_query($conn,$sql));
    if($res){
        session_start();
        $_SESSION['user_id'] = $res['id'];
        $_SESSION['user_name'] = $res['name'];
        echo "<script>alert('Welcome!!');";
        echo "window.location.replace('home.php');</script>";
        exit;
    }
    else{
       echo "<script>alert('incorrect id or password');";
       echo "window.location.replace('login5.php');</script>";
    }
?>

 

'Web Development' 카테고리의 다른 글

회원가입 / ID 중복확인  (0) 2022.11.04
로그인/로그아웃  (0) 2022.10.20

1. login.php

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link href="https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;700&display=swap" rel="stylesheet">
    <script src="https://kit.fontawesome.com/53a8c415f1.js" crossorigin="anonymous"></script>
    <link rel="stylesheet" href="./css/login.css">
</head>
<body>
        <form method="post" action="/login_check.php">
    <div class="wrap">
        <div class="login">
            <h2>Log-in</h2>
            <div class="login_sns">
            <li><a href=""><i class="fab fa-instagram"></i></a></li>
            <li><a href=""><i class="fab fa-facebook-f"></i></a></li>
            <li><a href=""><i class="fab fa-twitter"></i></a></li>
            </div>
            <div class="id">
                <h4>ID</h4>
                <input type="text" name="id" id="" placeholder="id">
            </div>
            <div class="pw">
                <h4>Password</h4>
                <input type="password" name="pw" id="" placeholder="Password">
            </div>
            <div class="login_etc">
                <div class="checkbox">
                <input type="checkbox" name="" id=""> Remember Me?
                </div>
                <div class="Signup">
                <a href="">Signup</a>
            </div>
            </div>
            <div class="button">
                    <button type="submit" value="submit">login</button>
            </div>
            </form>
        </div>
    </div>
</body>
</html>


2. login.css

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  font-family: "Noto Sans KR", sans-serif;
}
a {
  text-decoration: none;
  color: black;
}

li {
  list-style: none;
}

.wrap {
  width: 100%;
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(0, 0, 0, 0.1);
}

.login {
  width: 30%;
  height: 600px;
  background: white;
  border-radius: 20px;
  display: flex;
  justify-content: center;
  align-items: center;
  flex-direction: column;
}

h2 {
  color: tomato;
  font-size: 2em;
}
.login_sns {
  padding: 20px;
  display: flex;
}

.login_sns li {
  padding: 0px 15px;
}

.login_sns a {
  width: 50px;
  height: 50px;
  display: flex;
  align-items: center;

justify-content: center;
  padding: 10px;
  border-radius: 50px;
  background: white;
  font-size: 20px;
  box-shadow: 3px 3px 3px rgba(0, 0, 0, 0.4), -3px -3px 5px rgba(0, 0, 0, 0.1);
}

.id {
  margin-top: 20px;
  width: 80%;
}

.id input {
  width: 100%;
  height: 50px;
  border-radius: 30px;
  margin-top: 10px;
  padding: 0px 20px;
  border: 1px solid lightgray;
  outline: none;
}

.pw {
  margin-top: 20px;
  width: 80%;
}

.pw input {
  width: 100%;
  height: 50px;
  border-radius: 30px;
  margin-top: 10px;
  padding: 0px 20px;
  border: 1px solid lightgray;
  outline: none;
}

.login_etc {
  padding: 10px;
  width: 80%;
  font-size: 14px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-weight: bold;
}

.button {
  margin-top: 50px;
  width: 80%;
}
.button button {
  width: 100%;
  height: 50px;
  border: 0;
  outline: none;
  border-radius: 40px;
  background: linear-gradient(to left, rgb(255, 77, 46), rgb(255, 155, 47));
  color: white;
  font-size: 1.2em;
  letter-spacing: 2px;
}


3. home.php(메인페이지)

<html>
<head>
<title>Home Page</title>
<link rel="stylesheet" href="/css/home.css">
</head>
<body>
<nav class="navbar navbar-expand-lg navbar-dark bg-primary">
  <div class="container-fluid">
    <a class="navbar-brand" href="#">Home</a>
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarColor01" aria-controls="navbarColor01" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarColor01">
      <ul class="navbar-nav me-auto">
        <li class="nav-item">
          <a class="nav-link active" href="#">My Page
            <span class="visually-hidden">(current)</span>
          </a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Board</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">FAQ</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">About</a>
        </li>
        <button type="button" class="btn btn-primary btn-sm" onClick="location.href='logout.php'">Log Out</button>
      </ul>
      <form class="d-flex">
        <input class="form-control me-sm-2" type="text" placeholder="Search">
        <button class="btn btn-secondary my-2 my-sm-0" type="submit">Search</button>
      </form>
    </div>
  </div>
</nav>
<h1 align="center">Welcome !!</h1>
</body>
</html>


4.home.css

css는 https://bootswatch.com/ 사이트에서 원하는 템플릿을 다운받아 사용하면 쉽게 디자인 할 수 있다


5. logout.php

<?php
session_start();
session_destroy();
?>
<script>
alert("Log Out!!");
location.replace('index.php');
</script>


6. login_check.php

login.php에서 데이터를 받아 DB를 대조해 로그인이 이루어질수 있도록 해주는 코드이다

 

<?php
session_start();
$id=$_POST['id'];
$pw=$_POST['pw'];
$mysqli=mysqli_connect("localhost", "계정명", "비밀번호", "DB명");

$check="SELECT * FROM login WHERE id='$id'";
$result=$mysqli->query($check);
if($result->num_rows==1){
        $row=$result->fetch_array(MYSQLI_ASSOC);
        if($row['pw']==$pw){
                $_SESSION['id']=$id;
                if(isset($_SESSION['id']))
                {
                        echo "<script>alert('Login Success!!');</script>";
                        echo "<script>location.href='home.php';</script>";
                }
                else{
                        echo "Session Save Failed";
                }
        }
        else{
                echo "<script> alert ('Wrong id or Password'); history.back(); </script>";
        }
}
else{
        echo "Wrong id or pw";
}
?>


7. DB 생성

localhost/phpmyadmin으로 접속해 DB를 생성한다

CREATE DATABASE MEMBER;//DB 생성

 

CREATE TABLE login (

id varchar(20), primary key,

pw varchar(20));// 테이블 생성

 

INSERT INTO login VALUES('john', '1234');//데이터 생성


8. 실제 화면

1) login.php

본인은 로그인 페이지를 인덱스(index.php)로 바꿔서 저장했다

 

로그인 성공 시 성공했다는 알림이 나타난 뒤 다음 메인 페이지로 넘어간다

 

메인페이지 모습

 

id 또는 비밀번호가 틀릴경우 위와같은 알림이뜨면서 다시 로그인 페이지로 돌아간다

 

네비게이션바에 로그아웃 버튼을 클릭하면 로그아웃이라는 알림과함께 로그인페이지로 돌아간다

 

 

'Web Development' 카테고리의 다른 글

회원가입 / ID 중복확인  (0) 2022.11.04
로그인 case  (0) 2022.10.24

+ Recent posts