【问题标题】:How to write PHP code to evaluate client IP?如何编写 PHP 代码来评估客户端 IP?
【发布时间】:2015-10-20 01:15:57
【问题描述】:

我部署了一个 Drupal 7.x 网站,我需要帮助来使用以下函数并根据 IP 返回真/假(更多信息见下文)。我正在尝试在 Drupal 的规则模块中使用它。

Drupal 自带一个内置函数..

<?php
  print ip_address();
?>

这会以 ipv4 地址的形式返回客户端的 IP 地址,例如 172.16.14.100(示例)。 (https://api.drupal.org/api/drupal/includes%21bootstrap.inc/function/ip_address/7)

我需要能够获取 ip_address();并在 PHP 中对其进行评估,如果 ip_address() 在 172.16.1.1 - 172.16.255.255 的范围内,我希望评估返回一个布尔值(返回 TRUE),否则返回 false。

有人可以帮忙吗?

【问题讨论】:

  • 查看答案,但对于这样一个简单的范围,如果您不想打扰使用 ip 函数,那么一个肮脏的黑客将是测试 IP 是否以“172.16”开头并带有正则表达式;-)
  • Capsule,你能举例说明如何使用正则表达式来做到这一点吗?
  • 来吧,这不是编程课程...至少阅读手册:php.net/manual/en/function.preg-match.php

标签: php apache drupal drupal-7 drupal-modules


【解决方案1】:

您可以尝试使用ip2long 将 IPv4 地址更改为长整数并用于比较。

$example_ip = ip2long("192.168.1.1");
$high_ip = ip2long("172.16.255.255");
$low_ip = ip2long("172.16.1.1");
if ($example_ip <= $high_ip && $low_ip <= $example_ip) {
  return true;
}
else {
    return false;
}

【讨论】:

  • 经过一些修改,这可以满足我的需要。谢谢!
猜你喜欢
  • 2012-02-08
  • 1970-01-01
  • 1970-01-01
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 2020-09-06
  • 2011-01-25
相关资源
最近更新 更多