当前位置: 首页 > 面试题库 >

PHP:如何获取引荐来源网址?

李泓
2023-03-14
问题内容

我有一个页面(仅索引),客户可以在其中向我发送电子邮件,我想查看访问者来自哪个网站?

如何Referrer URL使用PHP?我尝试过, $_SERVER['HTTP_REFERER']但它一直都是空的。我怎样才能做到这一点?谢谢!

这是我$_SERVER包含的内容(“ --------被检查----”由我检查)

array(31) {
  ["DOCUMENT_ROOT"]=>
  string(33) "/home/anything/public_html/design"
  ["GATEWAY_INTERFACE"]=>
  string(7) "CGI/1.1"
  ["HTTP_ACCEPT"]=>
  string(129) "text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/webp, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1"
  ["HTTP_ACCEPT_ENCODING"]=>
  string(13) "gzip, deflate"
  ["HTTP_ACCEPT_LANGUAGE"]=>
  string(14) "en-US,en;q=0.9"
  ["HTTP_CACHE_CONTROL"]=>
  string(8) "no-cache"
  ["HTTP_CONNECTION"]=>
  string(10) "Keep-Alive"
  ["HTTP_COOKIE"]=>
  string(189) "__utma=76630272.1468291432.1367655794.1367669576.1367674157.3; __utmb=76630272.1.10.1367674157; __utmc=76630272; __utmz=76630272.1367655794.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)"
  ["HTTP_HOST"]=>
  string(25) " ---- CENSORED ---- "
  ["HTTP_USER_AGENT"]=>
  string(57) "Opera/9.80 (Windows NT 6.1) Presto/2.12.388 Version/12.15"
  ["PATH"]=>
  string(13) "/bin:/usr/bin"
  ["QUERY_STRING"]=>
  string(0) ""
  ["REDIRECT_STATUS"]=>
  string(3) "200"
  ["REMOTE_ADDR"]=>
  string(10) "5.15.68.79"
  ["REMOTE_PORT"]=>
  string(5) "57897"
  ["REQUEST_METHOD"]=>
  string(3) "GET"
  ["REQUEST_URI"]=>
  string(12) "/referer.php"
  ["SCRIPT_FILENAME"]=>
  string(45) "/home/anything/public_html/design/referer.php"
  ["SCRIPT_NAME"]=>
  string(12) "/referer.php"
  ["SERVER_ADDR"]=>
  string(13) " ---- CENSORED ---- "
  ["SERVER_ADMIN"]=>
  string(35) " ---- CENSORED ---- "
  ["SERVER_NAME"]=>
  string(25) " ---- CENSORED ---- "
  ["SERVER_PORT"]=>
  string(2) "80"
  ["SERVER_PROTOCOL"]=>
  string(8) "HTTP/1.1"
  ["SERVER_SIGNATURE"]=>
  string(189) "
Apache/2.2.19 (Unix) mod_ssl/2.2.19 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 Server at ---- CENSORED ---- Port 80

"
  ["SERVER_SOFTWARE"]=>
  string(125) "Apache/2.2.19 (Unix) mod_ssl/2.2.19 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635"
  ["UNIQUE_ID"]=>
  string(24) "UYUNcUPeiDsAABkR2eYAAAAj"
  ["PHP_SELF"]=>
  string(12) "/referer.php"
  ["REQUEST_TIME"]=>
  int(1367674225)
  ["argv"]=>
  array(0) {
  }
  ["argc"]=>
  int(0)
}

问题答案:

$_SERVER['HTTP_REFERER']如果存在,将为您提供引荐来源页面的URL。如果用户使用书签或通过手动输入URL直接访问您的网站,则http_referer将为空。同样,如果
用户 以编程方式(CURL)发布到您的页面,则他们也没有义务设置http_referer。您错过了所有_,这是一个错字吗?



 类似资料:
  • 问题内容: 确定当前页面是发送还是调用(通过AJAX)的页面的最可靠,最安全的方法是什么。由于(缺乏)可靠性,我不想使用,而且我需要被调用的页面仅来自于源自我网站的请求。 编辑:我正在寻找从我的网站页面上调用执行一系列动作的脚本。 问题答案: 客户端浏览器发送的REFERER作为HTTP协议的一部分,因此确实不可靠。它可能不存在,可能是伪造的,如果出于安全原因,您就是无法信任它。 如果您想验证请求

  • 问题内容: 任何人都知道,如果使用jquery或通用javascript,我可以在http ajax调用中从标头更改引荐来源网址? 基本上,我希望它是从我的页面发送的,但是从另一个页面有一个引荐来源网址。任何信息都很好。 问题答案: 浏览器将始终为我完成的测试覆盖引荐来源网址。这意味着您不能更改ajax调用的引用者。

  • 问题内容: 我有一个应用程序,该应用程序最初作为iPhone应用程序存在,现在作为Android应用程序存在。功能之一是加载网页,该网页通过将字符串作为Referer传递来绕过安全性登录。iPhone的代码如下- 我在Android应用中使用的代码是- 但是,当我运行它时,访问被拒绝,因为我没有以“ Referer”的身份发送请求。我该如何在Android代码中做到这一点? 问题答案: 将load

  • 如何使用JGit获取源远程的URL? 我正在使用JGit,我想执行 那要怎么做?

  • 我有一个预定的执行者服务,我要求在预定任务后返回期货。Javadoc说在调度任务后返回ScheduledFuture—但是,如何获得尚未运行任务的后续未来? 我的调用如下所示:exec.scheduleAtFixed速率(新任务(),0,间隔,时间单位。分钟); 新任务确实已提交并运行,但我只有第一次打电话时才有未来。这个未来是可重用的还是可重用的?

  • 我想创建一个API,为了验证API使用者,我将提供一个API密钥、应用id和应用机密。问题是,我想知道http请求来自哪里,这样我就可以知道发出que请求的主机是否是注册主机。例如:www.someone。com的应用程序id为0001,应用程序机密为1200,api密钥为458。如果此凭据用于发出请求,我想知道请求者是否真的是www.someone。通用域名格式