Archive for Dev. (junyup2)

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

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

[๊ณผ์ œ] 03์ฃผ์ฐจ(1) ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ๋ณด์™„

Gearvirus(junyup2) 2023. 11. 8. 23:09

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

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

 

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

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

codegear-archive.tistory.com

 

๋กœ๊ทธ์ธ ํŽ˜์ด์ง€ ๊ตฌํ˜„์˜ Develop ๊ณผ์ œ
  • ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ
  • ํšŒ์›์ •๋ณด ์ˆ˜์ •
  • ํšŒ์›ํƒˆํ‡ด
๋ณ€๊ฒฝ์  (๋ฆฌ๋””๋ ‰์…˜ ๋ณ€๊ฒฝ)
  • home.php
  • mypage.php

์ถ”๊ฐ€๋œ ์ฝ”๋“œ
  • ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ
    • edit_pw.php
    • change.php
  • ํšŒ์›์ •๋ณด ์ˆ˜์ •
    • edit.php
    • update.php
  • ํšŒ์›ํƒˆํ‡ด
    • withdraw.php
    • delete.php

eidt_pw.php

<!DOCTYPE html>
<html lang="ko">
	<head>
	<meta charset="utf-8">
		<title>Change pw</title>
		<link rel="stylesheet" href="css/style.css">
	</head>
	<body>
	    <div class ="container">
        	<h1 class="spacing grad">Change Password</h1>
            	<?php
                require_once("lib/jwt.php");
                / Cookie ์—์„œ jwt ๊ฐ€์ ธ์š”๊ธฐ
                $token = $_COOKIE['login_token'];
                // jwt์—์„œ ์œ ์ € ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ
                $data = $jwt->dehashing($token);
                echo $data['name']. " ๋‹˜์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ";
                ?>
                <form method="POST" action="change.php" accept-charset="utf-8" autocomplete="off">
                    <br>
                    <label for="pass_old">๊ธฐ์กด ๋น„๋ฐ€๋ฒˆํ˜ธ</label>
                    <input type="password" name="pass_old" placeholder="Old Password"/>
                    
                    <label for="pass_new">๋ณ€๊ฒฝํ•  ๋น„๋ฐ€๋ฒˆํ˜ธ</label>
                    <input type="password" name="pass_new" placeholder="New Password"/>
                    
                    <label for="pass_check">๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์ž…๋ ฅ</label>
                    <input type="password" name="pass_check" placeholder="Rewrite Password"/>
                    
                    <input type="submit" value="๋ณ€๊ฒฝ">               
                </form>
                <p style='text-align:right'>
                    <a href='/home.php'>๋’ค๋กœ๊ฐ€๊ธฐ</a>
                </p>
	    </div>
	</body>
</html>

  • ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ์„ ์œ„ํ•œ ํผ(form)
    • action = "change.php" : ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ์„ ์œ„ํ•œ ํ™•์ธ์‚ฌํ•ญ ์ฒดํฌ์šฉ .php
    • ๊ธฐ์กด ๋น„๋ฐ€๋ฒˆํ˜ธ : ๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ์ „์— ๊ธฐ์กด์˜ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ์šฉ
    • ๋ณ€๊ฒฝํ•  ๋น„๋ฐ€๋ฒˆํ˜ธ : ์ƒˆ๋กœ ๋ฐ”๊ฟ€ ๋น„๋ฐ€๋ฒˆํ˜ธ
    • ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌ์ž…๋ ฅ : ๋น„๋ฐ€๋ฒˆํ˜ธ ์žฌํ™•์ธ

change.php

<?php
    $pass_old = isset($_POST['pass_old']) ? $_POST['pass_old'] : null;
    $pass_new = isset($_POST['pass_new']) ? $_POST['pass_new'] : null;
    $pass_check = isset($_POST['pass_check']) ? $_POST['pass_check'] : null;

    // ํŒŒ๋ผ๋ฏธํ„ฐ ์ฒดํฌ
    if($pass_old == null || $pass_new == null || $pass_check == null){
    	echo '<script>alert("์ž…๋ ฅ์ •๋ณด๊ฐ€ ๋ถ€์กฑํ•ฉ๋‹ˆ๋‹ค."); history.back(-1)</script>';
        // header("Location: /regist.php");
        exit();
    }
    
    require_once("lib/jwt.php");
    // Cookie ์—์„œ jwt ๊ฐ€์ ธ์š”๊ธฐ
    $token = $_COOKIE['login_token'];
    // jwt์—์„œ ์œ ์ € ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ
    $data = $jwt->dehashing($token);

    // DB ์ •๋ณด ์กฐํšŒ (password)
    require_once("inc/db.php");
    $db_conn = db_connect();
    $sql = "SELECT * FROM userTbl WHERE userID= '{$data['id']}'";
    $ret = mysqli_query($db_conn, $sql);
    $row = mysqli_fetch_array($ret);

    
    //์ž…๋ ฅ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๊ธฐ์กด ๋น„๋ฐ€๋ฒˆํ˜ธ ์ผ์น˜ ํ™•์ธ
    $match_pw = password_verify($pass_old, $row['pass']);

    if($match_pw === false){
        echo '<script>alert("๊ธฐ์กด ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."); history.back(-1)</script>';
        exit();
    }

    //๊ธฐ์กด ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๋ณ€๊ฒฝ ๋น„๋ฐ€๋ฒˆํ˜ธ ๋‹ค๋ฆ„ ํ™•์ธ
    if($pass_old == $pass_new){
        echo '<script>alert("๋ณ€๊ฒฝํ•  ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๊ธฐ์กด ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค."); history.back(-1)</script>';
        exit();
    }

    //์žฌ์ž…๋ ฅ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ
    if($pass_new != $pass_check){
        echo '<script>alert("์žฌ์ž…๋ ฅ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค."); history.back(-1)</script>';
        exit();
    }
    
    //๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™”
    $bcrypt_pw = password_hash($pass_new, PASSWORD_BCRYPT);
	
    //์ƒˆ๋กœ์šด ๋น„๋ฐ€๋ฒˆํ˜ธ๋กœ ๊ต์ฒด (DB UPDATE)
    $sql = "UPDATE userTbl SET pass='$bcrypt_pw' WHERE userID= '{$data['id']}'";
	$result = mysqli_query($db_conn, $sql);
    if($result){
        echo '<script type="text/javascript">'; 
        echo 'alert("๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.\n๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.");';
        setcookie("login_token", $token, time()-(360*30));
        echo 'document.location.href = "/login.php";';
        echo '</script>';
        exit();
    }else{
        echo "๋น„๋ฐ€๋ฒˆํ˜ธ ๋ณ€๊ฒฝ ์‹คํŒจ : " . mysqli_error($db_conn);
    }

    mysqli_close($db_conn);
?>

 

  • POST ๊ฐ’์ด ์ž…๋ ฅ์ด ์•ˆ๋œ๊ฒƒ์ด ์—†๋Š”์ง€ ํ™•์ธ
    • isset ์œผ๋กœ ํ™•์ธ ํ›„, ํ•˜๋‚˜๋ผ๋„ ๋น„์–ด์žˆ์œผ๋ฉด ์ด์ „์œผ๋กœ
  • ํ˜„์žฌ ์‚ฌ์šฉ์ž id ๋ฅผ ์ด์šฉํ•˜์—ฌ DB ์ •๋ณด ์กฐํšŒ
    • "SELECT * FROM userTbl WHERE userID= '{$data['id']}'";
  • ์ž…๋ ฅ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๊ธฐ์กด ๋น„๋ฐ€๋ฒˆํ˜ธ ์ผ์น˜ ์—ฌ๋ถ€ ํ™•์ธ
    • password_verify($pass_old, $row['pass']);
  • ๊ธฐ์กด ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ๋ณ€๊ฒฝ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋‹ค๋ฅธ ๊ฒƒ์„ ํ™•์ธ
    • ๊ธฐ์กด๊ณผ ๊ฐ™์€ ๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ
    • if($pass_old == $pass_new) : ๊ฐ™์€ ๊ฒฝ์šฐ์— exit() , ๋‹ค๋ฅธ ๊ฒฝ์šฐ์— ํ†ต๊ณผ
  • ์žฌ์ž…๋ ฅ ๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ
    • ์ž…๋ ฅ ๋น„๋ฐ€๋ฒˆํ˜ธ์˜ ๋‹จ์ˆœ ์žฌํ™•์ธ์šฉ
    • if($pass_new != $pass_check)
  • ์‹ ๊ทœ ๋น„๋ฐ€๋ฒˆํ˜ธ ์•”ํ˜ธํ™”
    • $bcrypt_pw = password_hash($pass_new, PASSWORD_BCRYPT);
  • DB์— ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฐฑ์‹ 
    • "UPDATE userTbl SET pass='$bcrypt_pw' WHERE userID= '{$data['id']}'";

