以下是您提供的英文文本翻译成繁體中文的內容:

PHP - Login Example

# PHP - 登錄範例:初學者的全面指南

你好,未來的PHP大師!今天,我們將踏上一段令人興奮的旅程,進入PHP登錄系統的世界。別擔心如果你之前從未寫過一行代碼 - 我將成為你的友好導遊,帶領你一步步學習,並提供大量的範例和解釋。在本教程結束時,你將創建屬於自己的登錄系統。是不是很興奮?讓我們開始吧!

## 了解基礎知識

在我們開始編碼之前,讓我們快速了解一下登錄系統究竟是如何工作的。把它想像成你網站上的數字保鏢。它會檢查某人是否有權進入(認證)然後決定他們有權做些什麼(授權)。是不是很酷?

## HTML表單:前端入口

我們的旅程從HTML表單開始 - 這是用戶實際看到並與之互動的部分。這就像我們數字房屋的前門。

### 創建模組登錄表單

讓我們創建一個簡單的HTML表單:

```html
<form action="login.php" method="POST">
    <label for="username">用戶名:</label>
    <input type="text" id="username" name="username" required><br><br>

    <label for="password">密碼:</label>
    <input type="password" id="password" name="password" required><br><br>

    <input type="submit" value="登錄">
</form>

讓我們來分析一下:

  1. <form>:這是我們表單元素的容器。
  2. action="login.php":這告訴表單在提交時將數據發送到哪裡。
  3. method="POST":這指定了如何發送數據(POST對於密碼來說更安全)。
  4. <input>:這是用戶輸入信息的字段。
  5. type="password":這會在輸入時隱藏密碼。
  6. required:這確保用戶在提交表單之前不能留空這些字段。

PHP認證:後端魔法

現在我們有了表單,讓我們創建一個PHP腚本來處理登錄嘗試。這裡才是真正的魔法發生之處!

創建login.php

<?php
session_start();

$valid_username = "user123";
$valid_password = "password123";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = $_POST['username'];
    $password = $_POST['password'];

    if ($username == $valid_username && $password == $valid_password) {
        $_SESSION['loggedin'] = true;
        $_SESSION['username'] = $username;
        echo "歡迎,$username!你現在已經登錄了。";
    } else {
        echo "無效的用戶名或密碼。請重試。";
    }
}
?>

哇,這有點難以消化!讓我們一步步分解:

  1. session_start();:這個函數開始一個新的或恢復一個現有的會話。
  2. 我們定義了有效的憑據(在真實系統中,這些會來自數據庫)。
  3. 我們檢查表單是否使用POST提交。
  4. 我們检索提交的用戶名和密碼。
  5. 我們比較提交的憑據與有效的憑據。
  6. 如果它們匹配,我們設置會話變量以記住用戶已登錄。
  7. 如果它們不匹配,我們顯示一個錯誤消息。

重要的安全提示

在真實世界的場景中,你不應該像我們這樣以明文形式存儲密碼。總是使用像bcrypt這樣的安全散列算法。但為了學習目的,這個簡化的版本足夠了!

完整代碼:將一切整合在一起

現在,讓我們看看我們的HTML和PHP是如何一起工作的。我們將創建兩個文件:

  1. login.html(我們的表單)
  2. login.php(我們的認證腚本)

login.html

<!DOCTYPE html>
<html lang="zh-tw">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>登錄頁面</title>
</head>
<body>
    <h2>登錄</h2>
    <form action="login.php" method="POST">
        <label for="username">用戶名:</label>
        <input type="text" id="username" name="username" required><br><br>

        <label for="password">密碼:</label>
        <input type="password" id="password" name="password" required><br><br>

        <input type="submit" value="登錄">
    </form>
</body>
</html>

login.php

<?php
session_start();

$valid_username = "user123";
$valid_password = "password123";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $username = $_POST['username'];
    $password = $_POST['password'];

    if ($username == $valid_username && $password == $valid_password) {
        $_SESSION['loggedin'] = true;
        $_SESSION['username'] = $username;
        echo "歡迎,$username!你現在已經登錄了。";
    } else {
        echo "無效的用戶名或密碼。請重試。";
    }
}
?>

這就是全部!一個簡單但功能完整的登錄系統。當用戶在login.html中提交表單時,數據會被發送到login.php,該腚本會處理登錄嘗試並相應地回應。

結論

恭喜你!你剛剛創建了自己的第一個PHP登錄系統。記住,這只是一個為學習目的而設計的基本範例。在真實的應用程序中,你會想要添加更多的安全功能,使用數據庫來存儲用戶信息,並實現正規的密碼散列。

隨著你繼續在PHP的道路上前進,你將學習到更多進階技術,使你的登錄系統更加安全和高效。持續練習,保持好奇心,在你意識到之前,你將能夠輕鬆地建立複雜的網絡應用程序!

這裡是一個總結我們使用過的PHP函數和概念的表格:

函數/概念 描述
session_start() 開始或恢復會話
$_POST 访問POST數據的超全局變量
$_SERVER 包含伺服器和執行環境信息的超全局變量
$_SESSION 访問會話數據的超全局變量

記住,每一個編程大師都是從初學者開始的。所以如果有些東西立刻不理解也不要氣餒。堅持下去,你會對自己能夠用PHP創造出來的東西感到驚奇!

Credits: Image by storyset