此联系人.php表单正在处理提交,然后重定向到新页面,然后突然停止工作。我尝试添加错误处理并将标题移动到所有其他标题的顶部,但都不起作用。表单仍在按预期提交数据,只是重定向不起作用。任何想法将不胜感激。
<?php
include 'config.php';
$post = (!empty($_POST)) ? true : false;
if($post)
{
$email = trim($_POST['email']);
$subject = "Downloaded Course Units";
$error = '';
if(!$error)
{
$mail = mail(WEBMASTER_EMAIL, $subject, $message,
"From: ".$email."'r'n"
."Reply-To: ".$email."'r'n"
."X-Mailer: PHP/" . phpversion());
if($mail)
{
echo 'OK';
header('location: http://www.google.com.au/');
exit();
}
}
}
?>
使用 javascript。
而不是
header('location: http://www.google.com.au/');
用
?>
<script type="text/javascript">
window.location.href = 'http://www.google.com.au/';
</script>
<?php
即使您的浏览器上输出了某些内容,它也会重定向。
但是,需要采取一种预防措施:即使页面上打印了某些内容,Javascript重定向也会重定向您的页面。
确保它不会跳过任何用 PHP 编写的逻辑。
header('location: http://www.google.com.au/');
行替换为以下代码以在 php 中重定向而不使用标头函数。
$URL="http://yourwebsite.com/";
echo "<script type='text/javascript'>document.location.href='{$URL}';</script>";
echo '<META HTTP-EQUIV="refresh" content="0;URL=' . $URL . '">';
如果你想知道为什么我同时使用元标记和JavaScript来重定向,那么答案很简单。
如果在浏览器中禁用了 JavaScript,则元标记将重定向页面。
包含后不起作用,回显。在没有包含的情况下重试,回声。OR 代替函数标头用
echo '<meta http-equiv="refresh" content="0; URL=http://www.google.com.au/">';
我用:
function GoToNow ($url){
echo '<script language="javascript">window.location.href ="'.$url.'"</script>';
}
用: 转到现在 ("http://example.com/url-&error=value");
重定向到html代码之后的另一个页面,那么使用location.href
javascript方法。
请参考此示例代码:
<html>
<head>
<title> Using the href property of the Location object</title>
</head>
<body>
<script language="JavaScript">
<!--
function show(){
document.location.href ="http://www.java2s.com";
}
-->
</script>
<form name="form1">
<br>
<input type="button" name="sethref" value="Set href" onClick='show()'>
<br>
</form>
</body>
</html>
除了上述答案之外,您还可以对文档和主窗口以及 iframe 使用以下 JavaScript 代码:
<script type="text/javascript" >
window.open('http://www.google.com.au/', '_self');
</script>
_self 在与链接文档相同的框架中打开链接的文档。
在上面的命令中,第二个参数的值类似于 HTML 中标签 A( <a></a>
) 中目标属性的值,除了 _self 值之外,还可以使用以下值:
_blank 在新窗口或选项卡中打开链接的文档
_parent 在父框架中打开链接的文档
_top 在窗口的整个正文中打开链接的文档
框架名称 在命名框架中打开链接的文档
如果您使用的是 javascript,则应使用 exit()
函数停止重定向函数下方脚本的每次执行。否则,如果有人在浏览器中关闭javascript
,则将执行以下语句。
只是一个使用 HEREDOC
和 PHP
的快速脚本,它允许您将重定向脚本存储到变量中,并且非常可读并提高可重用性。
$homePage = "'http://localhost:8000/'";
$redirect = <<<REDIRECT
<script type="text/javascript">
window.location.href = $homePage;
</script>
REDIRECT;
稍后在您的代码中,只要您需要吐出echo
echo $redirect;
更好的是,我们也可以将其添加到带有一些默认变量的名为 redirect 的函数中。
function redirect(string $slug = '/', string $root='http://localhost:8000'): string
{
return <<<REDIRECT
<script type="text/javascript">
window.location.href = '$root$slug' ;
</script>
REDIRECT;
}
转到默认http://localhost:8000/
echo redirect();
前往谷歌地图
echo redirect(slug : '/maps', root: 'https://www.google.com');
您可以在 php 表单中使用此短代码,它首先检查标头是否已使用 php 代码发送,如果是,则使用 JavaScript 代码 echo 重定向,如果标头尚未发送,php 将重定向到存储在 $URL 变量中的页面。仅在第一行中输入要重定向到的页面的 URL:$URL = "your_url.html;变量 $URL 将在代码的其余部分用于表示您的 URL:
$URL = "http://your_url.html";
if( headers_sent() )
{
echo("<script>location.href='$URL'</script>");
} else {
header("Location: $URL");
}
exit;