<?php
require ('db_connect.php');
$Name = $_POST["name"]; $Email = $_POST["email"]; $Message = $_POST["message"];
if( isset($_POST["submit2"]) ) {
$insertString2 = "INSERT INTO Messages(Name,Email,Message)
VALUES('$Name','$Email','$Message')";
mysql_query($insertString2);
header("Location:register.php?msg=Successfully Send Message! You will get reply soon...");
}
?>
这是我的代码。 MySQL部分正在运行。但这不会重定向到register.php
。为什么呢?
答案 0 :(得分:3)
您可以在其他代码之前的if条件中添加标题调用,只要您遵循手册建议的内容:
You can use output buffering ... by calling ob_start() and ob_end_flush() in your
script, or setting the output_buffering configuration directive on in your php.ini
or server configuration files.
如果您希望更改PHP.INI文件,可以打开输出缓冲,如下所示:
output_buffering = On
打开输出缓冲后,此代码结构应该起作用:
尝试使用此标题:
// setting variables here, then:
if (condition) {
// other code here, then:
$location = "http://yourdomain.whatever/register.php";
$encoded = urlencode("Successfully Send Message! You will get reply soon...");
header("Location: $location?msg=$encoded");
exit;
}
注意:当您使用header()时如果您对保持与http1.0的向后兼容性有任何顾虑,那么您应该提供一个完整的URL,包括协议是否为&#39; http&#39;,&# 39; HTTPS&#39;或者是其他东西。您的查询字符串还包含需要进行urlencoded的字符。将要编码的值传递给urlencode()后,字符串如下所示:
Successfully+Send+Message%21+You+will+get+reply+soon...
使用PHP的部分乐趣在于它可以很好地解码编码的URL。所以你只需要向用户显示一条消息就是在register.php上写下类似下面的代码:
<?php echo htmlentities($_GET['msg']);
如果您希望使用JavaScript解码$ _GET变量,请注意PHP和JavaScript不会以相同的方式对空间进行urlencode,因此您需要自己手动解码$ _GET变量的值而不是完全依赖在JavaScript的decodeURIComponent()上。以下JavaScript将对&#34; msg&#34;的值进行urldecode,包括转换任何&#39; +&#39;字符到空格中:
var str=location.search.substring(5);
str = decodeURIComponent( str );
str=str.replace(/\+/g, ' ');
alert(str); //Successfully Send Message! You will get reply soon...
答案 1 :(得分:0)
&#34; header()必须是重要的 在发送任何实际输出之前调用&#34; - 您可能会错过这一点。
也许你犯了这样的错误。你可以分享原始的完整源代码吗?