首页 > 解决方案 > 我有什么地方可以添加刷新标题而不会导致循环?

问题描述

我有这个程序有点像“用于测试目的”的聊天应用程序
它可以正常工作但是当我发送消息时我必须重新加载以使其出现在我的末端。
发送消息后,我尝试重新定义数据库中的文本,但没有成功。
我不想添加刷新按钮(我将添加只是为了更容易检查是否有人写了一些东西),但我希望在我写完之后出现消息。

所以想添加一个刷新头,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">&nbsp; Home &nbsp;</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>

标签: phphtml

解决方案


最好将所有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">&nbsp; Home &nbsp;</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>

推荐阅读