Toon posts:

[PHP] IRC - Banlist

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Hallo allemaal,

Ik ben IRC services aan het schrijven in PHP.
Wat ik wil doen is: Controleren of een bepaalde host gebanned is.

Ik krijg de host in dit formaat aangeleverd: nick!user@host
in dat formaat kunnen wildcards voorkomen, bijvoorbeeld *!*@*.host

Ik gebruik nu deze query:
$q=mysql_query("DELETE FROM `".$cfg['Services']['BanTable']."` WHERE `channel`='".$chan."' AND (`mask` LIKE '".wcsqlrx($banmask)."' OR

function wcsqlrx($pat){
$pat=str_replace("*","%",$pat);
$pat=str_replace("?","_",$pat);
return $pat;
}

Het staat in de database als * = % en ? = _ om 'LIKE' mogelijk te maken zodat PHP minder hoeft te parsen.

Wie weet er een manier om de correcte dingen te laten matchen?

  • faabman
  • Registratie: Januari 2001
  • Laatst online: 08-08-2024
je zou eens naar reguliere expressies kunnen kijken...

Op zoek naar een baan als Coldfusion webdeveloper? Mail me!


Verwijderd

Topicstarter
reguliere expressies zitten in PHP. Ik regel het liever aan de kant van MySQL.

[edit]of is er in MySQL ook een regular expression functie?

[ Voor 29% gewijzigd door Verwijderd op 17-03-2004 19:50 ]


Verwijderd

Topicstarter
Ik heb het nog eens uitgespit:

function listbans($mask){
echo "Listing bans for $mask\n";
if($e=mysql_error())output(1,$e,1);
$q=mysql_query("SELECT * FROM banlist WHERE mask LIKE '".wcsqlrx($mask)."'");
while($r=mysql_fetch_array($q)){
print_r($r);
}
echo "Other way around:\n";
$q=mysql_query("SELECT * FROM banlist WHERE '".wcsqlrx($mask)."' LIKE `mask`");
if($e=mysql_error())output(1,$e,1);
while($r=mysql_fetch_array($q)){
print_r($r);
}

}

als ik *!*@* opzoek dan vind de 'Other way around' niks.
%!%@% LIKE %!%@%.com = FALSE
Wie weet er een manier om dit op te lossen?

Verwijderd

MySQL ondersteund ook reguliere expressies:

http://www.mysql.com/doc/en/Regexp.html

Ik weet niet hoe slecht (of goed) dit voor je performance is.

Verwijderd

Topicstarter
Thnx :-)

Met regular expressions heb ik het opgelost.
Qua performance maakt het niet zoveel uit denk ik, ze zullen niet 100 keer per seconden gaan unbannen.
Pagina: 1