php为成员系统中的管理员设置特定的ip

php为成员系统中的管理员设置特定的ip,php,Php,在php中,如果我有一个成员系统,如何限制只有某些ip地址才能作为管理员/版主登录?我知道有 $_SERVER["REMOTE_ADDR"] 但这是否也包括使用代理或路由器的人 或者还有其他方法吗 谢谢你可以试试 if ($_SERVER['REMOTE_ADDR'] == 'xxx.xxx.x.xxx') { //Allow login as administrator } 但不幸的是$\u SERVER['REMOTE\u ADDR']是从客户端发送的,很容易被欺骗 最好的办法

在php中,如果我有一个成员系统,如何限制只有某些ip地址才能作为管理员/版主登录?我知道有

$_SERVER["REMOTE_ADDR"] 
但这是否也包括使用代理或路由器的人

或者还有其他方法吗

谢谢你可以试试

if ($_SERVER['REMOTE_ADDR'] == 'xxx.xxx.x.xxx') {
    //Allow login as administrator
}
但不幸的是$\u SERVER['REMOTE\u ADDR']是从客户端发送的,很容易被欺骗


最好的办法是结合使用上述解决方案和强大、安全的管理员密码,因此,如果IP被欺骗,黑客仍将不得不猜测强大的密码

您可以检查IP范围,查看用户是否从正确的intranet连接:

/**
 * Check if a given ip is in a network
 * @param  string $ip    IP to check in IPV4 format eg. 127.0.0.1
 * @param  string $range IP/CIDR netmask eg. 127.0.0.0/24, also 127.0.0.1 is accepted and /32 assumed
 * @return boolean true if the ip is in this range / false if not.
 */
function ip_in_range( $ip, $range ) {
    if ( strpos( $range, '/' ) == false ) {
        $range .= '/32';
    }
    // $range is in IP/CIDR format eg 127.0.0.1/24
    list( $range, $netmask ) = explode( '/', $range, 2 );
    $range_decimal = ip2long( $range );
    $ip_decimal = ip2long( $ip );
    $wildcard_decimal = pow( 2, ( 32 - $netmask ) ) - 1;
    $netmask_decimal = ~ $wildcard_decimal;
    return ( ( $ip_decimal & $netmask_decimal ) == ( $range_decimal & $netmask_decimal ) );
}

来源:

您确定要通过IP限制访问吗?这将很难处理,因为每次用户断开/重新连接到internet时,IP都会发生更改。@AkramFares我…别无选择…Lol IP肯定可以被欺骗?是的,它可以被欺骗,保护您访问的最佳方法是添加登录名和密码。