Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Запретить доступ по IP из базы...
Форумы портала PHP.SU » PHP » SQL и Архитектура БД » Запретить доступ по IP из базы...

Страниц (1): [1]
 

1. Viper - 20 Февраля, 2007 - 15:13:45 - перейти к сообщению
вобсчем есть таблица:
id ipallow
1 10.10.1.85

и скрипт:

mysql_select_db($database_Local, $Local);
$query_Recset3 = "SELECT * FROM allowip";
$Recset3 = @mysql_query($query_Recset3, $Local) or die(mysql_error());
$row_Recset3 = mysql_fetch_array($Recset3);
if ( !$Recset3 ) die ( "Something went wrong with query!" );
if (mysql_num_rows($Recset3) > 0) {
while ($ip = mysql_fetch_array($Recset3)) {
$resip = $ip;
}
}
if ($_SERVER['REMOTE_ADDR'] != $resip['ipallow']) {
header("Location: /403.html");
}

поясняю что нужно. нужно чтобы при запросе страницы ip зашедшего сверялся с ip в базе и если он не равен значению из базы, то выдавалась ошибка 403(собстно у меня редирект).

скрипт написаный выше то работает то нет... не могу понять в чем беда.
2. evgenijj - 20 Февраля, 2007 - 15:45:15 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $res = mysql_query( "SELECT * FROM allowip WHERE ipallow='".$_SERVER['REMOTE_ADDR']."'" );
  4. if ( mysql_num_rows( $res ) == 0 ) header("Location: /403.html");
  5. ?>
  6.  

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $res = mysql_query( "SELECT * FROM allowip" );
  4. $resip = array();
  5. while ($ip = mysql_fetch_array($res))
  6. {
  7.     $resip[] = $ip["ipallow"];
  8. }
  9.  
  10. if ( !in_array( $_SERVER['REMOTE_ADDR'], $resip ) )
  11. {
  12.     header("Location: /403.html");
  13. }
  14. ?>
  15.  
3. Viper - 20 Февраля, 2007 - 16:28:50 - перейти к сообщению
спасибо. работает Улыбка
4. valenok - 21 Марта, 2007 - 17:45:48 - перейти к сообщению
Для тех кто потом будет пользоваться поиском:
Блокировку доступа по маске я делал так:

- По маске = также чтоб блокировались ip как xx2.2x4.xxx.197

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $blocked_ips_r = mysql_query("SELECT `ip` FROM `config_access_ip`");
  4. $Allowed = True;
  5.  
  6. while($ip = mysql_result($blocked_ips_r,0)) {
  7.        
  8.         $bip = explode(".",$ip);
  9.         $uip = explode(".",$_SERVER['REMOTE_ADDR']);
  10.  
  11.         for($i=0; $i<4; $i++){
  12.         $bip[$i] = str_replace("x","([0-9]{0,1})",$bip[$i]);
  13.         if(substr($bip[$i],-6)=='{0,1})'){$bip[$i] = substr($bip[$i],0,-6)."{1})" ;}
  14.  
  15.         if(preg_match("/".$bip[$i]."/",$uip[$i])) $Allowed = False;
  16.         }
  17.  
  18. }
  19.  
  20.  
  21. if(!$Allowed) die();
  22.  

 

Powered by ExBB FM 1.0 RC1