Как получить уведомление о перенаправлении страницы с помощью PHP? - PullRequest
0 голосов
/ 28 мая 2020

Я создал форму HTML для обновления своих сообщений. Поэтому я использовал функцию header () для перенаправления страницы на Обновленную страницу , чтобы я мог видеть изменения. Но я хочу повторить сообщение на странице перенаправления . Я пробовал этот код, но он работает только на той же странице, а не на перенаправленной странице .

<?php
$query_2 = "UPDATE posts SET post_image = '$post_image' WHERE post_id = $post_id ";
    $query_2 .= "AND LENGTH('$post_image') > 0 AND post_image <> '$post_image' ";

    $editPostImg = mysqli_query($connection, $query_2); 

    if (!$editPostImg) {
        die("Something went wrong.<br>" . mysqli_error($connection));  
    }        

    header("Location: posts.php?source=edit_posts&p_id=$post_id");

    echo "<p class='alert alert-success'><strong>Post Updated!</strong> <a href='../post.php?p_id=$post_id' class='alert-link' target='blank'>View Post</a><a href='' class='close' data-dismiss='alert'>x</a></p>";
}    
?>

1 Ответ

0 голосов
/ 28 мая 2020

После следующей строки кода:

header("Location: posts.php?source=edit_posts&p_id=$post_id");

пользователь будет перенаправлен на новую страницу и не увидит код, который выполняется после директивы заголовка. Чтобы отобразить сообщение, вы должны отправить сообщение как параметр GET или POST. Тогда как первый вариант будет более легким.

Как упоминал @Dharman, ваш код широко открыт для SQL инъекций и должен использовать параметризованные подготовленные операторы. Вы можете использовать PDO или MySQLi . Я создаю решение с PDO, но на ваше усмотрение.

Таким образом, вы можете настроить свой скрипт следующим образом:

<?php

try{

    //Create new PDO Object
    $conn = new PDO("mysql:host=HOST;port=PORT;dbname=DBNAME", USERNAME, PASSWORD);

    //Define query
    $query = $this->conn->prepare("UPDATE posts SET post_image = :postimage WHERE 
    post_id = :postid AND LENGTH(post_image) > 0 AND post_image <> :postimage");
    $query->bindValue("postimage", $post_image);
    $query->bindValue("postid", $post_id);
    $query->execute();

    //Redirect user and add success message as GET parameter
    header("Location: posts.php?source=edit_posts&p_id=$post_id&update=success");

    //Make sure script is terminated
    exit();

}  catch(Exception $ex){

   //Log error
   error_log($ex->getMessage());

   //Show user custom error message
   echo "Something went wrong";

   //Make sure script is terminated
   exit();
}
?>

На целевой странице (сообщения php) вы можете затем вставьте фрагмент кода следующим образом:

<?php 

if(isset($_GET['update']) && $_GET['update'] == "success"){
    echo "<p class='alert alert-success'><strong>Post Updated!</strong> <a href='../post.php?p_id=$post_id' class='alert-link' target='blank'>View Post</a><a href='' class='close' data-dismiss='alert'>x</a></p>";
}

?>


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