簡體   English   中英

如何讓用戶帖子出現在頁面上?

[英]How to make users posts to appear on a page?

我希望每次有人發布的內容都顯示在已經存在的內容下方。 如果我使用它,它只會替換最后一個帖子。 我該怎么做?

<?php
session_start();
$db = mysqli_connect("localhost", "root", "", "store");
if (isset($_POST['button'])) {
    session_start();
    $title= mysqli_real_escape_string($db, $_POST['title']);
    $body= mysqli_real_escape_string($db, $_POST['body']);
    $sql = "INSERT INTO content (title,body) VALUES ('$title', '$body')"; 
    mysqli_query($db, $sql);
    $_SESSION["title"] = $title;
    header("location: home.php");
}
?>

在我想顯示的頁面上:

<?php
    session_start();
    php echo $_SESSION["title"];
?>

您必須在任何情況下將頁面重定向到home.php ,但您還沒有這樣做。

如果mysqli_query()執行后返回FALSETRUE則標頭位置將完成,這是不可取的。 因為您需要將SESSION variable echo顯到home.php頁面。

如果需要,您可以像這樣檢查條件。

if(mysqli_query($db, $sql))
{
// Here you can handle the TRUE loop
$_SESSION["title"] = $title;
header("location: home.php");
}
else
{
// Here you can handle the FALSE loop
}

home.php您進行了以下修改以顯示要打印的會話變量。

檢查點在其他頁面打印會話變量

  1. 確保您在頁面頂部有session_start() ,因為您需要將超級全局變量轉移到該頁面。
  2. 如果您需要顯示從數據庫查詢的任何內容,您需要確保數據庫連接到該頁面。
  3. 如果發生任何標題位置錯誤,請嘗試重新啟動輸出緩沖到您開始標題位置的頁面。 您可以在ob_start()的幫助下重新啟動輸出緩沖
  4. ob_start()必須僅在重定向問題中收到header already sent error時使用。

ob_start()用法:

ob_start()視為說“開始記住通常會輸出的所有內容,但還沒有對它做任何事情。”

例子:

ob_start();
echo("Welcome User!"); //would normally get printed to the screen/output to browser
$output = ob_get_contents();
ob_end_clean();

ob_start() - 打開輸出緩沖

此功能將打開輸出緩沖。 當輸出緩沖處於活動狀態時,腳本不會發送任何輸出(標題除外),而是將輸出存儲在內部緩沖區中。

可以使用ob_get_contents()將此內部緩沖區的內容復制到字符串變量中。 要輸出存儲在內部緩沖區中的內容,請使用 ob_end_flush()。 或者, ob_end_clean()將默默地丟棄緩沖區內容。

成功時返回TRUE ,失敗時返回FALSE

關於你提出的問題,你必須做出一些改變

您已經啟動了session ,這很好,但是您已將php附加到 echo 語句,這看起來不正確。

代替:

php echo $_SESSION["title"];

和:

echo $_SESSION["title"];

相反,所有其他代碼都很好。

整個頁面看起來像這樣。

<?php
session_start();
$db = mysqli_connect("localhost", "root", "", "store");
if (isset($_POST['button'])) {
    //session_start(); This is not needed at all already you have started the session.
    $title= mysqli_real_escape_string($db, $_POST['title']);
    $body= mysqli_real_escape_string($db, $_POST['body']);
    $sql = "INSERT INTO content (title,body) VALUES ('$title', '$body')"; 
    mysqli_query($db, $sql);
    $_SESSION["title"] = $title;
    header("location: home.php");
}
?>

主頁.php

<?php
    session_start();
    echo $_SESSION["title"];
?>

注意:您的代碼存在 SQL 注入漏洞,建議將准備好的語句與mysqli.*一起使用mysqli.*

Mysqli 的准備語句參考: - http://php.net/manual/en/mysqli.prepare.php

我認為我的解釋對您糾正錯誤和代碼很清楚。

謝謝&快樂編碼:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM