_SERVER美元['HTTP_REFERER']

$_SERVER['HTTP_REFERER']

提问人:Max Gee 提问时间:10/7/2012 最后编辑:Major ProductionsMax Gee 更新时间:4/1/2014 访问量:4796

问:

我正在我的网站上制作一个报告问题链接,我希望它在单击报告链接之前通过电子邮件向我发送他们上次使用的地址。我知道/认为您使用 $_SERVER['HTTP_REFERER'],但我不知道如何将其放入邮件代码中?那么你会怎么写这是我的邮件代码。

Mail("[email protected]", "Subject", "Message");
echo "Report Sent";
PHP 电子邮件 服务 错误报告

评论

4赞 Marc B 10/7/2012
推荐人是不可靠的。出于隐私原因,许多浏览器不包含它,而其他浏览器则包括伪造/伪造的浏览器。
0赞 Max Gee 10/7/2012
@MarcB你知道我该如何让某些链接起作用吗?
0赞 poudigne 10/7/2012
你对此无能为力......你仍然可以使用它,但在某些情况下你不会拥有任何东西。
0赞 Marc B 10/7/2012
将页面的地址嵌入到您传递给问题报告者的 URL 中,例如。http://example.com/problem.php?url=http://example.com/page_you_are_on.php
0赞 Max Gee 10/7/2012
@MarcB 我应该在哪里嵌入它来做到这一点?

答:

0赞 Major Productions 10/7/2012 #1

消息应该是一个变量,您可以在其中输入信息:

$message = "Error report: <p>Last site visited: {$_SERVER['HTTP_REFERER']}</p>....";

mail("[email protected]", "Subject", $message);

请注意,该位位于字符串的 {} 内。这是为了强制它推断值(我不喜欢字符串连接)。HTTP_REFERER

另请注意,如上所述,不能保证 REFERER 具有正确的值,或者根本没有任何值。

评论

0赞 Max Gee 10/7/2012
如果不使用引用样式,如何报告此内容?
0赞 Major Productions 10/7/2012
您可以使用 JavaScript 将值异步发送到 PHP。JS 的当前位置/url 值在document.URL
0赞 Major Productions 10/7/2012
您想要他们单击报告按钮时所在的当前 URL 的地址,还是上一个 URL?如果他们从 Google 找到了一个页面,你会想捕捉它吗?
0赞 Max Gee 10/7/2012
我试图让它做的是,如果有人在我的网站上发现错误,我希望他们点击链接报告问题,然后它会向我发送他们点击该链接时他们所在的网站最后一部分的地址。
1赞 Barmar 10/7/2012
匿名代理通常可以选择删除推荐人。
0赞 Maurizio 4/1/2014 #2

除了关于可以嗅探的 http 引用器、匿名代理等所有被告知的内容之外,依赖HTTP_REFERER并不是一个好的编程标准。

相反,如果您有,例如:

http://www.example.com/application/client.php

用户可以点击的位置

http://www.example.com/application/report_problem.php

只需通过“...client.php“字符串设置为”...report_problem.php“报告问题处理程序。

将“原始”页面链接传递给“report_problem”很容易,可以这样完成:

<?php
    // pages where you will append the "problem link"

    // $this_page holds an "url encoded" version of the request uri ( e.g. /application/client.php )
    $this_page = rawurlencode ( $_SERVER["REQUEST_URI"] );
?>
<a href="report_problem.php?originating_page=<?=$this_page;?>">Report problem</a>

然后,在“report_problem.php”代码中:

<?php
     // report_problem.php

     $originating_page = ( array_key_exists ( 'originating_page', $_GET ) && ! empty ( $_GET['originating_page'] ) ? rawurldecode ( $_GET['originating_page'] ) : null;

     if ( ! empty ( $originating_page ) ) {
              $message = 'Error report: <p>Last site visited: ' . $originating_page . '</p>....';
              mail("[email protected]", "Subject", $message);
     }
     else mail("e[email protected]", "Subject", "Problem from unkown page");
 ?>