Archive for Dev. (junyup2)

์ง€์‹์„ ์ฑ„์›Œ๊ฐ€๋Š” ใ€Ž๊ฐœ๋ฐœ์ž/ํ™”์ดํŠธํ•ด์ปคใ€๋ฅผ ๋ชฉํ‘œ๋กœ ์ •๋ฆฌํ•˜๋Š” ๋ธ”๋กœ๊ทธ

๋ชจ์˜ ํ•ดํ‚น ์Šคํ„ฐ๋””/๋ชจ์˜ ํ•ดํ‚น - ๊ณผ์ œ

[๊ณผ์ œ] 02์ฃผ์ฐจ(2) (ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ๊ตฌํ˜„)

Gearvirus(junyup2) 2023. 11. 2. 03:09

๋ชจ์˜ ํ•ดํ‚น ์Šคํ„ฐ๋”” - 2์ฃผ์ฐจ ๊ณผ์ œ(2) (ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ๊ตฌํ˜„)

๋ชจ์˜ ํ•ดํ‚น ์Šคํ„ฐ๋”” - 1์ฃผ์ฐจ ๊ณผ์ œ(๊ฐ„์ด ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ์ œ์ž‘)

 

๋ชจ์˜ ํ•ดํ‚น ์Šคํ„ฐ๋”” - 1์ฃผ์ฐจ ๊ณผ์ œ(๊ฐ„์ด ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ์ œ์ž‘)

๋ชจ์˜ ํ•ดํ‚น ์Šคํ„ฐ๋”” - 1์ฃผ์ฐจ ๊ณผ์ œ (๊ฐ„์ด ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ์ œ์ž‘) ์ œ์ž‘ ์กฐ๊ฑด DB ์—ฐ๊ฒฐ X ID / PW == admin / admin1234 ์ž…๋ ฅ์‹œ ๋กœ๊ทธ์ธ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ๊พธ๋ฏธ๊ธฐ (CSS / Bootstrap ์ด์šฉ) ์ถ”ํ›„ ์›ํ•˜๋Š”๋Œ€๋กœ ์ ์šฉ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•˜

codegear-archive.tistory.com

1์ฃผ์ฐจ (๊ฐ„์ด ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€) ๊ณผ์ œ์˜ Develop ๊ณผ์ œ
  • ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ ์ถ”๊ฐ€ (๊ธฐ๋Šฅ ๊ตฌํ˜„)
  • ํšŒ์› ๊ฐ€์ž… ์ •๋ณด (DB ์ €์žฅ)
  • ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ (DB ์—ฐ๋™)

index.php
login.php
regist.php
home.php

 

