iT邦幫忙

2023 iThome 鐵人賽

DAY 27
0
影片教學

睡醒來聽 PHP 與 MySQL系列 第 27

[睡醒來聽 PHP 與 MySQL] DAY27 登入畫面、頁面跳轉、include 函式

  • 分享至 

  • xImage
  •  

Yes

Welcome 歡迎來到「睡醒來聽 PHP 與 MySQL」系列!

DAY27 今天要學甚麼?今天實作會員網站的登入功能~還有介紹實用功能

🔶章節:
🔹[開頭]
🔹[資料庫]
🔹[登入畫面]
🔹[登入處理]
🔹[將歡迎稱呼改為暱稱優先]
🔹[include介紹]
🔹[資料庫引入]
🔹[include介紹]
🔹[會員資料頁設定]
🔹[總結]

如果影片中不清楚,需要補充的地方我會再添加到這邊~
👆教學中的[練習]程式碼一併附上,影片中會有每組的講解、說明更清楚👆


include 使用

include '檔案名稱';

舉例子:
我們需要創建一個名為 db_connection.php 的檔案。
在 db_connection.php 中,我們將建立資料庫連接的程式碼。

<?php
$servername = "localhost"; // 資料庫伺服器名稱
$username = "your_username"; // 資料庫使用者名稱
$password = "your_password"; // 資料庫使用者密碼
$dbname = "your_database"; // 資料庫名稱

// 建立資料庫連接
$conn = new mysqli($servername, $username, $password, $dbname);

// 檢查連接是否成功
if ($conn->connect_error) {
    die("連接資料庫失敗: " . $conn->connect_error);
}
?>

我們可以在需要的頁面中使用:

    include 'db_connection.php';

這樣,db_connection.php 中的程式碼就會被嵌入到當前頁面中。不需要再重複寫相同的程式碼了~
/images/emoticon/emoticon39.gif


資料庫

因為上集的資料庫沒有打得完整,這邊再來更新一次

CREATE TABLE member (
    id INT AUTO_INCREMENT PRIMARY KEY,
    account VARCHAR(255) NOT NULL,
    username VARCHAR(255) NOT NULL,
    nickname VARCHAR(255),
    phone VARCHAR(20),
    email VARCHAR(255) NOT NULL,
    hashed_password VARCHAR(255) NOT NULL,
    salt VARCHAR(255) NOT NULL
);

登入處理(login.php)

<?php
session_start(); 

include 'db_connect.php';

$email = $conn->real_escape_string($_POST['email']);
$password = $conn->real_escape_string($_POST['password']);

$sql = "SELECT * FROM member WHERE email='$email'";
$result = $conn->query($sql);

if ($result->num_rows == 1) {
    $row = $result->fetch_assoc();
    $hashedPassword = hash('sha256', $password . $row['salt']);

    if ($hashedPassword === $row['hashed_password']) {
        $welcomeMessage = "登入成功,歡迎回來 ";
        $welcomeMessage .= !empty($row['nickname']) ? $row['nickname'] : $row['username'];
        echo $welcomeMessage;
        $_SESSION['user_id'] = $row['id'];
        header("Location: member.php");  
        exit();
    } else {
        echo "密碼錯誤,請重新嘗試。";
    }
} else {
    echo "帳號不存在,請註冊新帳號。";
}

$conn->close();
?>


會員資料(member.php)

<?php
session_start();  

if (!isset($_SESSION['user_id'])) {
    header("Location: loginWeb.php");  
    exit();
}


$userId = $_SESSION['user_id'];
include 'db_connect.php'; 
$sql = "SELECT * FROM member WHERE id='$userId'";
$result = $conn->query($sql);

if ($result->num_rows == 1) {
    $row = $result->fetch_assoc();
    $username = $row['username'];
    $email = $row['email'];
    $phone = $row['phone'];

    echo "歡迎回來, $username<br>";
    echo "郵件地址: $email<br>";
    echo "電話號碼: $phone<br>";
} else {
    echo "無法獲取用戶信息。";
}

$conn->close();
?>


資料庫連接(db_connect.php)

<?php
$servername = "指定資料庫伺服器的位址或 IP 位址";
$username = "指定資料庫使用者名稱";
$password = "與資料庫相關聯的密碼";
$dbname = "指定要連接的資料庫的名稱";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("連接資料庫失敗: " . $conn->connect_error);
}
?>


通過這個教學,你已經掌握了建立登入畫面、連接資料庫、驗證使用者身份、跳轉頁面以及顯示會員資料等關鍵技能。希望這些知識能夠幫助打造更安全、更功能豐富的網站應用。

透過所學,可以再延伸更多完善體驗~~/images/emoticon/emoticon08.gif試試看吧


上一篇
[睡醒來聽 PHP 與 MySQL] DAY26 註冊畫面+連接會員資料庫
下一篇
[睡醒來聽 PHP 與 MySQL] DAY28 預約使用者畫面(時間、查看、取消)
系列文
睡醒來聽 PHP 與 MySQL30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言