|
|
|
| Подскажите как лучше организовать бан по айпи из базы или текстового файла! дело в том что код будет размещён вверху каждой страници например чата и говорят что если ипы которые забанены брать из txt то получится нагрузка на сервер, а если из базы то лишние запросы! что посоветуете? | |
|
|
|
|
|
|
|
для: Lex
(14.06.2006 в 23:39)
| | сейчас у меня в верху страниц вот это
$fileban = file("./files/ban.txt");
for($iban=0;$iban<count($fileban);$iban++)
{$qban = explode("::", $fileban[$iban]);
if($qban[0]=="".$ip."" && $qban[1]=="".$soft."") {$error='<title>'.$lang['errors'].'</title><link rel="stylesheet" href="css/'.$css.'.css" type="text/css"><center><div class="error"><big>IP забанен</big><br/>причина°: '.$qban[4].'</div></center>';}}
| правельно ли это и не будет ли такой код тормазить работу всего скрипта? | |
|
|
|
|
|
|
|
для: Lex
(14.06.2006 в 23:39)
| | Базой данных проверять получится быстрее, так как нужно будет выполнить один запрос. | |
|
|
|
|
|
|
|
для: cheops
(14.06.2006 в 23:54)
| | а как это организавать я в базах не очень!
структура таблици будет такой
ip||soft|| дата|| время|| и причина | |
|
|
|
|
|
|
|
для: Lex
(15.06.2006 в 00:00)
| | помучался я тут и вот что получилось. Даже работает!
<?
$qb = @mysql_query("select 'ip','soft','time' ,'pr' from '".$px.$btable."';");
while($bann = @mysql_fetch_array($qb)) {
if($ip==$bann['ip'] && $soft==$bann['soft'])$error='<title>'.$lang['errors'].'</title><link rel="stylesheet" href="css/'.$css.'.css" type="text/css"><center><div class="error">'.$lang['banip'].'<br/>'.$lang['pr'].''.$bann['pr'].'</div></center>';
}
?>
| такой вариант приемлим в данной ситуации? :) | |
|
|
|
|
|
|
|
для: Lex
(15.06.2006 в 01:15)
| | Лучше проверять IP-адрес непосредственно в SQL-запросе
<?php
$qb = @mysql_query("select COUNT(*) from ".$px.$btable." WHERE ip = '$ip';");
if($qb)
{
if(mysql_result($qb,0) > 0 && $soft==$bann['soft'])
{
$error='<title>'.$lang['errors'].'</title><link rel="stylesheet" href="css/'.$css.'.css" type="text/css"><center><div class="error">'.$lang['banip'].'<br/>'.$lang['pr'].''.$bann['pr'].'</div></center>';
}
}
?>
| так будет расходываться меньше ресурсов, так как вы будете извлекать только одно число, а не всю таблицу. | |
|
|
|
|
|
|
|
для: cheops
(15.06.2006 в 11:21)
| | а это не работает! вероятно по тому что нет вот этого--->$bann | |
|
|
|
|
|
|
|
для: cheops
(15.06.2006 в 11:21)
| | только что то я не пойму куда это влепить! | |
|
|
|
|
|
|
|
для: Lex
(15.06.2006 в 23:49)
| | Вместо блока кода из второго сообщения данной темы. | |
|
|
|