๋™์ž‘ ๊ณผ์ •
  • ์ฒซ ํ™”๋ฉด์ธ htt[://192.168.xxx.xxx:1018/ ์— ์ ‘์†
  • ๋กœ๊ทธ์ธ or ํšŒ์›๊ฐ€์ž… ์„ ํƒ
  • ๋กœ๊ทธ์ธ ์„ ํƒ
    • ์˜ฌ๋ฐ”๋ฅธ ID / PW์ž…๋ ฅ์‹œ ํ™ˆ์œผ๋กœ์ด๋™.
  • ํšŒ์›๊ฐ€์ž… ์„ ํƒ
    • ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ •๋ณด ์ž…๋ ฅ์‹œ DB์— ํšŒ์›์ •๋ณด ์‚ฝ์ž… ๋ฐ ๋กœ๊ทธ์ธํŽ˜์ด์ง€๋กœ ์ด๋™

์‚ฌ์ „ ์ค€๋น„ (DB - ๊ตฌ์„ฑ ๋ฐ ์„ค์ •)
  • phpmyadmin ์— ์ ‘์†ํ•˜์—ฌ ์ง์ ‘ ์„ค์ • ๊ฐ€๋Šฅ
  • ํ•˜์ง€๋งŒ ์ฝ”๋“œ๋ฅผ ์ด์šฉํ•˜์—ฌ ํ•ด๋ณด๊ณ ์‹ถ์–ด์„œ ์‹œ๋„ํ•จ

DB ์ƒ์„ฑ ์ฝ”๋“œ ์ˆœ์„œ
  • create_db.php
  • create_table.php
  • db_insert.php

create_db.php

<?php
    $db_conn = mysqli_connect("localhost", "*****", "***********", "") or die("MySQL ์ ‘์† ์‹คํŒจ !!");

    $sql = "CREATE DATABASE sqlDB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci";
    $ret = mysqli_query($db_conn, $sql);

    if($ret){
        echo "sqlDB๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑ๋จ.";
    }else{
        echo "sqlDB ์ƒ์„ฑ ์‹คํŒจ : " . mysqli_error($db_conn);
    }

    mysqli_close($db_conn);
?>
  • phpmyadmin ์— ์ ‘์†
  • CREATE DATABASE sqlDB DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
    • sqlDB ๋ผ๋Š” ์ด๋ฆ„์˜ DATABASE๋ฅผ ์ƒ์„ฑ
    • DEFAULT CHARACTER SET utf8
      • ๋””ํดํŠธ char ๊ฐ’์„ utf8๋กœ ์„ค์ •
    • COLLATE utf8_general_ci
      • ๋ฐ์ดํ„ฐ ์ •๋ ฌ๋ฐฉ์‹์„ utf8_general_ci ๋กœ ์„ค์ •
  • ์ ‘์† ์‹คํŒจ์‹œ ์—๋Ÿฌ ์ถœ๋ ฅ

create_table.php

<?php
    $db_conn = mysqli_connect("localhost", "*****", "***********", "sqlDB") or die("MySQL ์ ‘์† ์‹คํŒจ !!");

    $sql = "
        CREATE TABLE userTbl
        (   userID  VARCHAR(20) NOT NULL PRIMARY KEY,
            name    VARCHAR(20) NOT NULL,
            pass    VARCHAR(256) NOT NULL,
            email   VARCHAR(30) NOT NULL,
            birth   INT NOT NULL,
            mDate   DATE
        )
    ";

    $ret = mysqli_query($db_conn, $sql);

    if($ret){
        echo "userTBL์ด ์„ฑ๊ณต์ ์œผ๋กœ ์ƒ์„ฑ๋จ..";
    }else{
        echo "userTBL ์ƒ์„ฑ ์‹คํŒจ : ". mysqli_error($db_conn);
    }

    mysqli_close();
?>
  • sqlDB ์— userTbl์ด๋ผ๋Š” ์ด๋ฆ„์˜ ํ…Œ์ด๋ธ” ์ƒ์„ฑ
  • userID๋ฅผ ๊ธฐ๋ณธํ‚ค๋กœ ์ง€์ •
  • mDate
    • ๊ฐ€์ž… ์‹œ๊ฐ„์„ ๊ธฐ์ž…ํ•˜๊ธฐ ์œ„ํ•จ
    • phpmyadmin์˜ SQL์—์„œ ์‹œ๊ฐ„์„ค์ •์„ ํ•ด์ค˜์•ผํ•จ
    • SET GLOBAL time_zone = '+9:00'; : ๋Œ€ํ•œ๋ฏผ๊ตญ ์‹œ๊ฐ„

db_insert

<?php
    $db_conn = mysqli_connect("localhost", "*****", "***********", "sqlDB") or die("MySQL ์ ‘์† ์‹คํŒจ !!");
    
    mysqli_query($db_conn, 'set names utf8');
    $db_conn -> set_charset = "utf8";

    $sql = "
        INSERT INTO userTbl VALUES
        ('LJY', '์ด์ค€์—ฝ', 'ljy1234', 'junyup1234@gmail.com', '1994-03-21', Now()),
        ('ADM', '๊ด€๋ฆฌ์ž', 'admin1234', 'admin@test.com', '2023-11-07', Now())
    ";

    $ret = mysqli_query($db_conn, $sql);

    if($ret){
        echo "userTBL์— ๋ฐ์ดํ„ฐ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ์ž…๋ ฅ๋จ.";
    }else{
        echo "userTBL ๋ฐ์ดํ„ฐ ์ž…๋ ฅ ์‹คํŒจ : " . mysqli_error($db_conn);
    }

    mysqli_close($db_conn);
?>
  • ์‚ฝ์ž… ํ…Œ์ŠคํŠธ

์ฝ”๋“œ ๋ชฉ๋ก ๋ฐ ๊ตฌ์„ฑ
WebApp
โ”‚
โ”‚ index.php
โ”‚ login.php
โ”‚ login_func.php
โ”‚ regist.php
โ”‚ regist.post.php
โ”‚ home.php
โ”‚
โ”œโ”€ inc
โ”‚   โ”œโ”€ db.php
โ”‚   โ””โ”€ header.php
โ”‚          
โ””โ”€  css
    โ””โ”€ style.css
  • inc/header.php : ๊ณตํ†ต ํ—ค๋”
  • inc/db.php : ๊ณตํ†ต์œผ๋กœ ์ด์šฉํ•  DB ์ •๋ณด
  • index.php : ์ดˆ๊ธฐํ™”๋ฉด
  • login.php : ๋กœ๊ทธ์ธ ํ™”๋ฉด
  • login_func.php : ๋กœ๊ทธ์ธ ์ •๋ณด ํ™•์ธ
  • regist.php : ํšŒ์›๊ฐ€์ž… ํ™”๋ฉด
  • regist.post.php : ํšŒ์›๊ฐ€์ž… ๊ฐ€๋Šฅ์—ฌ๋ถ€ ํ™•์ธ ๋ฐ DB ์‚ฝ์ž…
  • home.php : ๋กœ๊ทธ์ธ ์™„๋ฃŒ ํ™”๋ฉด
  • css/style.css : ์ ์šฉํ•  CSS

inc/header.php

<p style='text-align:right'>
	<?php
	if(!session_id()){
		session_start();
	}

	if(!isset($_SESSION['member_id'])){
	?>
	<a href="/login.php">๋กœ๊ทธ์ธ</a>
	<a href="regist.php">ํšŒ์›๊ฐ€์ž…</a>
	<?php
	}else{
	?>
	<a href="/index.php">๋กœ๊ทธ์•„์›ƒ</a>
	<?php
	}
	?>
</p>

 

  • ๋กœ๊ทธ์ธ์ด ๋˜์–ด์žˆ์ง€ ์•Š์€ ์ƒํƒœ ( ! isset($_SESSION['member_id']) )
    • ๋กœ๊ทธ์ธ / ํšŒ์›๊ฐ€์ž… ์ถœ๋ ฅ
  • ๋กœ๊ทธ์ธ ๋˜์–ด์žˆ๋Š” ์ƒํƒœ ( isset($_SESSION['member_id']) )
    • ๋กœ๊ทธ์•„์›ƒ ์ถœ๋ ฅ

inc/db.php

<?php
    // DB ์—ฐ๊ฒฐ func
    function db_connect(){
        define('DB_SERVER', 'localhost');
        define('DB_USERNAME', '*****');
        define('DB_PASSWORD', '***********');
        define('DB_NAME', 'sqlDB');
        
        $db_conn = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);
        //ํ•œ๊ธ€ ์ธ์ฝ”๋”ฉ (utf-8)
        $db_conn -> set_charset("utf8");
        // DB ์—ฐ๊ฒฐ ํ™•์ธ
        if($db_conn -> connect_errno){
            echo "Failed to connect to MySQL: ". $mysqli -> connect_error;
            exit();
        }	
        return $db_conn;
    }
