kobranturreMedlem sedan maj 2004602 inlägg
Hej jag skulle behöva hjälp med en preg_replace kod
Här är funktionen och om ni skulle kunna hjälpa mig med preg så är det bra (kan inte preg koderna)
Här är koden som sparar värdena i textfilen, så att ni får inblick i hur det ser ut i textkoden
function ban(){
$msg = $_GET['ip'] . "|\n";
$fp = fopen("ban.txt","r+");
fwrite($fp, $msg);
fclose($fp);
header("Location: admin.php");
exit;
}
Och här är funktionen som ska ta bort ett visst ip (som finns i $_GET['ip'])
//Ta bort ban
function TaBortBan($i){
$fp = fopen('ban.txt', 'r');
$content = fread($fp, filesize('gastbok.txt'));
fclose($fp);
$content = preg_replace("PREG KODEN", "", $content);
$fp = fopen('ban.txt', 'w');
fwrite($fp, $content);
fclose($fp);
header("Location: admin.php");
exit;
}
Har provat
$content = preg_replace("/^{$_GET['ip']}.*?\n/m", "", $content);
Men problemet är att den tar bort alla ip'n d.v.s. tömmer hela textfile
Tack på förhand
lunne82Medlem sedan dec. 2003153 inlägg
Är det medvetet som du öppnar ban.txt och läser in storleken av guestbook.txt?
$fp = fopen('ban.txt', 'r');
$content = fread($fp, filesize('gastbok.txt'));
Hur som helst. Om du inte är i behov av mönsterpassning ska du använda str_replace() istället. Borde bli enklare då.
PHP Manualen skrev:
If you don't need fancy replacing rules (like regular expressions), you should always use this function instead of ereg_replace() or preg_replace().
kobranturreMedlem sedan maj 2004602 inlägg
Har nu
//Ta bort ban
function TaBortBan($i){
$fp = fopen('ban.txt', 'r');
$content = fread($fp, filesize('gastbok.txt'));
fclose($fp);
$ip = $_GET['ip'];
$content = str_replace($ip, "", $content);
$fp = fopen('ban.txt', 'w');
fwrite($fp, $content);
fclose($fp);
header("Location: admin.php");
exit;
}
Men den vägrar ta bort ip't...jag vet att den inte tar bort |\n men detta är för att testa...Har testat massor med gånger och den tar bort |\n men den vägrar ta bort ip't...Varför?
lunne82Medlem sedan dec. 2003153 inlägg
Du kan ju börja med att byta ut
$content = fread($fp, filesize('gastbok.txt'));
mot
$content = fread($fp, filesize('ban.txt'));
funkar fortfarande inte?
kobranturreMedlem sedan maj 2004602 inlägg
nope, den tar bara bort |\n
function TaBortBan($i){
$fp = fopen('ban.txt', 'r');
$content = fread($fp, filesize('ban.txt'));
fclose($fp);
$ip = $_GET['ip'];
$content = str_replace("{$ip}|\n", "", $content);
$fp = fopen('ban.txt', 'w');
fwrite($fp, $content);
fclose($fp);
header("Location: admin.php");
exit;
}
har även provat
$content = str_replace($ip."|\n", "", $content);
lunne82Medlem sedan dec. 2003153 inlägg
Tycker inte det skulle behövas, men testa byta
$ip = $_GET['ip'];
mot
$ip = strip_slashes($_GET['ip']);
Annars kan du skriva
var_dump($_GET);
exit;
som första rad i funktionen TaBortBan() för att testa vad det är för värden, och vilken typ de är, i $_GET när du anropar den. På så sätt kan du se vad som finns i index 'ip' och själv kolla om det stämmer eller om det är fel någon annan stans.
kobranturreMedlem sedan maj 2004602 inlägg
fixade med
$content = preg_replace("/^{$_GET['i']}.*?\n/m", "", $content);
tack ändå :)
lunne82Medlem sedan dec. 2003153 inlägg
PHP Manualen skrev:
If you don't need fancy replacing rules (like regular expressions), you should always use this function instead of ereg_replace() or preg_replace().
kobranturreMedlem sedan maj 2004602 inlägg
lunne82 skrev:
PHP Manualen skrev:
If you don't need fancy replacing rules (like regular expressions), you should always use this function instead of ereg_replace() or preg_replace().
:birp :birp
Bara jag fick en lösning så ;)
lunne82Medlem sedan dec. 2003153 inlägg
Steg 1: Få det att funka.
Steg 2: Optimera.
:birp