首頁 >後端開發 >PHP問題 >php怎麼實現點擊刪除去刪除一個帖子

php怎麼實現點擊刪除去刪除一個帖子

PHPz
PHPz原創
2023-03-29 10:13:04494瀏覽

隨著網路的普及,網站的建置也越來越成為了一種普遍的網路活動。在網站中,論壇的建設尤其受歡迎。許多人會在論壇中發布自己對某些事情的看法,或是提出一些問題,等待網友們的回覆。但許多人可能沒有接觸過後台的管理,也不知道如何透過程式碼實現網站中的一些功能。本篇文章將簡要介紹一個常見的需求:如何在論壇中透過點擊刪除按鈕來刪除一個貼文。

這裡我們假設了你已經有了一定的 php 基礎,能夠進行網站開發。為了讓你更好地理解和使用程式碼,本文將分為兩個部分。第一部分將簡要地帶領你了解要實現功能所需的程式碼,包括前台程式碼和後台程式碼;第二部分將詳細講解這部分程式碼的實作原理,以期讓你更能掌握知識。

一、程式碼實作

1.前台程式碼

在前台程式碼中,我們需要為貼文的每個使用者提供一個刪除按鈕。一般來說,刪除按鈕往往會被設計在貼文的右上角。具體實作方式如下所示:

<a href="delete_post.php?post_id=XXX" class="delete-button">删除</a>

在這段程式碼中,我們為刪除按鈕增加了一個href 屬性,該屬性指向了一個名為delete_post.php 的後台檔案。我們也在 href 屬性的值中傳入了一個 post_id 參數,該參數表示了待刪除的貼文的編號。

上述程式碼應該要嵌套在貼文的 HTML 程式碼中。在用戶瀏覽貼文的時候就能夠看到這個可以刪除貼文的按鈕。

2.後台程式碼

在後台程式碼中,我們需要透過delete_post.php 檔案來判斷用戶有沒有權限刪除帖子,如果有權限,就把該貼從資料庫中刪除。具體實作方式如下所示:

// 1.检查用户是否已经登录
session_start();
if (!isset($_SESSION["user_id"])) {
  echo "对不起,您还没有登录!";
  exit;
}

// 2.检查帖子是否存在
if (!isset($_GET["post_id"])) {
  echo "对不起,您访问的帖子不存在!";
  exit;
}

// 3.获取帖子编号
$post_id = $_GET["post_id"];

// 4.连接到数据库
$pdo = new PDO("mysql:host=localhost;dbname=my_db", "my_username", "my_password");

// 5.检查该用户是否能删除该帖子
$stmt = $pdo->prepare("SELECT user_id FROM posts WHERE post_id = ?");
$stmt->execute(array($post_id));
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
if (count($rows) !== 1 || $rows[0]["user_id"] !== $_SESSION["user_id"]) {
  echo "对不起,您没有权限删除该帖子!";
  exit;
}

// 6.删除帖子
$stmt = $pdo->prepare("DELETE FROM posts WHERE post_id = ?");
$stmt->execute(array($post_id));

echo "帖子删除成功!";

在上述程式碼中,我們依序檢查了使用者是否已登入、該貼文是否存在,並取得了該貼文的編號。然後,我們連接到資料庫中,檢查該用戶是否有權限刪除該貼,並最終刪除了該貼文。如果過程中出現了任何錯誤,我們會在網頁中輸出錯誤訊息。如果一切順利,我們會輸出貼文刪除成功的訊息。

二、實作原理

1.前台程式碼實作原理

前台程式碼實作的核心在於 HTML 中的 <a> 標籤。透過為這個標籤設定 href 屬性可以達到跳轉的效果。而透過為這個屬性傳遞參數,就可以在跳到目標頁面的同時,將這些參數傳給目標頁面。這樣,在目標頁面的 PHP 腳本中,就可以透過 $_GET 變數來取得這些參數了。上述程式碼中的 delete_post.php 文件,其實就是用來處理這個貼文刪除按鈕的頁面。當使用者在前台點擊這個按鈕的時候,瀏覽器會跳到 delete_post.php 文件,並把該貼文的編號傳遞給這個文件。

要注意的是,如果這個使用者沒有登錄,那應該在前台程式碼中提示使用者登錄,而不是讓使用者跳到後台處理。在本文的程式碼實作中,我們使用了 session 來判斷使用者是否已經登入。如果 $_SESSION["user_id"] 不存在,那就可以認為使用者並沒有登錄,此時應該輸出提示使用者登入的訊息,而不是跳到後台頁面。

2.後台程式碼實作原理

後台程式碼實作的核心是 PHP 中的 PDO 類別庫。透過使用這個類別庫,我們可以輕鬆地連接到 MySQL 資料庫,並以安全的方式執行 SQL 語句。

在後台程式碼中,我們需要做以下幾件事:

1)檢查使用者是否已經登入。在本文中,我們使用了 session 來儲存該使用者的登入狀態。如果 $_SESSION["user_id"] 不存在,那就可以認為使用者並沒有登錄,此時應該輸出提示使用者登入的資訊。

2)檢查帖子是否存在。在取得每個貼文的編號之前,我們需要先判斷這個貼文是否真的存在。如果不存在,就應該輸出提示該貼文不存在的資訊。

3)取得貼文編號。待我們已經確認了帖子存在,可以透過 $_GET 變數來取得該帖子的編號。

4)連接到資料庫。 PHP 中的 PDO 類別庫提供了許多方法來連接到 MySQL 資料庫。我們要做的就是使用這個類別庫建立一個連接對象,並呼叫相關方法來執行我們需要的 SQL 語句。

5)檢查該用戶是否能刪除該貼文。這裡,我們需要查詢資料庫中的 posts 表,並檢查該貼文是否存在,以及該使用者是否有權限刪除該貼文。最後,我們使用 prepare 函數來執行預處理語句,並使用 execute 函數執行 SQL 語句。

6)刪除貼文。如果該使用者有刪除貼文的權限,我們就可以使用 DELETE 語句從資料庫中刪除該貼了。

It should be noted that we must consider SQL injection vulnerabilities when executing SQL statements in PHP. In the implementation code introduced in this article, the PDO class library has enabled prepared statements by default, and parameter binding is also used to avoid injection vulnerabilities.

3. Summary

I hope that through studying this article, you can already understand how to delete a post in the forum by clicking the delete button. It is worth mentioning that we only provide a simple implementation method in this article and do not provide a detailed explanation of all implementation details. If you want to truly master this knowledge point, you need to have a deeper understanding of PHP and MySQL. We recommend that you refer to some tutorials dedicated to PHP and MySQL to better master this knowledge point.

以上是php怎麼實現點擊刪除去刪除一個帖子的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn