PHP重定向标头

时间:2015-08-23 18:54:40

标签: javascript php html

我不是PHP的专家,而且我正在尝试为我的简单网站创建公共聊天室。

我使用SQL数据库来存储消息。名为if($user->getSession()){ echo '<li><a href="index.php?page=25&id='.$user[id].'">My Profile</a></li>'; }else{ echo '<li><a class="button" href="#prvi">Join Us</a></li>'; } 的文件从数据库获取所有消息并将其显示给用户。它还有一个简单的表单,用PHP GET方法发送消息。以下是我的表格的代码。

chat_index.php

使用上面的代码,我将数据发送到<form method="get" action="sendmessage.php"> <input name="msg" placeholder="Message" data-theme="a" type="text"> <button type="submit" class="ui-btn ui-corner-all">Send</button> </form> 文件。在此文件中,使用此代码向数据库添加消息,用户重定向到sendmessage.php

chat_index.php

在浏览器窗口上正确加载重定向页面后。但URL就像这样结束

  

..... / sendmessage.php?MSG = test_message

因此,如果我重新加载再次发送的页面消息,并且网址会像这样正确

  

..... / chat_index.php

如何解决此问题?

已更新

  • 我尝试使用header("Location: chat_index.php"); exit(); 方法。但没有解决。浏览器显示POST中的内容和以chat_index.php
  • 结尾的网址

5 个答案:

答案 0 :(得分:0)

为什么要接收网址变量是因为您使用的是GET。改为使用POST,变量就会消失。

示例:

<form method="POST" action="sendmessage.php">

答案 1 :(得分:0)

如果您不想将数据发送到查询字符串,请使用POST代替GET

<form method="POST" action="sendmessage.php">

答案 2 :(得分:0)

这显然应该是POST表格。任何形式保存或更改服务器上的任何内容都应该是。否则(使用get)人们可以通过跟随链接来添加消息,这不是预期的。保存后的重定向是正常的。请注意,此类重定向仅在生成任何输出之前有效。

你发布的内容不能多说。您还应该检查邮件发布时是否正确触发了保存和重定向代码。

答案 3 :(得分:0)

这就是正在发生的事情,表单是从chat_index.php提交的,因此操作最终为chat_index.php/sendmessage.php。 要解决此问题,请更改按指示发布的方法,并将您的操作更改为/sendmessage.php 你的表格应该看起来像这样

<form method="POST" action="/sendmessage.php">
   ....
</form

希望这个帮助

答案 4 :(得分:0)

如果这是一个简单的论坛网站,那么根本不重定向就不那么复杂了。只需将您的操作属性设置为“”,当有人提交表单时,它会将数据发布回页面。所以做这样的事情:

<form method="post" action="">
    <input name="msg" placeholder="Message" data-theme="a" type="text">
    <input name="function" type="hidden" value="post_message">
    <button type="submit" class="ui-btn ui-corner-all">Send</button>
</form>

然后将sendmessage.php中的php代码放在启动DOCTYPE和html标签上方的chat_index.php中,并删除sendmessage.php。或者,在同一地点使用include('sendmessage.php')。然后当页面加载时,检查$ _POST ['function'] =='post_message',如果这个条件为真,那么执行sendmessage.php中的东西。这将更加紧凑,用户将被重定向一次而不是两次。此外,我不知道您的文件结构,但您可能希望将chat_index.php重命名为index.php,以使其直观,以便人们无法在您的目录中查看。