PHP Gmail 代理电子邮件中忽略的参数
PHP Parameters ignored in Gmail Proxy email
我正在通过使用参数确定要显示的图像的电子邮件发送 PHP 图像。此图像显示在除 Gmail 之外的所有电子邮件客户端中。这是由于 Google 用户内容代理,它环绕 link 并显示 php 文件,同时忽略附加到它的参数。
我好像和这个问题一样的问题,
。他们的解决方案如下:
I resolved it using https://www.example.com/tracking.php/order_id=1
instead and then on the tracking.php I didn't use $_GET but
$_SERVER['REQUEST_URI'] and parsed the /order_id= String.
问题是我不明白该怎么做。
当我访问 test.php?par=1
的文件 URL 时,我可以使用 $_GET 获取 par。如果我将文件 URL 切换为 test.php/par=1
,我会收到 404 错误。
如何在仍然首先访问 test.php 的同时使用 /par=1
作为我的参数,以便我可以使用 $_SERVER['REQUEST_URI'] 拉取整个 url?
test.php?par=1
是一个名为 test.php
的脚本,其查询字符串键为 par
,值为 1
.
如果您没有启用 pathinfo,则 test.php/par=1
是一个目录名称 test.php
,并且该目录中的一个不存在的文件名为 par=1
。
请注意 PHP 不会将路径信息数据解析为 $_GET。为此只处理实际的 ?key=val
类型的查询值。您必须自己挖掘 $_SERVER['PATH_INFO']
并自行解析。
我能够让它正常工作并针对 Gmail 进行测试。我的 php 图片成功显示!
我编辑了我的 test.php
文件:
test.php?val=1
$value = $_GET['val'];
为此:
测试.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];
我正在通过使用参数确定要显示的图像的电子邮件发送 PHP 图像。此图像显示在除 Gmail 之外的所有电子邮件客户端中。这是由于 Google 用户内容代理,它环绕 link 并显示 php 文件,同时忽略附加到它的参数。
我好像和这个问题一样的问题,
I resolved it using https://www.example.com/tracking.php/order_id=1 instead and then on the tracking.php I didn't use $_GET but $_SERVER['REQUEST_URI'] and parsed the /order_id= String.
问题是我不明白该怎么做。
当我访问 test.php?par=1
的文件 URL 时,我可以使用 $_GET 获取 par。如果我将文件 URL 切换为 test.php/par=1
,我会收到 404 错误。
如何在仍然首先访问 test.php 的同时使用 /par=1
作为我的参数,以便我可以使用 $_SERVER['REQUEST_URI'] 拉取整个 url?
test.php?par=1
是一个名为 test.php
的脚本,其查询字符串键为 par
,值为 1
.
如果您没有启用 pathinfo,则 test.php/par=1
是一个目录名称 test.php
,并且该目录中的一个不存在的文件名为 par=1
。
请注意 PHP 不会将路径信息数据解析为 $_GET。为此只处理实际的 ?key=val
类型的查询值。您必须自己挖掘 $_SERVER['PATH_INFO']
并自行解析。
我能够让它正常工作并针对 Gmail 进行测试。我的 php 图片成功显示!
我编辑了我的 test.php
文件:
test.php?val=1
$value = $_GET['val'];
为此:
测试.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];