Сообщение пустых полей не отображается должным образом - PullRequest
0 голосов
/ 19 ноября 2018

Когда пользователь пытается отредактировать свое сообщение в блоге и оставил некоторые поля пустыми, он должен получить ошибку пустых полей, но код, который должен это сделать, игнорируется, и вместо этого я получаю совершенно другое сообщение об ошибке.

Мой вопрос: как правильно отображать пустые поля сообщения об ошибке?

Фрагменты кода из файла 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; ?>

Отредактировано (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 голосов
/ 11 декабря 2018

Для решения этой проблемы:

1.В первом фрагменте кода необходимо сохранить идентификатор записи в сеансе следующим образом:

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

2.В четвертом фрагменте кода необходимо проверить, имеет ли сеанс идентификатор следующим образом:

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

Теперь идентификатор записи сохраняется в сеансе, и после перенаправления можно снова получать данные из базы данных.

0 голосов
/ 19 ноября 2018

Вы перенаправляете пользователя, когда поля не заполнены.Вы не сохраняете сообщение, поэтому $ post не заполнено данными вашей формы.$ post ['author'] не существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...