?>
  • db ์—ฐ๊ฒฐ์„ ์œ„ํ•œ ์„ธ๋ถ€์ •๋ณด ๋ฐ ์—ฐ๊ฒฐ ํ•จ์ˆ˜

index.php

<?php
session_start();
unset($_SESSION['member_id']);
unset($_SESSION['member_name']);
?>

<!DOCTYPE html>
<html>
	<head>
		<title>Index Page</title>
		<link rel="stylesheet" href="css/style.css">
	</head>
	<body>
		<div class="container">
			<h1 class="spacing grad">Index ํŽ˜์ด์ง€</h1>
			<?php require_once("inc/header.php"); ?>
			<h2>๋กœ๊ทธ์ธํ•ด์ฃผ์„ธ์š”.</h2>
			<p>์•„์ด๋””๊ฐ€ ์—†๋‹ค๋ฉด ํšŒ์›๊ฐ€์ž….</p>
		</div>
	</body>
</html>

  • ์‹œ์ž‘ํ™”๋ฉด์œผ๋กœ ์˜ค๋ฉด ์„ธ์…˜ ๋ณ€์ˆ˜๋“ค ์ดˆ๊ธฐํ™”
    • unset($_SESSION[' ']); 
  • ์‚ฌ์ดํŠธ์˜ ์ฒซ ํ™”๋ฉด, inc/header.php ๋กœ๋ถ€ํ„ฐ ๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž… ํ—ค๋”๋ฅผ ๋ถˆ๋Ÿฌ์˜ด

