如何在 PHP 中在浏览器中打开文件之前验证用户 IP? [关闭]

Posted

技术标签:

【中文标题】如何在 PHP 中在浏览器中打开文件之前验证用户 IP? [关闭]【英文标题】:How to validate a User IP before opening a file in browser in PHP? [closed] 【发布时间】:2013-07-05 15:52:37 【问题描述】:

我的网站托管一个 PDF 文件 www.abc.com/abc/xyz.pdf - 如果有人在浏览器中打开此链接,他们将获得 PDF。

我需要在打开 PDF 之前编写/实现一个 php 脚本,该脚本会根据数组中可用的 IP 地址检查请求 PDF 文件的用户的 IP 地址。

PHP 脚本应该在后台运行。因为我的用户将直接单击 pdf 链接,并且需要执行 PHP 验证脚本并相应地重定向。

感谢您在验证这些用户方面提供的任何帮助。

【问题讨论】:

感谢您的信息,祝您好运 ***.com/questions/6817918/… 和无数类似的问题。 因为您的访问者可能使用动态 IP,如果您选择不同的身份验证方法可能会获得更好的用户体验。 【参考方案1】:
$ips = array('127.0.0.1', '34.43.43.12');

if(!in_array($_SERVER['REMOTE_ADDR'], $ips))

 echo 'no access';

else

  //access
  header('Content-type: application/pdf');
  readfile('file.pdf'); //change location to your file

您可以找到此代码。在下次发布问题之前尝试做一些研究。

【讨论】:

我在考虑是否可以在单击 pdf 链接时在后台运行此脚本。一旦验证,它将打开 pdf,否则会出现 403 错误。 你可以做任何你想得到403错误使用而不是echo 'no access';这个header('HTTP/1.0 403 Forbidden');你可以使用.htaccess和deny from all和更高版本allow from IP 数组列表可以使用这种格式(43.43.43.0/50)吗? @MarkGerrylMirandilla 是,但是 $_SERVER['REMOTE_ADDR'] 会给你 IP,你想询问网络地址,所以如果你想这样做,那么你需要用 $_SERVER 获取 IP ['REMOTE_ADDR'] 将其转换为二进制并应用等于 50 的二进制掩码。我是在我的 github 存储库中完成的,您可以查看 github.com/rpodwika/network-calculator【参考方案2】:

使用它来获取客户端系统的IP:$_SERVER['REMOTE_ADDR']

【讨论】:

以上是关于如何在 PHP 中在浏览器中打开文件之前验证用户 IP? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如果我在 ipa 文件的点击事件中在浏览器中打开网站 url,是不是可以在 istore 中上传 ipa 文件

php中在循环外部如何强制结束循环?

sharepoint 搭建过程中在域网里面登陆的时候有问题

EasyUI中在表单提交之前进行验证

如何在 PHP 和 Apache 中启动服务器用户身份验证?

一次SRC实战 逻辑漏洞