php - 我有什么地方可以添加刷新标题而不会导致循环?
问题描述
我有这个程序有点像“用于测试目的”的聊天应用程序
它可以正常工作但是当我发送消息时我必须重新加载以使其出现在我的末端。
发送消息后,我尝试重新定义数据库中的文本,但没有成功。
我不想添加刷新按钮(我将添加只是为了更容易检查是否有人写了一些东西),但我希望在我写完之后出现消息。
所以想添加一个刷新头,php
遗憾的是它总是说头在某个地方被修改过,所以我在该代码之前添加了它,延迟了 1 秒,它工作但它循环。
有什么地方可以添加刷新标题还是有更好的解决方案?
<?php
ini_set('session.use_cookies', 0);
$file_pointer = "../../programs/chat-database/deb570314ba42230d7f5493b57b53970/driver.sys";
$dbc = file_get_contents($file_pointer);
?>
<form action="chat.php" method="post">
<title>Sm Chat</title>
<link rel="stylesheet" type="text/css" href="stylechat.css">
<head>
<div class="nazi">
<a style="text-decoration:none" href="index.html"> Home </a>
</div>
</head>
<body vlink='white' alink='white' link='white'>
<center>
<div class="cont">
<?php
echo "<br>" . $dbc
?>
</div>
</center>
<center>
<?php
ini_set('session.use_cookies', 0);
if(isset($_POST['btn']))
{
$msg = $_POST['msg'];
$usrfile = "usr.txt";
$usr = file_get_contents($usrfile);
$raw = "../../programs/chat-database/deb570314ba42230d7f5493b57b53970/driver.sys";
$fp = fopen( $raw, 'r+');
$messg = $dbc . $usr . " : " . $msg . "<br>";
fwrite($fp,$messg);
fclose ($fp);
$dbc = file_get_contents($raw);
$dbc = file_get_contents($raw);
$dbc = file_get_contents($raw);
}
?>
<div class="input-form">
<input type="text" value="" id="msg" name="msg" placeholder="Enter Your Message"/>
</div>
<input type="submit" value="Send" name="btn" class="btn"/>
</center>
解决方案
最好将所有PHP
代码放在页面顶部和页面HTML
下方。
您HTML
根本不正确,始终以<html>
标签开头并添加 a<head>
和 a <body>
。
我结构化了你的代码。
您应该在生成任何输出之前以及在语句中添加尽可能高的刷新标头,$_POST
以确保在它之前没有生成任何输出。
您还应该在刷新之前删除所有帖子值以防止循环。
看看这个参考:
https ://www.php.net/manual/en/function.header.php
请记住,必须在发送任何实际输出之前调用 header(),无论是通过普通 HTML 标记、文件中的空白行还是从 PHP 发送。使用 include 或 require 函数或其他文件访问函数读取代码并在调用 header() 之前输出空格或空行是一个非常常见的错误。使用单个 PHP/HTML 文件时也存在同样的问题。
这就是您的代码的样子:
<?php
ini_set('session.use_cookies', 0);
$file_pointer = "../../programs/chat-database/deb570314ba42230d7f5493b57b53970/driver.sys";
$dbc = file_get_contents($file_pointer);
if(isset($_POST['btn']))
{
$msg = $_POST['msg'];
$usrfile = "usr.txt";
$usr = file_get_contents($usrfile);
$raw = "../../programs/chat-database/deb570314ba42230d7f5493b57b53970/driver.sys";
$fp = fopen( $raw, 'r+');
$messg = $dbc . $usr . " : " . $msg . "<br>";
fwrite($fp,$messg);
fclose ($fp);
$dbc = file_get_contents($raw);
$dbc = file_get_contents($raw);
$dbc = file_get_contents($raw);
unset($_POST); // remove all post values
header("Location: yourpage.php"); // your refresh header
}
?>
<html>
<head>
<title>Sm Chat</title>
<link rel="stylesheet" type="text/css" href="stylechat.css">
</head>
<body vlink='white' alink='white' link='white'>
<div class="nazi">
<a style="text-decoration:none" href="index.html"> Home </a>
</div>
<center>
<div class="cont">
<?php
echo "<br>" . $dbc;
?>
</div>
</center>
<center>
<form action="chat.php" method="post">
<div class="input-form">
<input type="text" value="" id="msg" name="msg" placeholder="Enter Your Message"/>
</div>
<input type="submit" value="Send" name="btn" class="btn"/>
</form>
</center>
</body>
</html>
推荐阅读
- python - 如何在 Python 中返回 JSON“真”
- hive - 在 Hive 元存储错误中注册 Delta 表
- warnings - jsonschema:向架构添加警告/弃用
- powershell - 使用 Powershell 和 7zip 通过起始字母将文件放入单独的 .7z
- math - 如何计算(或旋转)垂直于直线的平面中的四个点
- python - 忽略包含某些文本的行的一部分
- json - 构建 JSON 字符串而不在结果集中重复结果
- c++ - 忽略读取数据并关闭套接字
- typescript - 如何在 Typescript 中表达这个函数签名?
- python - For循环跳过重复索引