>백엔드 개발 >PHP 문제 >PHP로 게시판에 로그인하는 방법

PHP로 게시판에 로그인하는 방법

PHPz
PHPz원래의
2023-04-24 10:47:56833검색

인터넷의 발달과 함께 게시판은 사용자가 메시지를 남기고 소통하고 의견을 공유할 수 있는 대화형 플랫폼을 제공하는 웹사이트의 중요한 부분 중 하나입니다. 게시판에는 사용자가 로그인을 하고 자신의 정보를 남길 수 있는 곳이 웹사이트 개발자라면 간단하고 사용하기 쉬운 로그인 게시판의 구현이 필요합니다. 이 기사에서는 PHP 언어를 사용하여 게시판에 로그인하는 방법을 소개합니다.

1. 환경 준비

개발을 시작하기 전에 XAMPP, WAMP, MAMP 등 PHP 통합 개발 환경을 설치해야 합니다. 여기서는 XAMPP를 예로 들어 보겠습니다. 설치 후 XAMPP의 htdocs 디렉터리에 프로젝트 파일을 배치해야 합니다. 그런 다음 브라우저를 열고 http://localhost/phpmyadmin/으로 이동하여 "message_board"라는 데이터베이스를 생성하고 그 안에 "messages"라는 테이블을 생성합니다. 이 테이블에는 ID, 이름, 이메일, 메시지와 타임스탬프. 그 중 id 필드는 자동 증가하는 기본 키이고, timestamp 필드는 현재 시간입니다.

2. 페이지 디자인

PHP에서는 게시판에 로그인하기 위한 일련의 인터페이스와 대화형 프로세스를 디자인해야 합니다. 우리의 첫 번째 목표는 사용자가 인증을 위해 사용자 이름과 비밀번호를 입력하고 메시지 게시판 페이지로 이동하는 로그인 페이지를 만드는 것입니다.

다음은 간단한 로그인 페이지 소스 코드입니다:

<!DOCTYPE html>
<html>
<head>
    <title>Login Page</title>
</head>
<body>
    <h2>Login Here</h2>
    <form action="login.php" method="post">
        <label>Username:</label>
        <input type="text" name="username"><br><br>
        <label>Password:</label>
        <input type="password" name="password"><br><br>
        <input type="submit" value="Login">
    </form>
</body>
</html>

사용자가 "로그인" 버튼을 클릭하면 양식이 제출되고 login.php 페이지로 이동됩니다. 이 페이지에서는 사용자가 입력한 사용자 이름과 비밀번호가 올바른지 데이터베이스에서 확인해야 합니다. 확인에 성공하면 세션 변수를 설정한 후 게시판 페이지로 이동합니다. 확인에 실패하면 오류 메시지와 함께 로그인 페이지가 반환됩니다.

다음은 login.php 페이지의 소스코드입니다.

