【问题标题】:PHP Parameters ignored in Gmail Proxy emailGmail 代理电子邮件中忽略的 PHP 参数
【发布时间】:2016-12-03 01:04:21
【问题描述】:
我正在通过电子邮件发送一个 PHP 图像,该图像使用参数来确定要显示的图像。此图像显示在除 Gmail 之外的所有电子邮件客户端中。其原因在于 Google 用户内容代理,它环绕链接并显示 php 文件,同时忽略附加到它的参数。
我好像和这个问题有同样的问题,
Problems with tracking pixels and Gmail proxy。他们的解决方案如下:
我使用https://www.example.com/tracking.php/order_id=1 解决了它
相反,然后在 tracking.php 我没有使用 $_GET 但
$_SERVER['REQUEST_URI'] 并解析 /order_id= 字符串。
问题是我不明白该怎么做。
当我访问test.php?par=1 的文件 URL 时,我可以使用 $_GET 拉取 par。如果我将文件 URL 切换到 test.php/par=1,我会收到 404 错误。
我如何使用/par=1 作为我的参数,同时仍然首先访问 test.php,以便我可以使用 $_SERVER['REQUEST_URI'] 提取整个 url?
【问题讨论】:
标签:
php
email
parameters
proxy
gmail
【解决方案1】:
test.php?par=1 是一个名为test.php 的脚本,其查询字符串键为par,值为1。
如果您没有启用pathinfo,则test.php/par=1 是一个目录名称test.php,并且该目录中不存在名为par=1 的文件。
请注意,PHP 不会将路径信息数据解析为 $_GET。为此仅处理实际的?key=val-type 查询值。您必须挖掘出$_SERVER['PATH_INFO'] 并自己解析它。
【解决方案2】:
我能够让它工作并为 Gmail 测试。我的php图片成功出现了!
我从这里编辑了我的test.php 文件:
test.php?val=1
$value = $_GET['val'];
到这里:
test.php/val=1
$uri = $_SERVER['REQUEST_URI'];
$path = substr($uri, strpos($uri, "val="));
$delim = 'alv=';
$tok = strtok($path, $delim);
$tokens = array();
while ($tok !== false) {
array_push($tokens, $tok);
$tok = strtok($delim);
}
$value = $tokens[0];