>백엔드 개발 >PHP 문제 >삭제를 클릭하여 PHP에서 게시물을 삭제하는 방법

삭제를 클릭하여 PHP에서 게시물을 삭제하는 방법

PHPz
PHPz원래의
2023-03-29 10:13:04497검색

인터넷이 대중화되면서 웹사이트 구축이 점점 더 일반적인 온라인 활동이 되었습니다. 웹사이트에서는 포럼 구축이 특히 인기가 있습니다. 많은 사람들이 포럼에 특정 사항에 대해 자신의 의견을 게시하거나 질문을 하면서 네티즌의 답변을 기다립니다. 그러나 많은 사람들은 백엔드 관리에 대해 접해 본 적이 없으며 코드를 통해 웹 사이트의 일부 기능을 구현하는 방법을 모릅니다. 이 기사에서는 일반적인 요구 사항, 즉 삭제 버튼을 클릭하여 포럼에서 게시물을 삭제하는 방법을 간략하게 소개합니다.

여기에서는 귀하가 이미 특정 PHP 기초를 갖고 있고 웹사이트 개발을 수행할 수 있다고 가정합니다. 코드를 더 잘 이해하고 사용할 수 있도록 이 문서는 두 부분으로 나누어집니다. 첫 번째 부분에서는 프런트엔드 코드와 백엔드 코드를 포함하여 기능을 구현하는 데 필요한 코드를 간략하게 이해하게 됩니다. 두 번째 부분에서는 이 코드 부분의 구현 원리를 자세히 설명합니다. 지식을 더 잘 파악하세요.

1. 코드 구현

1. 프론트엔드 코드

프론트엔드 코드에서는 게시물의 각 사용자에게 삭제 버튼을 제공해야 합니다. 일반적으로 삭제 버튼은 게시물의 오른쪽 상단에 디자인되는 경우가 많습니다. 구체적인 구현은 다음과 같습니다.

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

이 코드에서는 삭제 버튼에 delete_post.php 배경 파일이라는 파일을 가리키는 href 속성을 ​​추가합니다. 또한 삭제할 게시물의 번호를 나타내는 href 속성 값에 post_id 매개변수를 전달합니다. 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

위 코드는 게시물의 HTML 코드 내에 중첩되어야 합니다. 사용자가 게시물을 탐색할 때 게시물을 삭제하는 이 버튼을 볼 수 있습니다. 🎜🎜2. 백엔드 코드🎜🎜백엔드 코드에서 사용자에게 게시물 삭제 권한이 있는지 확인하려면 delete_post.php 파일을 사용해야 합니다. 데이터베이스. 구체적인 구현은 다음과 같습니다. 🎜rrreee🎜위 코드에서는 사용자의 로그인 여부, 게시물 존재 여부를 확인하고 게시물 번호를 얻어왔습니다. 그런 다음 데이터베이스에 연결하여 사용자에게 게시물 삭제 권한이 있는지 확인한 후 최종적으로 게시물을 삭제했습니다. 이 과정에서 오류가 발생하면 웹 페이지에 오류 메시지가 출력됩니다. 모든 과정이 순조롭게 진행되면 게시물이 성공적으로 삭제되었다는 메시지가 출력됩니다. 🎜🎜2. 구현 원리🎜🎜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 문을 사용하여 데이터베이스에서 게시물을 삭제할 수 있습니다. 🎜

PHP에서 SQL 문을 실행할 때 SQL 주입 취약점을 고려해야 한다는 점에 유의해야 합니다. 이 글에 소개된 구현 코드에서 PDO 클래스 라이브러리는 기본적으로 준비된 문을 활성화했으며, 주입 취약점을 방지하기 위해 매개변수 바인딩도 사용됩니다.

3. 요약

이 기사를 통해 삭제 버튼을 클릭하여 포럼에서 게시물을 삭제하는 방법을 이미 이해하셨기를 바랍니다. 이 기사에서는 간단한 구현 방법만 제공하고 모든 구현 세부 사항에 대한 자세한 설명을 제공하지 않는다는 점을 언급할 가치가 있습니다. 이 지식 포인트를 진정으로 마스터하려면 PHP와 MySQL에 대한 더 깊은 이해가 필요합니다. 이 지식 포인트를 더 잘 익히려면 PHP 및 MySQL 전용 튜토리얼을 참조하는 것이 좋습니다.

위 내용은 삭제를 클릭하여 PHP에서 게시물을 삭제하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.