【问题标题】: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'] 并自己解析它。

    【讨论】:

    • 谢谢!! Pathinfo 是我必须启用的。
    【解决方案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];
    

    【讨论】:

      猜你喜欢
      • 2012-11-10
      • 1970-01-01
      • 2021-01-12
      • 1970-01-01
      • 1970-01-01
      • 2020-02-23
      • 2015-01-27
      • 2014-10-30
      • 2015-08-26
      相关资源
      最近更新 更多