login.php

<!DOCTYPE html>
<html lang="ko">
	<head>
	<meta charset="utf-8">
		<title>Login Page</title>
		<link rel="stylesheet" href="css/style.css">
	</head>
	<body>
        <div class="container">
        	<h1 class="shadow spacing grad">๋กœ๊ทธ์ธ ํŽ˜์ด์ง€</h1>	
                <form method="POST" action="login_func.php" accept-charset="utf-8" autocomplete="off">
                    <br>
                    <label for="userID">์•„์ด๋””</label>
                    <input type="text" name="userID" placeholder="User ID" autofocus/>
                    
                    <label for="pass">๋น„๋ฐ€๋ฒˆํ˜ธ</label>
                    <input type="password" name="pass" placeholder="User Password"/>
                    
                    <input type="submit" value="๋กœ๊ทธ์ธ"/>
            	</form>
            <br><br>
            <footer class="footer">
            	<div class="footer-info">์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.</div>
            </footer>
        </div>
    </body>
</html>

  • ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€
  • ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ์ •๋ ฌ ๋ฐฉ์‹ ์„ค์ •
    • accept-charset="utf-8" : ๋ฐ์ดํ„ฐ ์ •๋ ฌ ๋ฐฉ์‹์„ utf8 ๋กœ ์„ค์ •

login_func.php

<?php
    require_once("inc/db.php");

	$userID = isset($_POST['userID']) ? $_POST['userID'] : null;
	$pass = isset($_POST['pass']) ? $_POST['pass'] : null;

    // ํŒŒ๋ผ๋ฏธํ„ฐ ์ฒดํฌ
    if($userID == null || $pass == null){
        header("Location: /login.php");
        exit();
    }

    // ํšŒ์› ๋ฐ์ดํ„ฐ ์กฐํšŒ
    $db_conn = db_connect();
    $sql = "SELECT * FROM userTbl WHERE userID= '$userID'";
    $ret = mysqli_query($db_conn, $sql);
    
    // ํšŒ์› ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๋ฉด
    $row = mysqli_fetch_array($ret);
    $cnt = mysqli_num_rows($ret);
    if($row['userID'] == null || $cnt == 0){
        echo '<script>alert("๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ž˜๋ชป ์ž…๋ ฅ"); history.back(-1)</script>';
        exit();
    }
    // ๋น„๋ฐ€๋ฒˆํ˜ธ ์ผ์น˜ ์—ฌ๋ถ€ ํ™•์ธ
    $is_pw = password_verify($pass, $row['pass']);

    if($is_pw === false){
        echo '<script>alert("๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ž˜๋ชป ์ž…๋ ฅ"); history.back(-1)</script>';
        exit();
    }
    $userName = $row['name'];
    
    session_start();
    $_SESSION['member_id'] = $userID;
    $_SESSION['member_name'] = $userName;

    mysqli_close($db_conn);
    header("Location: /home.php");
