我希望每次有人发布的帖子都会显示在已存在的帖子下方。如果我使用它,它只替换最后一篇文章。 我该怎么办?
<?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"];
?>
答案 0 :(得分:0)
您必须在任何条件下将页面重定向到home.php
,但您还没有这样做。
如果执行后mysqli_query()
返回FALSE
或TRUE
,则标题位置将完成,这是不可取的。由于您需要echo
SESSION variable
到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()
说&#34;开始记住通常会输出的所有内容,但还没有做任何事情。&#34;
示例:
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");
}
?>
<强> home.php 强>
<?php
session_start();
echo $_SESSION["title"];
?>
注意:您的代码处于SQL Injection漏洞,建议您使用预准备语句以及
mysqli.*
Mysqli的预备语句参考: - http://php.net/manual/en/mysqli.prepare.php。
我认为我的解释很清楚,你可以纠正你的错误和代码非常好。
谢谢&amp;快乐的编码:)