在PHP标题重定向中传递电子邮件 - 剥离“@”?

时间:2013-08-08 19:54:59

标签: php variables header get

当有人订阅我的列表时,我从我的自动回复器(getResponse)收到GET变量,我需要在另一个GET请求中将这些变量传递给调查提供者。我使用PHP“header()”函数,但“@”字符会从电子邮件中删除。

这是我的PHP代码:

// retrieve email from GET
$email = $_GET['email'];

// pass on email
header("Location: http://surveyprovider.com/surveyID/start?email=$email");  

当getResponse调用我的PHP脚本时,假设我得到“email = someguy@someserver.com”。当我的脚本运行时,生成的HTTP调用如下所示:

http://surveyprovider.com/surveyID/start?email=someguysomeserver.com

请注意电子邮件地址中“@”缺少

如何解决此问题?

我无法使用会话变量(如此问题中建议的那样:How to pass variables received in GET string through a php header redirect?),因为调查提供程序不允许我检索会话变量(没有自定义PHP脚本)。

我该怎么办?

1 个答案:

答案 0 :(得分:2)

您需要正确编码该网址。您目前没有发送有效的网址。

header('Location: http://surveyprovider.com/surveyID/start?email=' . urlencode($email)); 

@变为%40

http://surveyprovider.com/surveyID/start?email=test%40example.com

http://php.net/manual/en/function.urlencode.php