?>

  • ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ๋ณ€์ˆ˜์— ์‚ฝ์ž…
    • $var = isset($_POST[' var ']) ? $_POST[' var '] : null; (๊ธฐ๋ณธํ˜•)
    • POST ๊ฐ’์ด ์ž˜ ๋“ค์–ด์™”๋‹ค๋ฉด ํ•ด๋‹น ๊ฐ’์„ $var ๋ณ€์ˆ˜์— ๋„ฃ์–ด์ฃผ๊ณ , ์•„๋‹ˆ๋ฉด NULL๊ฐ’์„ ๋„ฃ์–ด์คŒ
  • ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ์ œ๋Œ€๋กœ ๋“ค์–ด์™”๋Š”์ง€ ํ™•์ธ
    • if($userID == null || $pass == null)
    • ๋‘˜์ค‘ ํ•˜๋‚˜๋ผ๋„ null๊ฐ’์ด๋ผ๋ฉด, ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ๋Œ์•„๊ฐ
  • ํšŒ์› ๋ฐ์ดํ„ฐ (์•„์ด๋”” ์กฐํšŒ)
    • $sql = "SELECT * FROM userTbl WHERE userID= '$userID'";
    • ์ž…๋ ฅ๋œ ์•„์ด๋””์— ๋Œ€ํ•œ ์ •๋ณด๊ฐ€ DB์— ์žˆ๋Š”์ง€ SQL Select๋ฅผ ํ†ตํ•ด ํ™•์ธ
  • ํšŒ์› ๋ฐ์ดํ„ฐ๊ฐ€ ์—†๋‹ค๋ฉด?
    • $cnt = mysqli_num_rows($ret); : num_rows ๋Š” ์ž…๋ ฅ์ •๋ณด์— ๋Œ€ํ•ด ๊ฐ™์€ ๊ฒƒ์˜ ๊ฐฏ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
      • $cnt == 0 ์ด๋ผ๋ฉด, ์ž…๋ ฅ๋œ ์ •๋ณด์™€ ์ผ์น˜ํ•˜๋Š” ์ •๋ณด๊ฐ€ DB์— ์—†๋‹ค๋Š” ๊ฒƒ
    • $row = mysqli_fetch_array($ret);
      • $row['userID'] == null ์ด๋ผ๋ฉด, ์ž…๋ ฅ ์ •๋ณด์— ๋Œ€ํ•ด ์กฐํšŒ๋œ ์ •๋ณด๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ
    • ์ผ์น˜ ํ•˜๋Š” ํšŒ์› ์ •๋ณด๊ฐ€ ์—†๋‹ค๋ฉด
      • "๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ž˜๋ชป ์ž…๋ ฅ" ๋ผ๋Š” ๊ฒฝ๊ณ ์ฐฝ๊ณผ ํ•จ๊ป˜ ์ด์ „ํŽ˜์ด์ง€๋กœ ๋Œ์•„๊ฐ
  • ๋น„๋ฐ€๋ฒˆํ˜ธ ์ผ์น˜ ์—ฌ๋ถ€ ํ™•์ธ
    • ์‚ฝ์ž…์‹œ ์•”ํ˜ธํ™” ๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์— password_verify๋ฅผ ์ด์šฉ
      • BCRYPT ๋ฐฉ์‹์€ ๋ณตํ˜ธํ™” ๋ถˆ๊ฐ€๋Šฅ ํ•˜๊ธฐ ๋•Œ๋ฌธ
      • $is_pw = password_verify($pass, $row['pass']); ๋Š” ์ผ์น˜ํ•˜๋ฉด True๋ฅผ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฉด False๋ฅผ ๋ฐ˜ํ™˜
    • ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด
      • "๋กœ๊ทธ์ธ ์ •๋ณด๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๊ฑฐ๋‚˜ ์ž˜๋ชป ์ž…๋ ฅ" ๋ผ๋Š” ๊ฒฝ๊ณ ์ฐฝ๊ณผ ํ•จ๊ป˜ ์ด์ „ํŽ˜์ด์ง€๋กœ ๋Œ์•„๊ฐ
      • (์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ์ค‘ ๋ฌด์—‡์ด ํ‹€๋ฆฐ์ง€ ๋ชจ๋ฅด๋„๋ก ๋‘ ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€๋ฅผ ๊ฐ™๊ฒŒ ์„ค์ •)
  • ์•„์ด๋””์™€ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ - ๋กœ๊ทธ์ธ ์„ฑ๊ณต
    • $_SESSION['var'] = $var
      • ์„ธ์…˜์„ ์ด์šฉํ•˜์—ฌ ๋‹ค๋ฅธ ํŽ˜์ด์ง€์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ
      • ๋‹ค๋ฅธ ํŽ˜์ด์ง€์—์„œ ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์•„์„œ ์ถœ๋ ฅ ๊ฐ€๋Šฅ
      • ๊ณตํ†ต ํ—ค๋” ์‚ฌ์šฉ์„ ์œ„ํ•จ
    • DB ์ ‘์† ์ข…๋ฃŒ ๋ฐ ํ™ˆ(๋กœ๊ทธ์ธ ์™„๋ฃŒ) ํŽ˜์ด์ง€๋กœ ์ด๋™
      • mysqli_close($db_conn);
      • header("Location: /home.php");

regist.php