edit.php

<!DOCTYPE html>
<html lang="ko">
	<head>
	<meta charset="utf-8">
    	<title>Edit Info</title>
        <link rel="stylesheet" href="css/style.css">
	</head>
	<body>
    	<div class ="container">
        	<h1 class="spacing grad">Edit MyInfo</h1>
            	<?php 
                    require_once("lib/jwt.php");
                    // Cookie ์—์„œ jwt ๊ฐ€์ ธ์š”๊ธฐ
                    $token = $_COOKIE['login_token'];
                    // jwt์—์„œ ์œ ์ € ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ
                    $data = $jwt->dehashing($token);
                    echo $data['name']. " ๋‹˜์˜ ํšŒ์›์ •๋ณด ์ˆ˜์ •";

                    require_once("inc/db.php");
                    $db_conn = db_connect();
                    $sql = "SELECT * FROM userTbl WHERE userID= '{$data['id']}'";
                    $ret = mysqli_query($db_conn, $sql);
                    $row = mysqli_fetch_array($ret);
                    // ์œ ์ € ์ •๋ณด ์ผ๋žŒ
                    $userID = $row['userID'];
                    $name = $row['name'];
                    $email = $row['email'];
                    $birth = $row['birth'];
                    $mDate = $row['mDate'];
                ?>
                <form method="POST" action="update.php" accept-charset="utf-8" autocomplete="off">
                    <br>
                    <label for="userID">์•„์ด๋”” (์•„์ด๋””๋Š” ๋ฐ”๊พธ์‹ค ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.)</label>
                    <input type="text" name="userID" value=<?php echo $userID ?> readonly>

                    <label for="name">์ด๋ฆ„</label>
                    <input type="text" name="name" value=<?php echo $name ?>>

                    <label for="email">์ด๋ฉ”์ผ</label>
                    <input type="email" name="email" value=<?php echo $email ?>>

                    <label for="birth">์ƒ๋…„์›”์ผ</label>
                    <input type="date" name="birth" value=<?php echo $birth ?>>

                    <label for="userID">ํšŒ์› ๊ฐ€์ž…์ผ</label>
                    <input type="text" name="mDate" value=<?php echo $mDate ?> readonly>
                    
                    <input type="submit" value="์ˆ˜์ •">               
                </form>
                <p style='text-align:right'>
                    <a href='/mypage.php'>๋’ค๋กœ๊ฐ€๊ธฐ</a>
                </p>
	    </div>
	</body>
</html>

  • action="update.php"
  • ํ˜„์žฌ ์‚ฌ์šฉ์ž id ๋ฅผ ์ด์šฉํ•˜์—ฌ ์œ ์ € ์ •๋ณด ์กฐํšŒ
    • "SELECT * FROM userTbl WHERE userID= '{$data['id']}'";
  • ์œ ์ € ์ •๋ณด๋ฅผ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•œ ํผ(form)
    • ์•„์ด๋””๋Š” ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ReadOnly ๋กœ ๋ณด์—ฌ๋Š”์ฃผ๋˜ ์ˆ˜์ • ๋ถˆ๊ฐ€๋Šฅ
      • ํšŒ์› ๊ฐ€์ž…์ผ ๋˜ํ•œ ๋งˆ์ฐฌ๊ฐ€์ง€
    • ๋‚˜๋จธ์ง€๋Š” ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์ž…๋ ฅ์„ ๋ฐ›์Œ

update.php

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

    $userID = $_POST['userID'];
    $name = $_POST['name'];
    $email = $_POST['email'];
    $birth = $_POST['birth'];

    $db_conn = db_connect();
    $sql = "UPDATE userTbl SET name='$name',email='$email',birth='$birth' WHERE userID= '$userID'";
    $ret = mysqli_query($db_conn, $sql);
    if($ret){
        echo '<script type="text/javascript">'; 
        echo 'alert("ํšŒ์› ์ •๋ณด๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.\๋งˆ์ดํŽ˜์ด์ง€๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.");';
        echo 'document.location.href = "/mypage.php";';
        echo '</script>';
        exit();
    }else{
        echo "ํšŒ์›์ •๋ณด ์ˆ˜์ • ์‹คํŒจ :" . mysqli_error($db_conn);
    }
    mysqli_close($db_conn);
?>

  • POST๋กœ ๋ฐ›์•„์˜จ ์ •๋ณด๋ฅผ ์ด์šฉํ•˜์—ฌ DB ๊ฐฑ์‹ 
    • "UPDATE userTbl SET name='$name',email='$email',birth='$birth' WHERE userID= '$userID'";

withdraw.php

<!DOCTYPE html>
<html lang="ko">
	<head>
	<meta charset="utf-8">
		<title>Really?</title>
		<link rel="stylesheet" href="css/style.css">
	</head>
	<body>
	    <div class ="container">
        	<h1 class="spacing grad">Withdraw</h1>
        	<?php require_once("inc/header.php"); ?>
                <?php 
                    require_once("lib/jwt.php");
                    // Cookie ์—์„œ jwt ๊ฐ€์ ธ์š”๊ธฐ
                    $token = $_COOKIE['login_token'];
                    // jwt์—์„œ ์œ ์ € ์ •๋ณด ๊ฐ€์ ธ์˜ค๊ธฐ
                    $data = $jwt->dehashing($token);
                    echo "์ •๋ง๋กœ ๋– ๋‚˜์‹ค๊ฑด๊ฐ€์š”? " . $data['name'] . " ๋‹˜";

                    require_once("inc/db.php");
                    $db_conn = db_connect();
                    $sql = "SELECT * FROM userTbl WHERE userID= '{$data['id']}'";
                    $ret = mysqli_query($db_conn, $sql);
                    $row = mysqli_fetch_array($ret);
                    // ์œ ์ € ์ •๋ณด ์ผ๋žŒ
                    $userID = $row['userID'];
                    $name = $row['name'];
                ?>
                <form method="POST" action="delete.php">
                    <br>
                    <label for="userID">์•„์ด๋””</label>
                    <input type="text" name="userID" value=<?php echo $userID ?> readonly>

                    <label for="name">์ด๋ฆ„</label>
                    <input type="text" name="name" value=<?php echo $name ?> readonly>
                    <br><br>
                    <?php echo "์ •๋ง๋กœ ํƒˆํ‡ดํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?" ?>
                    <input type="submit" value="ํšŒ์› ํƒˆํ‡ด">
                </form>
                <p style='text-align:right'>
                    <br>
                    <a href='/home.php'>๋’ค๋กœ๊ฐ€๊ธฐ</a>
                </p>
	    </div>
	</body>
</html>

  • ํ˜„์žฌ ์‚ฌ์šฉ์ž id๋ฅผ ์ด์šฉํ•˜์—ฌ DB์—์„œ ์œ ์ € ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ด
    • "SELECT * FROM userTbl WHERE userID= '{$data['id']}'";
  • ์œ ์ € id ์™€ ์œ ์ € ์ด๋ฆ„์„ ๋ณด์—ฌ์ฃผ๋ฉด์„œ ์ง„์งœ ํƒˆํ‡ดํ• ๊ฑด์ง€ ํ™•์ธ
  • ์•„์ด๋””์™€ ์ด๋ฆ„์„ ๋ณด์—ฌ์ฃผ๋Š” ํผ(form)
    • action="delete.php"
    • ์•„์ด๋””์™€ ์ด๋ฆ„ ๋‘˜๋‹ค ํ™•์ธ์šฉ์ด๋ฏ€๋กœ ReadOnly

