11. februar 2006 - 01:59Der er
13 kommentarer og 1 løsning
Spørgsmål om hvordan man søger på forskellige tegn
Hej Eksperter
Det er muligt at dette er et lidt dumt spørgsmål, men jeg forsøger alligevel! :D
Jeg har en side hvor man kan uploade filer og det virker fint. Jeg har i den fil lavet det sådan at man kun kan uploade pdf og doc filer (vha. substr()) og det er altsammen som det skal være.
Men nu ligger problemet i at hvis man uploader et dokument som indeholder f.eks. et "&" tegn, så kan man ikke åbne det bagefter... Så jeg er på udkig efter hvordan man kan lave en søgning efter et sådant tegn. Det jeg har indtil videre ser således ud:
Hmmm... ja det kan da være det er rigtigt det du skriver... Nu har jeg jo bare en lidt stor fil der så skal ændres hvad angår kopieringen af filen, og det mener jeg nu ikke lige jeg er rustet til at kunne gøre...
For at give et indblik i det (og det kan være det ser nemt ud for andre :) så er her lige noget...
Nu har jeg jo bare en lidt stor fil der så skal ændres hvad angår kopieringen af filen, og det mener jeg nu ikke lige jeg er rustet til at kunne gøre. <- jeg forstår ikke lige hvad du mener der ;D
Men hvis du nu bruger: $filnavnet = char_replace($_FILES['userfile']['name']);
Hehe :D - jeg ville nok foreslå dig at pille funktionen ud af din if-sætning, så kan du kalde den andre steder, hvis der engang skulle blive brug for det... :D
<? // Konfiguration $filtyper = ".jpg$|.gif$|.txt$|.doc$|.dir$|.rar$|.zip$"; //Skal adskilles med | eksempel: $filtyper = ".jpg$|.gif$"; $konfiguration["upload_bibliotek"] = "./updir"; // Relativ sti, i forhold til denne fils placering. Eksempel: Upload.php ligger i /upload/ og filerne skal ligges i /upload/updir/ Så angives det ./updir HUSK AT MAPPEN SKAL HAVE CHMOD 777! $konfiguration["max_stoerrelse"] = "512000"; // Filens maxstørrelse i bytes - I konfigurationsfilen til php, er standard værdien 2mb. Dvs man kan max uploade en fil på 2 mb. $maxantalfiler = "15"; // Maks antal filer der kan uploades på én gang
// Tjekker om der er valgt flere end 15 filer at uploade! Hvilket der ikke må være! if ($uploadantal > $maxantalfiler) { echo "Du kan ikke uploade mere end $maxantalfiler filer!"; exit; };
// Mens $count er mindre end eller lig med $uploadantal skal den skrive en filboks. $count = "1"; while($count <= $uploadantal) { echo "<input name=\"userfile[$count]\" type=\"file\"><br>"; $count = $count + 1; }; echo "<input type=\"hidden\" name=\"uploadantal\" value=\"$uploadantal\"><br>"; ?> <? if (isset($uploadantal) && ($uploadantal != "0") && ($uploadantal != NULL)) { echo "<input type=\"submit\" value=\"Send Filer\">"; }; ?> </form> <? // Functionen vi uploader med function upload($fra, $til) { move_uploaded_file($fra, $til); }; // Funktionen der tjekker filens størrelse. Er filen for stor bliver den ikke uploadet. Og brugere, får det at vide. function checksize($size, $maxsize, $name) { if($size > $maxsize) { echo "<b>IKKE UPLOADET!</b> - $name er for stor. Der accepteres kun " . round($maxsize/1024, 1) . "kb, og din fil fylder " . round($size/1024, 1) . "kb <br>"; return false; }; return true; }; // Funktionen der tjekker filtypen! Hvis filtypen ikke er tilladt, uploades der ikke! og der kommer en fejlmeddelse. function type($filtyper, $navn) { if (isset($navn)) { if(!eregi($filtyper, $navn)) { $ext = substr($navn, -3); echo "<b>IKKE UPLOADET!</b> - <b>$ext</b> filer er <b>ikke</b> accepteret!"; echo "<br>"; return false; }; return true; }; }; //Funktionen der erstatter ugyldige tegn. function char_replace($tekst) { $str = "$tekst"; $erstat['å'] = "aa"; $erstat['Å'] = "AA"; $erstat['ø'] = "oe"; $erstat['Ø'] = "OE"; $erstat['Ä'] = "Ae"; $erstat['ä'] = "ae"; $erstat['æ'] = "ae"; $erstat['Æ'] = "AE"; $erstat['&'] = "og";
//Her sker magien! $count = "1"; //Mens $count er mindre en, lig med $uploadantal(Requested fra formen Filer) while($count <= $uploadantal) { //Sætter vi vores variabler. Disse køres igennem, for hver fil der skal uploades. Dvs. De sættes hvergang en ny fil uploades. $navn = $_FILES["userfile"]["name"][$count]; $fra = $_FILES["userfile"]["tmp_name"][$count]; $til = $konfiguration["upload_bibliotek"] . "/" . char_replace($_FILES["userfile"]["name"][$count]); $size = $_FILES["userfile"]["size"][$count]; $maxsize = $konfiguration["max_stoerrelse"]; //Vi tjekker så for om checksize() returnere true. Gør den det, skal scriptet uploade filen. Ellers bliver der returneret false, og der bliver så udskrevet til brugeren, at filen er for stor! echo $fra; echo $til; if (checksize($size, $maxsize, $navn) && type($filtyper, $navn)) { upload($fra, $til); //Hvis $navn er sat, Udskriver vi "Filen $navn er uploadet" if (isset($navn)) { $navn = char_replace($navn); echo "<b>SUCCESS!</b> - Filen $navn er uploadet"; echo "<br>"; }; }; $count = $count + 1; }; ?>
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.