一個(gè)簡(jiǎn)單的郵件系統(tǒng)實(shí)例(基于Session)

DataBase


**注意*md5* 32位加密**

connect.inc.php

<?php
    /**
     *connect.inc.php作為數(shù)據(jù)庫(kù)連接的公共文件
     * 使用PDO連接MyAQL
     */

    define("DBN", "mysql:host=localhost;dbname=testmail");  // 定義連接MySQL的DSN
    define("DBUSER", "mysql_user"); // MySQL登錄用戶
    define("DBPASS", "mysql_pwd");  // MySQL登錄密碼


    try {
        $pdo = new PDO(DBN, DBUSER, DBPASS);    // 創(chuàng)建連接數(shù)據(jù)庫(kù)的PDO對(duì)象
    } catch(PDOException $e) {
        die("連接失?。?" . $e -> getMessage()); // 失敗退出并打印錯(cuò)誤報(bào)告
    }
?>

login.php

<?php
    /**
     * login.php 提供用戶登錄表單和處理用戶登錄
     */
    session_start();

    require "connect.inc.php";  // 包含連接數(shù)據(jù)庫(kù)的文件
    if (isset($_POST["sub"])) { // 如果用戶點(diǎn)擊提交表單的事件則進(jìn)行驗(yàn)證
        $stmt = $pdo ->prepare("SELECT id, username FROM user WHERE username=? and userpwd=?");
        $stmt -> execute(array($_POST["username"], md5($_POST["password"])));
        if ($stmt -> rowCount() > 0) {  // 如果能從user表獲取到數(shù)據(jù)則登錄成功
            $_SESSION = $stmt -> fetch(PDO::FETCH_ASSOC);   // 將用戶信息全部注冊(cè)到Session中
            $_SESSION["isLogin"] = 1;   //注冊(cè)一個(gè)用來(lái)判斷登錄成功的變量
            header("Location:index.php");   // 將腳步執(zhí)行轉(zhuǎn)向郵件系統(tǒng)的首頁(yè)
        } else {
            echo '<font color="red">用戶名或密碼錯(cuò)誤?。?!</font>';    //如果用戶名或密碼無(wú)效則登錄失敗
        }
    }

?>

<!DOCTYPE html>
<html>
<head>
    <title>郵件登錄系統(tǒng)</title>
</head>
    <body>
        <p>歡迎光臨郵件登錄系統(tǒng),Session ID : <?php echo session_id(); ?></p>
        <form action="login.php" method="post">
            用戶名:<input type="text" name="username"><br>
            密    碼:<input type="password" name="password"><br>
            <input type="submit" name="sub" value="登錄">
        </form>
    </body>
</html>

index.php

<?php
    /**
     * index.php 主頁(yè)面,用于顯示用戶信息及當(dāng)前用戶的郵件信息
     */
    session_start();

    if (isset($_SESSION["isLogin"]) && $_SESSION["isLogin"] === 1) {    // 判斷Session中的登錄變量值是否為1
        echo "<p>當(dāng)前用戶為: <b>" . $_SESSION["username"] . "</b>,  ";   // 輸?shù)卿浻脩裘?        echo "<a href='logout.php'>退出</a></p>"; // 提供退出操作鏈接
    } else {
        header("Location:login.php");   // 轉(zhuǎn)向登錄頁(yè)面重新登錄
        exit;   // 退出程序而不向下執(zhí)行
    }

?>

<!DOCTYPE html>
<html>
<head>
    <title>郵件系統(tǒng)</title>
</head>
    <body>
        <?php
            require "connect.inc.php";
            // 通過(guò)Session中傳遞的user id,作為mail表的查詢條件,獲取這個(gè)用戶的郵件列表
            $stmt = $pdo -> prepare("SELECT id, mailtitle, maildt FROM MAIL WHERE uid=?");
            $stmt -> execute(array($_SESSION['id']));
        ?>
        <p>你信箱中有<b><?php echo $stmt -> rowCount(); ?></b>郵件</p>
        <table border="0" cellspacing="0" cellpadding="0" width="380">
            <tr>
                <th>編號(hào)</th><th>郵件標(biāo)題</th><th>接收時(shí)間</th>
            </tr>
            <?php
                while (list($id, $mailtitle, $maildt) = $stmt -> fetch(PDO::FETCH_NUM)) {
                    echo '<tr align="center">';
                    echo '<td>' . $id . '</td>';
                    echo '<td>' . $mailtitle . '</td>';
                    echo '<td>' . date("Y-m-d H:i:s", $maildt) . '</td>';
                    echo '</tr>';
                }
            ?>
        </table>
    </body>
</html>

logout.php

<?php

    session_start();

    $username = $_SESSION["username"];
    $_SESSION = array();
    if (isset($_COOKIE[session_name()])) {
        setcookie(session_name(), '', time()-42000, '/');
    }
    session_destroy();

?>

<!DOCTYPE html>
<html>
<head>
    <title>退出系統(tǒng)</title>
</head>
    <body>
        <p><?php echo $username ?>再見(jiàn)!</p>
        <p><a href="login.php">重新登錄郵件系統(tǒng)</a></p>
    </body>
</html>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容