我正在为 PHP 实践创建一个基本的内容管理系统。以下是从 CMS 中删除帖子的示例代码:
<?php
session_start();
include '../DatabaseConnection.php';
if (!isset($_SESSION['logged_in'])) {
header('Location:index.php');
exit();
}
if (isset($_POST['deleteconfirm'])) {
$id = $_GET['id'];
$dbobj = new DBConnect();
$dbobj -> connect();
$query = sprintf("delete from `data` where `id` = %d", $id);
$results = $dbobj -> sqlQuery($query);
if ($results) {
$dbobj -> disconnect();
}
header('Location:home.php');
exit();
} elseif (isset($_POST['deletecancel'])) {
header('Location:home.php');
exit();
}
?>
<html>
<head>
<title> Admin Area of CMS ! Delete Post</title>
<link rel="stylesheet" type="text/css" href="../template/style.css"/>
</head>
<body>
<div id="container">
<div id="logo">
<h1><a href="../index.php">CMS</a></h1>
A minimal Content Management System
</div>
<div id="content">
<form action="post-delete.php" method="post">
<div id="deletealert">
<h3 >You really want to delete this post?</h3>
<p>
This action cannot be undone !
</p>
<input type="submit" name="deleteconfirm" value="Yes"/>
<input type="submit" name="deletecancel" value="No"/>
</div>
</form>
</div>
</div>
</body>
</html>
其他一切似乎都工作正常,除了当我点击删除帖子然后点击“是”确认时,页面被重定向到主页而不删除实际帖子。
任何指示或帮助表示赞赏。如果我错过了上下文中的重要内容,请告诉我。
更新:
问题出在代码中:
<form action="post-delete.php" method="post">
我还必须将 传递id
给脚本,$id
如下所示:
<form action="post-delete.php?id=<?php echo $id; ?>" method="post">
感谢大家的帮助。现在问题已经解决了:)
1> 查询之前运行完全正常,帖子实际上已被删除。然后我以是/否的形式添加了来自用户的额外确认。
此外,当用户单击“否”时,他会被正确重定向回来。只是当他单击“是”时,他被重定向到主页而没有实际删除帖子。
2> 该id
字段是从处理主页(home.php)的脚本传递的。然后它将此页面称为“php-delete.php”。