<?php
    /*检查登录信息并跳转*/
    session_start();
    $username = $_POST[&#39;username&#39;];
    $password = $_POST[&#39;password&#39;];

    /*数据库连接*/
    $servername = "localhost";
    $db_username = "root";
    $db_password = ""; /*默认密码为空*/
    $dbname = "message_board";

    $conn = new mysqli($servername, $db_username, $db_password, $dbname);

    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    /*获取用户信息*/
    $sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
    $result = $conn->query($sql);

    if ($result->num_rows > 0) {
        /*验证通过,创建会话变量*/
        $_SESSION['username'] = $username;
        header("Location: message_board.php");
    } else {
        /*验证失败,返回登陆页面*/
        echo "Invalid username/password. Please try again.";
        header("Location: login.html");
    }

    $conn->close();
?>

3. 게시판 구현

로그인 페이지 및 로그인 인증을 완료한 후 게시판 페이지를 디자인하고 구현해야 합니다. 이 페이지는 모든 메시지를 표시하고 사용자가 메시지를 남길 수 있는 양식을 제공해야 합니다. 로그인 페이지와 마찬가지로 사용자가 메시지 양식을 제출하면 데이터베이스에서 모든 메시지를 가져와서 페이지에 표시해야 합니다.

다음은 메시지 게시판 페이지의 소스 코드입니다.

<?php
    /*检查会话变量并跳转*/
    session_start();

    if (!isset($_SESSION[&#39;username&#39;])) {
        header("Location: login.html");
    }

    /*数据库连接*/
    $servername = "localhost";
    $db_username = "root";
    $db_password = "";
    $dbname = "message_board";

    $conn = new mysqli($servername, $db_username, $db_password, $dbname);

    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    /*获取所有留言*/
    $sql = "SELECT * FROM messages";
    $result = $conn->query($sql);
?>

<!DOCTYPE html>
<html>
<head>
    <title>Message Board</title>
</head>
<body>
    <h2>Welcome, <?php echo $_SESSION[&#39;username&#39;]; ?></h2>
    <form action="logout.php" method="post">
        <input type="submit" value="Logout">
    </form>

    <h3>Post a message:</h3>
    <form action="post_message.php" method="post">
        <label>Name:</label>
        <input type="text" name="name"><br><br>
        <label>Email:</label>
        <input type="email" name="email"><br><br>
        <label>Message:</label>
        <textarea name="message" rows="3" cols="40"></textarea><br><br>
        <input type="submit" value="Post">
    </form>

    <h3>Messages:</h3>
    <?php
        if ($result->num_rows > 0) {
            while($row = $result->fetch_assoc()) {
                echo "<p><strong>" . $row["name"]. "</strong> (". $row["email"] ."): " . $row["message"]. " <br>[". $row["timestamp"] ."]</p>";
            }
        } else {
            echo "No messages yet. Be the first one to leave a message!";
        }
    ?>

</body>
</html>

<?php
    $conn->close();
?>

이 페이지에서는 모든 메시지 정보를 가져와서 페이지에 하나씩 표시합니다. 또한 사용자가 쉽게 로그아웃할 수 있도록 메시지 게시판 페이지에 "로그아웃" 버튼을 추가했습니다. 사용자가 이 버튼을 클릭하면 모든 세션 변수가 삭제되고 로그인 페이지로 돌아갑니다.

4. 메시지 제출 구현

마지막으로 양식 처리 프로그램을 구현해야 합니다. 이 프로그램에서는 사용자가 제출한 메시지 정보를 가져와 데이터베이스에 저장한 다음 메시지 게시판으로 돌아갑니다. 페이지를 클릭하고 제출된 메시지를 표시합니다.

다음은 메시지 제출 프로그램의 소스 코드입니다.

<?php
    /*接收并处理留言*/
    session_start();

    /*获取表单提交信息*/
    $name = $_POST[&#39;name&#39;];
    $email = $_POST[&#39;email&#39;];
    $message = $_POST[&#39;message&#39;];

    /*数据库连接*/
    $servername = "localhost";
    $db_username = "root";
    $db_password = "";
    $dbname = "message_board";

    $conn = new mysqli($servername, $db_username, $db_password, $dbname);

    if ($conn->connect_error) {
        die("Connection failed: " . $conn->connect_error);
    }

    /*存储留言*/
    $sql = "INSERT INTO messages (name, email, message) VALUES ('$name', '$email', '$message')";
    if ($conn->query($sql) === TRUE) {
        header("Location: message_board.php");
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }

    $conn->close();
?>

이 프로그램은 메시지 정보를 수신하여 데이터베이스에 저장한 후 메시지 게시판 페이지로 돌아갑니다. 사용자가 게시판 페이지로 돌아오면 자동으로 페이지가 새로 고쳐지고 새 메시지가 표시됩니다.

요약

이번 글에서는 PHP 언어를 사용하여 간단하고 사용하기 쉬운 로그인 게시판을 구현하고 각 페이지의 디자인과 구현을 자세하게 소개했습니다. 물론 이는 단순한 예일 뿐입니다. 보다 복잡한 웹사이트나 기능을 개발하려면 PHP 언어 및 기타 관련 기술을 심도 있게 배워야 합니다. 그러나 이 예제를 공부하면 PHP에서 양식 처리, 데이터베이스 작업 및 세션 관리에 대한 기본 지식과 기술을 습득할 수 있습니다.

위 내용은 PHP로 게시판에 로그인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.