Maison >développement back-end >Problème PHP >Comment supprimer un message en php en cliquant sur Supprimer

Comment supprimer un message en php en cliquant sur Supprimer

PHPz
PHPzoriginal
2023-03-29 10:13:04503parcourir

Avec la popularité d'Internet, la création de sites Web est devenue de plus en plus une activité en ligne courante. Dans les sites Web, la construction de forums est particulièrement populaire. De nombreuses personnes publieront leurs opinions sur certaines choses sur le forum ou poseront des questions, en attendant les réponses des internautes. Mais de nombreuses personnes n'ont peut-être pas été exposées à la gestion backend et ne savent pas comment implémenter certaines fonctions du site Web via du code. Cet article présentera brièvement un besoin courant : comment supprimer un message dans le forum en cliquant sur le bouton Supprimer.

Ici, nous supposons que vous disposez déjà d’une certaine base PHP et que vous êtes capable de développer des sites Web. Afin que vous puissiez mieux comprendre et utiliser le code, cet article sera divisé en deux parties. La première partie vous amènera brièvement à comprendre le code nécessaire à l'implémentation de la fonction, y compris le code front-end et le code back-end ; la deuxième partie expliquera en détail le principe d'implémentation de cette partie du code, en espérant vous permettre de le faire ; mieux saisir les connaissances.

1. Implémentation du code

1. Code front-end

Dans le code front-end, nous devons fournir un bouton de suppression pour chaque utilisateur de la publication. De manière générale, le bouton Supprimer est souvent conçu dans le coin supérieur droit de la publication. L'implémentation spécifique est la suivante :

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

Dans ce code, nous ajoutons un attribut href au bouton de suppression, qui pointe vers un fichier nommé delete_post.php fichier d'arrière-plan. Nous passons également un paramètre post_id dans la valeur de l'attribut href, qui représente le numéro de la publication à supprimer. 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

Le code ci-dessus doit être imbriqué dans le code HTML de la publication. Lorsque les utilisateurs parcourent les publications, ils peuvent voir ce bouton pour supprimer les publications. 🎜🎜2. Code backend🎜🎜Dans le code backend, nous devons utiliser le fichier delete_post.php pour déterminer si l'utilisateur a l'autorisation de supprimer la publication. S'il a l'autorisation, supprimez la publication de. la base de données. L'implémentation spécifique est la suivante : 🎜rrreee🎜Dans le code ci-dessus, nous avons vérifié si l'utilisateur s'est connecté, si la publication existe et obtenu le numéro de la publication. Nous nous sommes ensuite connectés à la base de données, avons vérifié si l'utilisateur avait l'autorisation de supprimer la publication et avons finalement supprimé la publication. Si des erreurs surviennent au cours du processus, nous afficherons des messages d'erreur sur la page Web. Si tout se passe bien, nous afficherons un message indiquant que le message a été supprimé avec succès. 🎜🎜2. Principe de mise en œuvre🎜🎜1. Principe de mise en œuvre du code front-end🎜🎜Le cœur de la mise en œuvre du code front-end réside dans la balise <a> en HTML. L'effet de saut peut être obtenu en définissant l'attribut href pour cette balise. En transmettant des paramètres pour cet attribut, vous pouvez transmettre ces paramètres à la page cible tout en accédant à la page cible. De cette manière, dans le script PHP de la page cible, ces paramètres peuvent être obtenus via la variable $_GET. Le fichier delete_post.php dans le code ci-dessus est en fait la page utilisée pour traiter le bouton de suppression de cette publication. Lorsque l'utilisateur clique sur ce bouton au premier plan, le navigateur accède au fichier delete_post.php et transmet le numéro de publication à ce fichier. 🎜🎜Il convient de noter que si l'utilisateur n'est pas connecté, il doit être invité à se connecter dans le code de premier plan au lieu de le laisser passer au traitement en arrière-plan. Dans l'implémentation du code de cet article, nous utilisons session pour déterminer si l'utilisateur s'est connecté. Si $_SESSION["user_id"] n'existe pas, on peut considérer que l'utilisateur n'est pas connecté. À ce stade, un message invitant l'utilisateur à se connecter doit être affiché au lieu de passer à la page d'arrière-plan. 🎜🎜2. Principe d'implémentation du code backend🎜🎜Le cœur de l'implémentation du code backend est la bibliothèque de classes PDO en PHP. En utilisant cette bibliothèque de classes, nous pouvons facilement nous connecter à la base de données MySQL et exécuter des instructions SQL en toute sécurité. 🎜🎜Dans le code d'arrière-plan, nous devons faire les choses suivantes : 🎜🎜1) Vérifiez si l'utilisateur est connecté. Dans cet article, nous utilisons session pour stocker le statut de connexion de l'utilisateur. Si $_SESSION["user_id"] n'existe pas, on peut considérer que l'utilisateur n'est pas connecté et un message invitant l'utilisateur à se connecter doit être affiché. 🎜🎜2) Vérifiez si la publication existe. Avant d’obtenir le numéro de chaque publication, nous devons d’abord déterminer si la publication existe réellement. S'il n'existe pas, un message indiquant que le message n'existe pas doit être affiché. 🎜🎜3) Récupérez le numéro de publication. Après avoir confirmé que la publication existe, nous pouvons obtenir le numéro de publication via la variable $_GET. 🎜🎜4) Connectez-vous à la base de données. La bibliothèque de classes PDO en PHP fournit de nombreuses méthodes pour se connecter à une base de données MySQL. Tout ce que nous avons à faire est d'utiliser cette bibliothèque de classes pour créer un objet de connexion et appeler les méthodes appropriées pour exécuter les instructions SQL dont nous avons besoin. 🎜🎜5) Vérifiez si l'utilisateur peut supprimer la publication. Ici, nous devons interroger la table posts dans la base de données et vérifier si la publication existe et si l'utilisateur est autorisé à supprimer la publication. Enfin, nous utilisons la fonction prepare pour exécuter des instructions préparées et la fonction execute pour exécuter des instructions SQL. 🎜🎜6) Supprimez la publication. Si l'utilisateur est autorisé à supprimer des publications, nous pouvons utiliser l'instruction DELETE pour supprimer la publication de la base de données. 🎜

Il convient de noter que nous devons prendre en compte les vulnérabilités d'injection SQL lors de l'exécution d'instructions SQL en PHP. Dans le code d'implémentation présenté dans cet article, la bibliothèque de classes PDO a activé les instructions préparées par défaut et la liaison de paramètres est également utilisée pour éviter les vulnérabilités d'injection.

3. Résumé

J'espère qu'en étudiant cet article, vous pourrez déjà comprendre comment supprimer un message dans le forum en cliquant sur le bouton Supprimer. Il convient de mentionner que nous fournissons uniquement une méthode de mise en œuvre simple dans cet article et ne fournissons pas d'explication détaillée de tous les détails de mise en œuvre. Si vous voulez vraiment maîtriser ce point de connaissances, vous devez avoir une compréhension plus approfondie de PHP et MySQL. Nous vous recommandons de vous référer à certains tutoriels dédiés à PHP et MySQL pour mieux maîtriser ce point de connaissance.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn