[英]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()
執行后返回FALSE
或TRUE
則標頭位置將完成,這是不可取的。 因為您需要將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
您進行了以下修改以顯示要打印的會話變量。
檢查點在其他頁面打印會話變量
session_start()
,因為您需要將超級全局變量轉移到該頁面。ob_start()
的幫助下重新啟動輸出緩沖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.