2010-03-17 62 views
2

我有一个PHP页面,需要一堆url参数并发送一封电子邮件。我试图在邮件发送后使用相同的url参数调用另一个网页。如果我执行以下操作,我的电子邮件是否可靠地发送?重定向是我真正想做的事情吗?执行代码后PHP重定向


更新:感谢您的提示。正如你可以看到我使用+,我不知道任何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给我带来了一些问题。有办法解决这个问题,但我只是使用头重定向和一切运作良好。感谢大家!

+1

重新更新:如果远程服务器上的目录结构和页面名称确实是相同的,那么看起来不错,直到页面名称?这听起来很难相信,如果它是你打电话的外部服务。 – 2010-03-17 13:36:34

回答

3

在其他答案中提出的问题是否您的基本方法真的是你想要的是有效的 - 首先检查。无论如何,如果这真的是你想要做什么(是您的目标URL真的等同于你在吗?),你的确可以使用

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

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

要做到这一点,您可以使用http_build_url从当前GET数组中构建一个完整的有效URL。从手工代码,修改了一下:

<?php 
echo http_build_url("http://[email protected]/pub/index.php", 
    $_GET, 
    HTTP_URL_STRIP_AUTH | HTTP_URL_JOIN_PATH | HTTP_URL_JOIN_QUERY 
); 
?> 
+0

我实际上不得不使用header而不是file_get_contents,因为我的url是https。所以你的答案就是我使用的答案。 – UmYeah 2010-03-17 17:27:41

+0

'$ _SERVER [“REQUEST_URI”]已包含URI路径和查询。 – Gumbo 2010-03-17 17:31:25

+0

@Gumbo欢呼,当然。纠正。 – 2010-03-17 18:15:59

1
  • 如果它的应用程序相同,为什么不调用相同的函数?
  • 如果你想你可以做file_get_contents ..而不是重定向的相同效果。
+0

不同的应用程序,但感谢file_get_contents。 – UmYeah 2010-03-17 13:30:36

1

如果你只是想打那个页面,为什么不使用file_get_contents

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

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

+0

但是,这不会通过GET参数传递给被调用的脚本。 – 2010-03-17 13:27:16

2

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

不要忘记在标题位置调用后调用exit()。

此外字符串concat运算符不是+它的。 (点)。

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"]); 
0

另一种选择是呼应的HTML标签:

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

这使您可以设置重定向的延迟时间(通常为1秒),这在某些情况下很好,以便用户不会因为内容的闪烁而感到困惑。您可以在我们重定向您的信息或类似信息时添加“待定”。