ホームページ >バックエンド開発 >PHPの問題 >PHPで「削除」をクリックして投稿を削除する方法

PHPで「削除」をクリックして投稿を削除する方法

PHPz
PHPzオリジナル
2023-03-29 10:13:04495ブラウズ

インターネットの普及に伴い、Web サイトの構築はますます一般的なネットワーク活動になってきました。 Web サイトでは、フォーラムの構築が特に人気があります。多くの人がフォーラムに特定の事柄について意見を投稿したり、質問をしたりして、ネチズンからの返答を待ちます。しかし、多くの人はバックエンド管理に慣れておらず、コードを通じて Web サイトに一部の機能を実装する方法を知りません。この記事では、一般的なニーズである、削除ボタンをクリックしてフォーラムの投稿を削除する方法を簡単に紹介します。

ここでは、すでに特定の PHP 基盤があり、Web サイト開発を実行できることを前提としています。コードをよりよく理解して使用できるように、この記事は 2 つの部分に分かれています。最初の部分では、フロントエンド コードとバックエンド コードを含む、関数の実装に必要なコードを簡単に理解できます。2 番目の部分では、コードのこの部分の実装原理を詳細に説明します。知識をよりよく把握します。

1. コードの実装

1. フロントエンド コード

フロントエンド コードでは、投稿の各ユーザーに削除ボタンを提供する必要があります。一般的に削除ボタンは投稿の右上にデザインされることが多いです。具体的な実装は次のとおりです。

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

このコードでは、href 属性を削除ボタンに追加します。これは、delete_post.php backend という名前のファイルを指します。ファイル。また、削除する投稿の番号を表す 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 "帖子删除成功!";

上記のコードでは、ユーザーがログインしているかどうか、投稿が存在するかどうかを順に確認し、投稿の番号を取得しています。次に、データベースに接続し、ユーザーに投稿を削除する権限があるかどうかを確認し、最終的に投稿を削除しました。処理中にエラーが発生した場合は、Web ページにエラー メッセージが出力されます。すべてがうまくいけば、投稿が正常に削除されたことを示すメッセージが出力されます。

2. 実装原則

1. フロントエンド コード実装原則

フロントエンド コード実装の中核は <a>## にあります。 HTMLの#タグ。ジャンプ効果は、このタグの 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 ステートメントを使用してデータベースから投稿を削除できます。

要注意的是,我們在PHP執行SQL語句時一定要考慮SQL注入漏洞。在本文介紹的實作程式碼中,PDO類別庫已經預設開啟了預處理語句,也使用了參數綁定來避免注入漏洞。

三、總結

希望透過本文的學習,你已經可以了解如何在論壇中透過點擊刪除按鈕來刪除一個貼文了。值得一提的是,我們在本文中只是給了一個簡單的實作方法,並沒有對所有實作細節做出詳盡的解釋。如果想要真正掌握這個知識點,還需要對 PHP 和 MySQL 有更深入的理解。我們建議你可以參考一些專門講解 PHP 和 MySQL 的教程,以便更好地掌握這個知識點。

以上がPHPで「削除」をクリックして投稿を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。