<!DOCTYPE html>
<html>
    <head>
    <meta http-equiv="content-type" content="text/html"; charset="utf-8">
    <title>Page to Join</title>
    	<link rel="stylesheet" href="css/style.css">
    </head>
    <body>
    	<div class="container">
        	<h1 class="shadow spacing grad">ํšŒ์›๊ฐ€์ž…</h1>
            	<form method="POST" action="regist.post.php" accept-charset="utf-8" autocomplete="off">
                    <br>
                    <label for="name">์ด๋ฆ„</label>
                    <input type="text" name="name" placeholder="Your Name" autofocus/>
                    <label for="userID">์•„์ด๋””</label>
                    <input type="text" name="userID" placeholder="User ID"/>
                    <label for="pass">๋น„๋ฐ€๋ฒˆํ˜ธ</label>
                    <input type="password" name="pass" placeholder="User Password"/>
                    <label for="pass_check">๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์ž…๋ ฅ</label>
                    <input type="password" name="pass_check" placeholder="Rewrite Password"/>
                    <label for="email">์ด๋ฉ”์ผ</label>
                    <input type="email" name="email" placeholder="E-mail"/>
                    <label for="birth">์ƒ๋…„์›”์ผ</label>
                    <input type="date" name="birth"/>
                    <input type="submit" value="ํšŒ์›๊ฐ€์ž…">
                    <input type="reset" value="์ดˆ๊ธฐํ™”">                 
                </form>
            <br><br>
            <footer class="footer">
            	<div class="footer-info">ํšŒ์› ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.</div>
            </footer>
        </div>
    </body>
</html>

 

  • ์ด๋ฆ„, ์•„์ด๋””
    • input type = 'text'
    • DB : varchar(20)
  • ๋น„๋ฐ€๋ฒˆํ˜ธ, ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์ž…๋ ฅ
    • input type = 'password'
    • DB : varchar(256)
    • ๋น„๋ฐ€๋ฒˆํ˜ธ์— ๋Œ€ํ•ด์„œ๋งŒ ํ•„์š”
    • varchar(256) ์ธ ์ด์œ ๋Š” ์•”ํ˜ธํ™” ์ฒ˜๋ฆฌ ๊ณผ์ •์—์„œ ๊ธธ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ
    • ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์ž…๋ ฅ์€ ๋‹จ์ˆœํžˆ ์ž…๋ ฅ ์˜ค๋ฅ˜ ๋ฐฉ์ง€๋ฅผ ์œ„ํ•จ
  • ์ด๋ฉ”์ผ
    • input type = 'email'
    • DB : varchar(30)
  • ์ƒ๋…„์›”์ผ
    • input type ='date'
      • ์ง์ ‘์ž…๋ ฅ ๊ฐ€๋Šฅ
      • ๋‹ฌ๋ ฅ์„ ๋ˆŒ๋Ÿฌ์„œ ์„ค์ • ๊ฐ€๋Šฅ
    • DB :  date
      • YYYY-MM-DD ํ‘œ๊ธฐ
  • ํšŒ์›๊ฐ€์ž…
    • input type : 'submit'
    • ์ •๋ณด ์ „๋‹ฌ์šฉ
  • ์ดˆ๊ธฐํ™”
    • input type : 'reset'
    • ํ˜„์žฌ ์ž…๋ ฅ ์ •๋ณด ์ดˆ๊ธฐํ™”

 

regist.post.php

<?php
    require_once("inc/db.php");

    $userID = isset($_POST['userID']) ? $_POST['userID'] : null;
    $name = isset($_POST['name']) ? $_POST['name'] : null;
    $pass = isset($_POST['pass']) ? $_POST['pass'] : null;
    $pass_check = isset($_POST['pass_check']) ? $_POST['pass_check'] : null;
    $email = isset($_POST['email']) ? $_POST['email'] : null;
    $birth = isset($_POST['birth']) ? $_POST['birth'] : null;

    // ํŒŒ๋ผ๋ฏธํ„ฐ ์ฒดํฌ
    if($userID == null || $name == null || $pass == null || $email == null || $birth == null || $pass_check == null){
        echo '<script>alert("์ž…๋ ฅ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค."); history.back(-1)</script>';
        // header("Location: /regist.php");
        exit();
    }

    // ์ด๋ฏธ ์žˆ๋Š” '์•„์ด๋””'์ธ์ง€ ํ™•์ธ
    $db_conn = db_connect();
    $sql = "SELECT * FROM userTbl WHERE userID= '$userID'";
    $ret = mysqli_query($db_conn, $sql);
    $cnt = mysqli_num_rows($ret);

    if($cnt == 1){
        echo '<script>alert("์ด๋ฏธ ์กด์žฌํ•˜๋Š” \'์•„์ด๋””\' ์ž…๋‹ˆ๋‹ค."); history.back(-1)</script>';
        exit();
    }

    //์žฌ์ž…๋ ฅ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ
    if($pass != $pass_check){
        echo '<script>alert("์žฌ์ž…๋ ฅ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."); history.back(-1)</script>';
        exit();
    }
    //๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™”
    $bcrypt_pw = password_hash($pass, PASSWORD_BCRYPT);

    //๋ฐ์ดํ„ฐ ์ €์žฅ
    date_default_timezone_set('Asia/Seoul');
    $sql = "INSERT INTO userTbl VALUES ('$userID', '$name', '$bcrypt_pw', '$email', '$birth', now())";
	$result = mysqli_query($db_conn, $sql);
    if($result){
        echo '<script type="text/javascript">'; 
        echo 'alert("ํšŒ์›๊ฐ€์ž…์„ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒํ–ˆ์Šต๋‹ˆ๋‹ค.\n๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.");';
        echo 'document.location.href = "/login.php";';
        echo '</script>';
        exit();
    }else{
        echo "ํšŒ์›๊ฐ€์ž… ์‹คํŒจ, userTbl์— ์‚ฝ์ž… ์‹คํŒจ : " . mysqli_error($db_conn);
    }

    mysqli_close($db_conn);
?>

 

  • ํŒŒ๋ผ๋ฏธํ„ฐ ํ™•์ธ ๋ฐ ์ฒดํฌ

  • ์ด๋ฏธ ์กด์žฌํ•˜๋Š” '์•„์ด๋””' ์ธ์ง€ ํ™•์ธ
    • $cnt = mysqli_num_rows($ret);
      • $cnt ์˜ ๊ฐ’์ด 1์ด๋ผ๋ฉด ์ด๋ฏธ ํ•ด๋‹น ์•„์ด๋””๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ๊ฒƒ

  • ์žฌ์ž…๋ ฅ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ
    • ๋‹จ์ˆœํ•˜๊ฒŒ ์ž…๋ ฅ๋œ ๋‘ ๋ฒˆ์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ ์ผ์น˜ ์—ฌ๋ถ€ ํ™•์ธ
    • $pass == $pass_check
  • ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™”
    • ๋น„ํฌ๋ฆฝํŠธ ์•”ํ˜ธํ™”
    • $bcrypt_pw = password_hash($pass, PASSWORD_BCRYPT);
  • ํšŒ์› ๋ฐ์ดํ„ฐ ์ €์žฅ
    • SQL Query INSERT
    • $sql = "INSERT INTO userTbl VALUES ('$userID', '$name', '$bcrypt_pw', '$email', '$birth', now())";
      • now() ๋Š” ํ˜„์žฌ ์‹œ๊ฐ์„ ์ž…๋ ฅ : '๊ฐ€์ž… ์ผ์‹œ' ์ •๋ณด๋ฅผ ์œ„ํ•จ
      • YYYY-MM-DD  HH-MM-SS (ํ˜„์žฌ์˜ ๋…„-์›”-์ผ  ์‹œ-๋ถ„-์ดˆ)
  • ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต ๋ฐ ํŽ˜์ด์ง€ ์ด๋™
    • ํšŒ์›๊ฐ€์ž…์ด ์„ฑ๊ณตํ–ˆ์œผ๋ฏ€๋กœ, ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™

home.php

<!DOCTYPE html>
<html lang="ko">
	<head>
	<meta charset="utf-8">
		<title>Wellcome</title>
		<link rel="stylesheet" href="css/style.css">
	</head>
	<body>
    	<div class ="container">
            <h1 class="spacing grad">Home</h1>
            <?php require_once("inc/header.php"); ?>
            <?php 
                $name = $_SESSION['member_name'];
                $userID = $_SESSION['member_id'];
                echo "์•ˆ๋…•ํ•˜์„ธ์š”, " .$name. " ๋‹˜";
            ?>
            <a href='mypage.php?userID=", $userID, "'>๋งˆ์ดํŽ˜์ด์ง€</a>
            <a href='withdraw.php?userID=", $userID, "'>ํšŒ์›ํƒˆํ‡ด</a>
        </div>
    </body>
