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

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

Mar 29, 2023 am 10:13 AM

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

여기에서는 귀하가 이미 특정 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으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

비 차단 작업에 PHP에서 비동기 작업을 사용하는 방법은 무엇입니까? 비 차단 작업에 PHP에서 비동기 작업을 사용하는 방법은 무엇입니까? Mar 10, 2025 pm 04:21 PM

이 기사는 웹 응용 프로그램 응답 성을 향상시키기 위해 PHP에서 비동기 작업 실행을 탐구합니다. 메시지 대기열, 비동기 프레임 워크 (Reactphp, Swoole) 및 백그라운드 프로세스와 같은 방법을 자세히 설명합니다.

PHP에서 메시지 대기열 (Rabbitmq, Redis)을 구현하는 방법은 무엇입니까? PHP에서 메시지 대기열 (Rabbitmq, Redis)을 구현하는 방법은 무엇입니까? Mar 10, 2025 pm 06:15 PM

이 기사는 RabbitMQ 및 Redis를 사용하여 PHP에서 메시지 대기열을 구현하는 것을 자세히 설명합니다. 그것은 그들의 아키텍처 (AMQP 대 메모리), 기능 및 신뢰성 메커니즘 (확인, 트랜잭션, 지속성)을 비교합니다. 설계, 오류에 대한 모범 사례

최신 PHP 코딩 표준 및 모범 사례는 무엇입니까? 최신 PHP 코딩 표준 및 모범 사례는 무엇입니까? Mar 10, 2025 pm 06:16 PM

이 기사에서는 PSR 권장 사항 (PSR-1, PSR-2, PSR-4, PSR-12)에 중점을 둔 현재 PHP 코딩 표준 및 모범 사례를 검토합니다. 일관된 스타일링, 의미있는 이름 지정 및 EFF를 통해 코드 가독성 및 유지 관리 개선을 강조합니다.

반사를 사용하여 PHP 코드를 분석하고 조작하는 방법은 무엇입니까? 반사를 사용하여 PHP 코드를 분석하고 조작하는 방법은 무엇입니까? Mar 10, 2025 pm 06:12 PM

이 기사는 PHP의 반사 API를 설명하여 런타임 검사 및 클래스, 방법 및 속성의 조작을 가능하게합니다. 일반적인 사용 사례 (문서 생성, ORM, 종속성 주입)에 대해 자세히 설명하고 성능에 대한 경고

PHP 확장 및 PECL로 어떻게 작업합니까? PHP 확장 및 PECL로 어떻게 작업합니까? Mar 10, 2025 pm 06:12 PM

이 기사는 PECL에 중점을 둔 PHP 확장을 설치 및 문제 해결에 대해 자세히 설명합니다. 설치 단계 (찾기, 다운로드/컴파일, 서버 활성화, 다시 시작), 문제 해결 기술 (로그 확인, 설치 확인, 설치 확인,

PHP 8 JIT (정시) 편집 : 성능 향상 방법. PHP 8 JIT (정시) 편집 : 성능 향상 방법. Mar 25, 2025 am 10:37 AM

PHP 8의 JIT 컴파일은 자주 실행되는 코드를 컴퓨터 코드로 컴파일하여 성능을 향상시켜 계산이 많은 응용 프로그램에 도움이되고 실행 시간을 줄입니다.

PHP에서 메모리 최적화 기술을 사용하는 방법은 무엇입니까? PHP에서 메모리 최적화 기술을 사용하는 방법은 무엇입니까? Mar 10, 2025 pm 04:23 PM

이 기사는 PHP 메모리 최적화를 다룹니다. 적절한 데이터 구조 사용, 불필요한 객체 생성을 피하고 효율적인 알고리즘을 사용하는 것과 같은 기술을 자세히 설명합니다. 공통 메모리 누출 소스 (예 : 미세한 연결, Global v

PHP 생태계 및 커뮤니티를 어떻게 최신 상태로 유지합니까? PHP 생태계 및 커뮤니티를 어떻게 최신 상태로 유지합니까? Mar 10, 2025 pm 06:16 PM

이 기사는 PHP 생태계에서 최신 상태를 유지하기위한 전략을 탐구합니다. 공식 채널, 커뮤니티 포럼, 컨퍼런스 및 오픈 소스 기부금을 강조합니다. 저자는 새로운 기능을 배우기위한 최고의 리소스와

See all articles