[PHP] PHP 를 이용한 활용의 예
-
- 첨부파일 : 20241005150614.png (24.0K) - 다운로드
본문
PHP를 이용한 실제 활용 예시로, 간단한 회원 로그인 시스템을 구현해보겠습니다.
이 예제는 세션을 사용하여 로그인 상태를 관리하고, MySQL 데이터베이스와 연동하여 회원 정보를 저장 및 인증합니다.
1. 데이터베이스 설정
우선 MySQL에 users 테이블을 생성합니다.
CREATE DATABASE exampledb;
USE exampledb;
CREATE TABLE users (
id INT(11) AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
2. 회원가입 페이지 (register.php)
<?php
include 'db.php'; // 데이터베이스 연결
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = $_POST['username'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT); // 비밀번호 해시
$sql = "INSERT INTO users (username, password) VALUES ('$username', '$password')";
if ($conn->query($sql) === TRUE) {
echo "회원가입 성공!";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
?>
<form method="POST" action="">
Username: <input type="text" name="username" required><br>
Password: <input type="password" name="password" required><br>
<button type="submit">Register</button>
</form>
- password_hash(): 사용자 비밀번호를 안전하게 저장하기 위해 해시 처리합니다.
3. 로그인 페이지 (login.php)
<?php
session_start(); // 세션 시작
include 'db.php'; // 데이터베이스 연결
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM users WHERE username='$username'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
if (password_verify($password, $row['password'])) { // 비밀번호 확인
$_SESSION['username'] = $username; // 세션 설정
echo "로그인 성공! 환영합니다, " . $_SESSION['username'];
} else {
echo "잘못된 비밀번호입니다.";
}
} else {
echo "사용자가 존재하지 않습니다.";
}
}
?>
<form method="POST" action="">
Username: <input type="text" name="username" required><br>
Password: <input type="password" name="password" required><br>
<button type="submit">Login</button>
</form>
- session_start(): 세션을 시작하여 로그인 상태를 유지합니다.
- password_verify(): 해시된 비밀번호와 입력된 비밀번호를 비교합니다.
4. 로그아웃 페이지 (logout.php)
<?php
session_start();
session_unset();
session_destroy(); // 세션 삭제
echo "로그아웃 되었습니다.";
?>
5. 데이터베이스 연결 파일 (db.php)
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "exampledb";
// 데이터베이스 연결
$conn = new mysqli($servername, $username, $password, $dbname);
// 연결 확인
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
6. 로그인 후 접근 가능한 페이지 (welcome.php)
<?php
session_start();
if (!isset($_SESSION['username'])) {
header("Location: login.php"); // 로그인하지 않은 사용자는 로그인 페이지로 리다이렉트
exit();
}
echo "환영합니다, " . $_SESSION['username'] . "!";
?>
<a href="logout.php">로그아웃</a>
- 세션 검증: 로그인 상태를 확인하여, 로그인하지 않은 사용자는 로그인 페이지로 리다이렉트합니다.
7. 요약
이 예제는 다음과 같은 PHP의 기능을 활용합니다:
1. 회원가입: 사용자가 데이터베이스에 가입할 수 있는 기능.
2. 로그인: 사용자가 로그인하고 세션을 통해 인증 상태를 유지.
3. 로그아웃: 세션을 종료하여 로그인 상태 해제.
4. 비밀번호 보안: 비밀번호 해시와 검증을 통한 보안 유지.
이 방식은 PHP를 이용해 간단한 웹 애플리케이션을 만들 때 자주 사용되는 구조입니다. 더 발전시키면 사용자의 인증 및 권한 관리에 활용될 수 있습니다.
댓글목록0
댓글 포인트 안내