</html>

  • ์‚ฌ์ดํŠธ์˜ ํ™ˆ ํ™”๋ฉด
    • $_SESSION['member_id'] ๊ฐ€ ์„ค์ •๋˜์–ด ์žˆ์œผ๋ฏ€๋กœ ํ—ค๋”๊ฐ€ '๋กœ๊ทธ์ธ/ํšŒ์›๊ฐ€์ž…'์ด ์•„๋‹Œ '๋กœ๊ทธ์•„์›ƒ'์œผ๋กœ ํ‘œ์‹œ๋จ
  • $name = $_SESSION['member_name']; ๊ฐ€ ์„ค์ •๋˜์–ด์žˆ๊ธฐ ๋•Œ๋ฌธ์—
    • ํ•ด๋‹นํ•˜๋Š” ์œ ์ €์˜ ์ด๋ฆ„ ์ถœ๋ ฅ ๊ฐ€๋Šฅ
  • ๋งˆ์ดํŽ˜์ด์ง€ / ํšŒ์›ํƒˆํ‡ด ๊ธฐ๋Šฅ์€ ์ถ”ํ›„ ๊ตฌํ˜„ ์˜ˆ์ •
 

๋ชจ์˜ ํ•ดํ‚น ์Šคํ„ฐ๋”” - ๊ณผ์ œ 02์ฃผ์ฐจ(3) (๋งˆ์ดํŽ˜์ด์ง€ - ๋‚˜์˜ ์ •๋ณด)

๋ชจ์˜ ํ•ดํ‚น ์Šคํ„ฐ๋”” - 2์ฃผ์ฐจ ๊ณผ์ œ(3) (๋งˆ์ดํŽ˜์ด์ง€ - ๋‚˜์˜ ์ •๋ณด) ๋ชจ์˜ ํ•ดํ‚น ์Šคํ„ฐ๋”” - ๊ณผ์ œ 02์ฃผ์ฐจ(2) (ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ๊ตฌํ˜„)์˜ Develop ๊ณผ์ œ ๋ชจ์˜ ํ•ดํ‚น ์Šคํ„ฐ๋”” - ๊ณผ์ œ 02์ฃผ์ฐจ(2) (ํšŒ์›๊ฐ€์ž…/๋กœ๊ทธ์ธ ํŽ˜

codegear-archive.tistory.com


ํ›„๊ธฐ

 

SQL ์— ๋Œ€ํ•œ ์ดํ•ด ๋ถ€์กฑ์œผ๋กœ ์ธํ•˜์—ฌ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆผ

  • ํ•œ๊ธ€ ์ธ์ฝ”๋”ฉ ๋ฌธ์ œ
  • DB ์„ค์ •์‹œ ๊ฐ๊ฐ์˜ ์ข…๋ฅ˜/๋ฐ์ดํ„ฐ ์ •๋ ฌ ๋ฐฉ์‹์— ์œ ์˜
  • SQL๋ฌธ์˜ ํ™œ์šฉ ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ๊ณต๋ถ€
  • ํ•จ์ˆ˜ํ™”๊ฐ€ ์ œ๋Œ€๋กœ ๋˜์ง€ ์•Š์€ ์ 
    • ํ•จ์ˆ˜ํ™”์‹œ ๋„ฃ์–ด์ค˜์•ผํ•  'ํŒŒ๋ผ๋ฏธํ„ฐ' ์„ค์ •์— ๋Œ€ํ•œ ๋ถ€์กฑ
  • ์ด์ „ ๊ณผ์ œ ๋Œ€๋น„ ๋ฐœ์ „ํ•˜์ง€ ๋ชปํ•œ CSS

PHP๋Š” ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋จ์„ ์žŠ์ง€ ๋ง ๊ฒƒ !!

 

 

 

 

์งˆ๋ฌธ ํ™˜์˜, ์ˆ˜์ • ๋ฐ ๋ณด์™„์— ๋Œ€ํ•œ ์ง€์  ํ™˜์˜