我有一个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导致了一些问题。有办法绕过这个,但我只是使用标题重定向,一切运作良好。谢谢大家!
答案 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)
答案 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秒),这在某些情况下是好的,这样用户就不会被闪烁的内容弄糊涂。您可以在我们重定向您的信息或类似信息时加上“待命”。