我正在为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>
其他所有内容似乎都运行良好,除非我点击删除帖子然后点击&#34;是&#34;确认,页面被重定向到主页而不删除实际的帖子。
任何指针或帮助表示赞赏。如果我在背景下错过了重要的事情,请告诉我。
更新:
问题出现在代码中:
<form action="post-delete.php" method="post">
我必须将id
传递给来自$id
的脚本,如下所示:
<form action="post-delete.php?id=<?php echo $id; ?>" method="post">
感谢大家的帮助。问题现已解决:)
1&GT;该查询之前运行完全正常,并且该帖子实际上已被删除。然后我以YES / NO。
的形式添加了用户的额外确认此外,当用户单击“否”时,他被正确地重定向回来。只要他点击“是”,他就会被重定向到主页而不会实际删除帖子。
2 - ;正在从处理主页的脚本(home.php)传递id
字段。然后它调用此页面&#34; php-delete.php&#34;。
答案 0 :(得分:0)
首先,将标题部分放入if
,这样只有在删除元素时才会重定向。
if ($results) {
$dbobj -> disconnect();
header('Location:home.php');
}
第一次,这肯定不会重定向你,因为你的sql查询应该会出错;
在mysql_error()
部分使用else
来查看问题。
答案 1 :(得分:0)
将以下内容添加到表单中:
<input type="hidden" name="id" value="<?php echo $id; ?>"/>
改变:
$id = $_GET['id'];
要:
$id = $_POST['id'];