空字段消息无法正确显示

时间:2018-11-19 10:29:09

标签: php session

当用户尝试编辑其博客文章并将某些字段留空时,他应该得到空字段错误,但是,应该执行的代码被忽略,而我却得到了完全不同的错误消息。

我的问题:如何正确显示空白字段错误消息?

editpost.php文件中的代码段:

1。检查空字段:

// Check for empty fields
if (empty($title) || empty($body)) {
    // Save correct data into fields
    header('Location: editpost.php?error=emptyeditpostfield&title='.$title.'&body='.$body);
    // Stop script
    exit();
} else {
    $query = "UPDATE posts SET title='$title', body='$body' WHERE id = {$update_id}";
}

2。所需消息:

<!-- Check if user has rights to editing post -->
    <?php if (isset($_SESSION['id'])) : ?>
        <?php if ($_SESSION['name'] == $post['author']) : ?>
            <div class="container">
                <h1>Edit Post</h1>
                <?php 
                    // Message I want to show
                    if (isset($_GET['error'])) {
                        if ($_GET['error'] == 'emptyeditpostfield') {
                            echo '<p class="text-warning">Fill in all fields!</p>';
                        }
                    }
                ?>
                <!-- Edit post form... -->

3。我收到的消息:

<!-- /Edit post form... -->
            </div>
        <?php else : header('Location: index.php?error=accessdenied'); exit(); // Message I got ?>
        <?php endif; ?>
    <?php else : header('Location: index.php?error=accessdenied'); exit(); ?>
    <?php endif; ?>

已编辑(11月30日)。

4。代码也是此问题的一部分:

    // Get ID
    $id = mysqli_real_escape_string($conn, $_GET['id']);

    // Create Query
    $query = "SELECT * FROM posts WHERE id = $id";

    // Get Result
    $result = mysqli_query($conn, $query);

    // Fetch Data
    $post = mysqli_fetch_assoc($result);
    // var_dump($posts);

    // Free Result
    mysqli_free_result($result);

    // Close Connection
    mysqli_close($conn);

图片1.带有空白字段的提交后的警告。

Warnings

图片2.编辑帖子页面。

Edit Post Page

2 个答案:

答案 0 :(得分:0)

在未填写字段时,您将重定向用户。您不保存该帖子,因此$ post不会填充您的表单数据。 $ post ['author']不存在。

答案 1 :(得分:0)

要解决此问题:

1。在第一个代码段中,需要在会话中存储帖子ID,如下所示:

// Store post id in session
session_start();
$_SESSION['update_id'] = $update_id;

2。在第四段代码中,需要检查会话是否具有id,如下所示:

// Get ID
if (isset($_SESSION['update_id'])) {
    $id = $_SESSION['update_id'];
} else {
    $id = $_GET['id'];
}

现在帖子ID存储在会话中,重定向后可以再次从数据库检索数据。