问题与Php脚本的逻辑

时间:2013-07-28 13:16:04

标签: php forms

我正在为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;。

2 个答案:

答案 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'];