delete.php

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

    $userID = $_POST['userID'];

    $db_conn = db_connect();
    $sql = "DELETE FROM userTbl WHERE userID= '$userID'";
    $ret = mysqli_query($db_conn, $sql);
    if($ret){
        echo '<script type="text/javascript">'; 
        echo 'alert("ํšŒ์› ํƒˆํ‡ด๊ฐ€ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.\์•ˆ๋…•ํžˆ ๊ฐ€์‹ญ์‹œ์˜ค.");';
        echo 'document.location.href = "/index.php";';
        echo '</script>';
        exit();
    }else{
        echo "ํšŒ์› ํƒˆํ‡ด ์‹คํŒจ :" . mysqli_error($db_conn);
    }
    mysqli_close($db_conn);
?>

  • POST๋กœ ๋ฐ›์•„์˜จ ์œ ์ € id๋ฅผ ์ด์šฉํ•˜์—ฌ DB์—์„œ ํ•ด๋‹น id์˜ ๋‚ด์šฉ์„ ์ „๋ถ€ ์‚ญ์ œ
    • "DELETE FROM userTbl WHERE userID= '$userID'";
    • userID ๊ฐ€ PK ์ด๋ฏ€๋กœ, ์ด๊ฒƒ์„ ๊ธฐ์ค€์œผ๋กœ ํ•ด๋‹น ํ–‰์˜ ๋‚ด์šฉ์„ ์ „๋ถ€ ์‚ญ์ œ

ํ›„๊ธฐ
  • ์ฝ”๋“œ์— ์“ธ๋ชจ์—†๋Š” ๋ถ€๋ถ„์ด ๋งŽ์ด ๋“ค์–ด์žˆ๋Š” ๋“ฏ ํ•˜๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ฌ
  • ์ตœ๋Œ€ํ•œ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๋ ค ํ–ˆ์ง€๋งŒ ๊ธฐ๋Šฅ์„ ๋‚˜๋ˆ„๋‹ค๋ณด๋‹ˆ ๋”๋Ÿฌ์šด ์ฝ”๋“œ๊ฐ€ ๋‚˜์™”๋‹ค๋Š” ๋Š๋‚Œ
  • CSS๊ฐ€ ๋ฐœ์ „์ด ์—†์ด ๊ธฐ๋Šฅ ๊ตฌํ˜„์—๋งŒ ์‹ ๊ฒฝ์„ ์ผ๋‹ค๋Š” ์•„์‰ฌ์›€
  • ๋กœ๊ทธ์ธ ์œ ์ง€๋ฅผ ์œ„ํ•œ ์ฟ ํ‚ค์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ ๋ฌธ์ œ
    • ๋กœ๊ทธ์ธ ์œ ์ง€๋ฅผ ์œ„ํ•œ ์ฟ ํ‚ค๊ฐ€ ์‚ญ์ œํ–ˆ์„๋•Œ ๋ฐ”๋กœ ์ ์šฉ๋˜์ง€ ๋ชปํ•จ
    • ์ƒˆ๋กœ๊ณ ์นจ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์ƒ๊ฐ์ด ๋“ค์—ˆ์ง€๋งŒ ํ•œ๋ฒˆ๋งŒ ์ƒˆ๋กœ๊ณ ์นจํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ ๋ชปํ•จ
    • ์ƒˆ๋กœ๊ณ ์นจ์œผ๋กœ ํ•ด๊ฒฐํ•˜๋Š” ๋ฐฉ์‹์€ ๊ผผ์ˆ˜์ด๋ฉฐ, SEO ์นœํ™”์ ์ด์ง€ ๋ชปํ•จ (์ตœ์ ํ™” ๋ฌธ์ œ)
    • ์ฟ ํ‚ค์— ๋Œ€ํ•˜์—ฌ ์–ธ์ œ ์–ธ์ œ ์‚ญ์ œ ํ•ด์ค˜์•ผํ• ์ง€๋ฅผ ์ •ํ™•ํžˆ ํŒŒ์•… ๋ชปํ•จ

 

 

 

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