执行代码后的PHP重定向

时间:2010-03-17 13:15:52

标签: php

我有一个php页面,它接收了一堆url参数并发送了一封电子邮件。在发送邮件之后,我试图让这个页面使用相同的url参数调用另一个网页。如果我执行以下操作,我的电子邮件是否可靠发送?是重定向我真正想做的事情吗?


更新:感谢您的提示。正如你可以看到我使用+,我不知道任何PHP。在阅读了目前为止的所有答案之后,我想出了这个:

Random code to send email...

file_get_contents('http://www.othersite.com/' . $_SERVER["REQUEST_URI"]. "?". $_SERVER["QUERY_STRING"]);

我相信这应该在其他网站上使用所有当前参数启动GET,这正是我想要的。这样我就不用处理重定向了。这个解决方案有什么问题吗?


更新2:由于我的网址是https,因此file_get_contents导致了一些问题。有办法绕过这个,但我只是使用标题重定向,一切运作良好。谢谢大家!

6 个答案:

答案 0 :(得分:3)

在另一个问题中提出的问题是,您的基本方法是否真正符合您的要求 - 首先检查一下。无论如何,如果它真的是你想要做的(你的目标网址是否真的与你所在的网址相同?)你确实可以使用

header('Location: http://www.othersite.com/' . $_SERVER["REQUEST_URI"]);

请注意使用.来连接字符串而不是+,你不能在PHP中这样做。

要做得非常好,您可以使用http_build_url从当前GET数组构建完整的有效URL。手册中的代码,修改了一下:

<?php
echo http_build_url("http://user@www.example.com/pub/index.php",
    $_GET,
    HTTP_URL_STRIP_AUTH | HTTP_URL_JOIN_PATH | HTTP_URL_JOIN_QUERY 
);
?>

答案 1 :(得分:2)

标题位置调用仅在邮件代码后调用,因此不会影响您的电子邮件。

请勿忘记在标题位置调用后调用exit()。

字符串连接运算符也不是+它的。 (点)。

答案 2 :(得分:1)

  • 如果是相同的应用程序,为什么不调用相同的功能?
  • 如果你想要你可以做file_get_contents ..而不是重定向同样的效果。

答案 3 :(得分:1)

如果您只是想点击该页面,为什么不使用file_get_contents

$data = file_get_contents('http://www.othersite.com/' . $_SERVER["REQUEST_URI"]); 
echo $data; 

这样做的好处是,如果您不想这样做,您不必亲自去其他网站,如果您控制其他网站上的脚本,您可以在HTML中返回true或false在返回时检查。

答案 4 :(得分:0)

完全合规(有时Chrome只能使用位置:标题)

header( "HTTP/1.0 302 Found" );
header( "Status: 302" ); # this is for chrome compliance
header( "Location: http://www.othersite.com/' . $_SERVER["REQUEST_URI"] );

答案 5 :(得分:0)

另一个选择是回显HTML标记:

<meta http-equiv="Refresh" content="1;url=http://www.othersite.com/<?php echo $_SERVER['REQUEST_URI']; ?>">

这允许您设置重定向的延迟时间(通常为1秒),这在某些情况下是好的,这样用户就不会被闪烁的内容弄糊涂。您可以在我们重定向您的信息或类似信息时加上“待命”。