创建一个<;a href>;元素是否会在PHP标头重定向中发生意外延迟?

创建一个<;a href>;元素是否会在PHP标头重定向中发生意外延迟?,php,redirect,http-headers,server-side,Php,Redirect,Http Headers,Server Side,我有一个页面,在POST方法中有一个表单,用户在其中发布一个z值, 转到以下处理它的PHP页面,并相应地重定向用户: <?php { if(isset($_POST['z'])){ switch ($_POST['z']) { case "a": $url = "http://www.a.com"; break; case "b": $url = "http://www.b.com"; brea

我有一个页面,在POST方法中有一个表单,用户在其中发布一个
z
值, 转到以下处理它的PHP页面,并相应地重定向用户:

<?php
{

if(isset($_POST['z'])){

    switch ($_POST['z']) {

    case "a":
        $url = "http://www.a.com";
        break;

    case "b":
        $url = "http://www.b.com";
        break;

    default:
        $url = "http://www.default.com/";
    }
}

header( "refresh:0;url=$url" );

}
?> 
<!doctype html>
<html>
<head>
<style>
.wrap{
    margin-top: 25%;
}
</style>
</head>
<body>
<div class="wrap">
You are now being redirected.
</div>
</body>
</html>

if
之前指定默认值,而不是在
default:
案例中:

$url = "http://www.default.com/";
if(isset($_POST['z'])){

    switch ($_POST['z']) {

    case "a":
        $url = "http://www.a.com";
        break;

    case "b":
        $url = "http://www.b.com";
        break;
    }
}

这样,如果由于某种原因没有设置
$\u POST['z']
,他们仍将获得默认重定向。

为什么将其标记为javascript?@richieahb如果他想在超时后动态更改DOM,他需要使用JS。由于重定向发生在服务器端,用户一开始就不应该看到消息。@JayBlanchard发布了当前代码,用户确实看到了这条消息。@richieahb也许也有一个JS解决方案,我不确定我会,虽然我会把这个答案作为一个有用的评论,但它并没有真正解决我的主要1+2问题。谢谢。我们谁也不知道为什么会发生1。和#2将不会因您在
a
中给出的原因而起作用,除非您希望回退使用硬编码的默认URL。
b
中的问题也将存在。无法在服务器上设置延迟,它必须在客户端上。如果你想延迟显示链接,你必须编写一些JavaScript@rockyraw如果你像Barmar那样编码,你将永远不需要JavaScript,用户也永远不会看到消息,除非他们导航到此页面而不使用表单。@JayBlanchard我主要关心的是访问者被重定向到
a.com
b.com
,因此,如果有任何问题与
$url
的定义方式无关,我需要这样的链接,因为默认情况下,将访问者发送到
default.com
根本不是我想做的事情,此外,还用于错误监控。
$url = "http://www.default.com/";
if(isset($_POST['z'])){

    switch ($_POST['z']) {

    case "a":
        $url = "http://www.a.com";
        break;

    case "b":
        $url = "http://www.b.com";
        break;
    }
}