216.73.216.140 TODAY : 1,807
์ž๋ฃŒ์‹ค ์„œ๋ธŒ ํƒ€์ดํ‹€ ์•„์ด์ฝ˜

์˜จ๋ผ์ธ ๊ฐ•์˜

 > 

PHP - ์ค‘๊ธ‰

๐Ÿ“š PHP ์ค‘๊ธ‰ - 2์ฃผ์ฐจ: ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ ์‹œ์Šคํ…œ ๊ตฌํ˜„ - 02 ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ (๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ, ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‹ฑ)

์ž๋ฃŒ ๊ธฐ๋ณธ์ •๋ณด

๐Ÿ“š PHP ์ค‘๊ธ‰ - 2์ฃผ์ฐจ: ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ ์‹œ์Šคํ…œ ๊ตฌํ˜„ - 02 ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ (๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ, ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‹ฑ)

์ฃผ์š” ํ”„๋กœ๊ทธ๋žจ ์ŠคํŽ™

  • ํ‰์ : 10.0
  • ๋ผ์ด์„ ์Šค: free

ํ”ผ๋“œ๋ฐฑ ๋ฐ ๋‹ค์šด๋กœ๋“œ

  • ์‚ฌ์šฉ์ž ํ‰์ : 10.0
  • ์กฐํšŒ: 124
  • ๋‹ค์šด: 1

์ œ์กฐ์‚ฌ ๋ฐ ๋“ฑ๋ก ์ •๋ณด

  • ์ œ์ž‘์‚ฌ: LUZENSOFT
  • ๋“ฑ๋ก์ผ: 2025-07-17 15:28:53
  •  

- ์„ค๋ช…

๐Ÿ“š PHP ์ค‘๊ธ‰ - 2์ฃผ์ฐจ: ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ ์‹œ์Šคํ…œ ๊ตฌํ˜„ - 02 ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ (๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ, ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‹ฑ)





์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” ์ง€๋‚œ์ฃผ์— ์ด์–ด #ํšŒ์›๊ฐ€์ž… ๋ฐ #๋กœ๊ทธ์ธ ์‹œ์Šคํ…œ ๊ตฌํ˜„์˜ ๋‘ ๋ฒˆ์งธ ๋‹จ๊ณ„๋กœ, #ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ์— ์ดˆ์ ์„ ๋งž์ถฐ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ #๋ฐ์ดํ„ฐ์˜ #์œ ํšจ์„ฑ์„ ๊ฒ€์‚ฌํ•˜๊ณ  #๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ #์•ˆ์ „ํ•˜๊ฒŒ #ํ•ด์‹ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.







1. ํšŒ์›๊ฐ€์ž… ํผ (HTML)

1. ํšŒ์›๊ฐ€์ž… ํผ (HTML)

ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ž…๋ ฅ๋ฐ›์„ #HTML #ํผ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ #์•„์ด๋””, #๋น„๋ฐ€๋ฒˆํ˜ธ, #๋น„๋ฐ€๋ฒˆํ˜ธ ํ™•์ธ, #์ด๋ฉ”์ผ ๋“ฑ์˜ ํ•„๋“œ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

HTML




    
    
    ํšŒ์›๊ฐ€์ž…
    


    

ํšŒ์›๊ฐ€์ž…

' . htmlspecialchars($_SESSION['error_message']) . '
'; unset($_SESSION['error_message']); // ๋ฉ”์‹œ์ง€ ํ‘œ์‹œ ํ›„ ์‚ญ์ œ } ?>







2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์„ค์ •

2. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์„ค์ •

ํšŒ์› ์ •๋ณด๋ฅผ ์ €์žฅํ•  #๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์—ฐ๊ฒฐํ•˜๋Š” ์„ค์ •์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. db_config.php ํŒŒ์ผ์„ ํ†ตํ•ด #๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค #์—ฐ๊ฒฐ์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

PHP

connect_error) {
    die("๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ฐ๊ฒฐ ์‹คํŒจ: " . $conn->connect_error);
}

// ๋ฌธ์ž ์ธ์ฝ”๋”ฉ ์„ค์ • (UTF-8)
$conn->set_charset("utf8mb4");
?>







3. ํšŒ์›๊ฐ€์ž… ์ฒ˜๋ฆฌ ๋กœ์ง (PHP)

3. ํšŒ์›๊ฐ€์ž… ์ฒ˜๋ฆฌ ๋กœ์ง (PHP)

register_process.php ํŒŒ์ผ์—์„œ ์‹ค์ œ ํšŒ์›๊ฐ€์ž… ์ฒ˜๋ฆฌ ๋กœ์ง์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์—์„œ๋Š” ๋‹ค์Œ ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์นฉ๋‹ˆ๋‹ค:

  1. #๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ: ์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ #์œ ํšจํ•œ์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

  2. #๋น„๋ฐ€๋ฒˆํ˜ธ #ํ•ด์‹ฑ: ๋ณด์•ˆ์„ ์œ„ํ•ด ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ํ•ด์‹ฑํ•ฉ๋‹ˆ๋‹ค.

  3. #๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ: ์œ ํšจํ•˜๊ณ  ํ•ด์‹ฑ๋œ ๋ฐ์ดํ„ฐ๋ฅผ #๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

PHP

', $errors);
    header('Location: register.php');
    exit();
}

// 3. ์•„์ด๋”” ์ค‘๋ณต ํ™•์ธ
// SQL Injection ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด prepared statement ์‚ฌ์šฉ
$stmt = $conn->prepare("SELECT id FROM users WHERE username = ?");
$stmt->bind_param("s", $username);
$stmt->execute();
$stmt->store_result();

if ($stmt->num_rows > 0) {
    $_SESSION['error_message'] = "์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์•„์ด๋””์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์•„์ด๋””๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ์„ธ์š”.";
    $stmt->close();
    $conn->close();
    header('Location: register.php');
    exit();
}
$stmt->close();

// 4. ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‹ฑ (๋งค์šฐ ์ค‘์š”!)
// password_hash() ํ•จ์ˆ˜๋Š” ์†”ํŠธ(salt)๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•˜์—ฌ ์•ˆ์ „ํ•˜๊ฒŒ ํ•ด์‹ฑํ•ฉ๋‹ˆ๋‹ค.
$hashed_password = password_hash($password, PASSWORD_BCRYPT);

// 5. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์‚ฌ์šฉ์ž ์ •๋ณด ์ €์žฅ
// SQL Injection ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด prepared statement ์‚ฌ์šฉ
$stmt = $conn->prepare("INSERT INTO users (username, password, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $username, $hashed_password, $email);

if ($stmt->execute()) {
    // ํšŒ์›๊ฐ€์ž… ์„ฑ๊ณต
    $_SESSION['success_message'] = "ํšŒ์›๊ฐ€์ž…์ด ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.";
    header('Location: login.php'); // ์„ฑ๊ณต ์‹œ ๋กœ๊ทธ์ธ ํŽ˜์ด์ง€๋กœ ์ด๋™
    exit();
} else {
    // ํšŒ์›๊ฐ€์ž… ์‹คํŒจ
    $_SESSION['error_message'] = "ํšŒ์›๊ฐ€์ž…์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์‹œ ์‹œ๋„ํ•ด์ฃผ์„ธ์š”. ์˜ค๋ฅ˜: " . $stmt->error;
    header('Location: register.php');
    exit();
}

// ์—ฐ๊ฒฐ ์ข…๋ฃŒ
$stmt->close();
$conn->close();
?>







4. ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ƒ์„ธ ์„ค๋ช…

4. ๋ฐ์ดํ„ฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์ƒ์„ธ ์„ค๋ช…

register_process.php์—์„œ ์‚ฌ์šฉ๋œ ์ฃผ์š” #๋ฐ์ดํ„ฐ #์œ ํšจ์„ฑ #๊ฒ€์‚ฌ ๊ธฐ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.







5. ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‹ฑ (Hashing)

5. ๋น„๋ฐ€๋ฒˆํ˜ธ ํ•ด์‹ฑ (Hashing)

#๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ #ํ‰๋ฌธ์œผ๋กœ #๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜๋Š” ๊ฒƒ์€ #๋งค์šฐ #์œ„ํ—˜ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์œ ์ถœ๋  ๊ฒฝ์šฐ ๋ชจ๋“  ์‚ฌ์šฉ์ž ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋…ธ์ถœ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด #๋น„๋ฐ€๋ฒˆํ˜ธ #ํ•ด์‹ฑ์ด ํ•„์ˆ˜์ ์ž…๋‹ˆ๋‹ค.

#PHP์—์„œ๋Š” password_hash() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์•ˆ์ „ํ•˜๊ฒŒ ํ•ด์‹ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

PHP

$hashed_password = password_hash($password, PASSWORD_BCRYPT);

๋‚˜์ค‘์— ๋กœ๊ทธ์ธ ์‹œ์—๋Š” password_verify() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ์™€ ํ•ด์‹ฑ๋œ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๋น„๊ตํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.







6. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ์ƒ์„ฑ (SQL)

6. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ํ…Œ์ด๋ธ” ์ƒ์„ฑ (SQL)

์œ„ PHP ์ฝ”๋“œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋™์ž‘ํ•˜๋ ค๋ฉด your_database_name ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์— users ํ…Œ์ด๋ธ”์ด ์ƒ์„ฑ๋˜์–ด ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ users ํ…Œ์ด๋ธ”์„ ์ƒ์„ฑํ•˜๋Š” #SQL ์ฟผ๋ฆฌ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

SQL

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(255) NOT NULL UNIQUE,
    password VARCHAR(255) NOT NULL,
    email VARCHAR(255) NOT NULL UNIQUE,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);







๊ฒฐ๋ก 


์ด๋ฒˆ ํฌ์ŠคํŒ…์—์„œ๋Š” #PHP๋ฅผ ์ด์šฉํ•œ #ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ ๊ตฌํ˜„์˜ ํ•ต์‹ฌ์ธ #๋ฐ์ดํ„ฐ #์œ ํšจ์„ฑ ๊ฒ€์‚ฌ์™€ #๋น„๋ฐ€๋ฒˆํ˜ธ #ํ•ด์‹ฑ์— ๋Œ€ํ•ด ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์•ˆ์ „ํ•˜๊ณ  ๊ฒฌ๊ณ ํ•œ ํšŒ์›๊ฐ€์ž… ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ด๋Ÿฌํ•œ #๋ณด์•ˆ ์ธก๋ฉด์„ ์ฒ ์ €ํžˆ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.


์ด ์นดํ…Œ๊ณ ๋ฆฌ Navigation
← ์ด์ „: ๐Ÿ“š PHP ์ค‘๊ธ‰ - 2์ฃผ์ฐจ: ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ ์‹œ์Šคํ…œ ๊ตฌํ˜„ - 01 ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์Šคํ‚ค๋งˆ ์„ค๊ณ„ (์‚ฌ์šฉ์ž ํ…Œ์ด๋ธ”) ๐Ÿ“š PHP ์ค‘๊ธ‰ - 2์ฃผ์ฐจ: ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ ์‹œ์Šคํ…œ ๊ตฌํ˜„ - 03 ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ (์„ธ์…˜ ๊ธฐ๋ฐ˜ ์ธ์ฆ) ์ดํ›„ →
์ „์ฒด ์นดํ…Œ๊ณ ๋ฆฌ Navigation
← ์ด์ „: ๋ฃจ์  ์†Œํ”„ํŠธ NTOPPRO ์„œ์ด์ถ” ํ”„๋กœ๊ทธ๋žจ ์ž๋™ ๋กœ๊ทธ์ธ ๊ธฐ๋Šฅ ์ถ”๊ฐ€, ์‚ฌ์šฉ์ž ์•Œ๋ฆผ ์„œ๋น„์Šค ๊ฐœ์„  ๐Ÿš€ ๋‹น์‹ ์˜ ๋””์ง€ํ„ธ ์—ฌ์ •์„ ์•ˆ์ „ํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ, ๋ฃจ์  VPN๊ณผ ํ•จ๊ป˜! ๐Ÿš€ ์ดํ›„ →