2

当有人订阅我的列表时,我从我的自动回复器 (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 脚本)。

我能做些什么?

4

1 回答 1

2

您需要正确编码该 URL。您当前没有发送有效的 URL。

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

于 2013-08-08T19:56:41.263 回答