ilpostino Skrevet 24. mars 2004 Del Skrevet 24. mars 2004 holde på å lage et script som blandt annet skal sjekke filtypen på de filene som blir lastet opp. for å unngå at en laster opp for eksempel bilde.jpg.cgi og utfører dette scripttet vil jeg sjekke kun de tre (eller eventuelt fire) siste tegnende i filnavnet. hvordan gjøres dette? vet at jeg kan bruke eregi() eller ereg() men disse leter kun etter om en gitt søkestreng finnes i filnavnet og da vil en kunne laste opp cgi/perl-script som vist ovenfor..... Lenke til kommentar
Torbjørn Skrevet 24. mars 2004 Del Skrevet 24. mars 2004 se på basename funksjonen! den har mulighet for å hente ut katalognavn og filendelse Lenke til kommentar
ilpostino Skrevet 24. mars 2004 Forfatter Del Skrevet 24. mars 2004 (endret) har egentlig fått løst det problemet, men har støtt på et annet istedenfor.... før jeg går videre påpeker jeg dette: filendingene/filtypene er gitt i en array. Dette er typiske formater som png, gif, jpg sjekkingen om en fil er av en gitt type kjøres gjennom en løkke, men jeg må finne en erstatning for dette. jeg sjekker om en fil er en bildefil gjennom en løkke. de filene som ikke erbilder slettes fortløpende. intensjonen er at de filene som faktisk er bildefiler blir 'spart' for sletting. men det jeg har oppdaget er at når jeg kjører denne 'filtype-sjekken' gjennom en løkke slettes en bildefil av jpg-format når løkken sjekker om det er en gif-fil. noen lure ideer på hvordan jeg kan sjekke om en gitt fil er av en hviss type samtidig istedenfor å kjøre det gjennom en løkke? legger for sikkerhets skyld ut hele scriptet her... så kan dere se på feilene mine <?php $fil = "test.zip"; $tempmappe = "temp"; $filtype = array('gif','jpg','jpeg','png'); $last_line = exec("unzip -d temp/ $fil"); if ($last_line) echo "oppakning av filen <b>'$fil'</b> gikk bra.<br>"; else echo "dette gikk ikke"; /* Dette åpner mappen hvor filene er pakket opp og ser om de er 'riktig' filtype. Hvis de ikke er det slettes de og en feilmelding skrives ut. */ $handle = opendir($tempmappe); while (false !== ($file = readdir($handle))) { if ($file != "." && $file != "..") { $filending = explode(".",$file); $antall = count($filtype); foreach ($filtype as $filetype) { //echo "Filending: " . $filending[1] . "<br>"; if ($filetype != $filending[1]) { //echo $filetype . "<br>"; if (file_exists("temp/$file")) { $slett_fil = unlink("temp/$file"); if (!$slett_fil) echo "Sletting av filen <b>$file</b> feilet<br>"; else echo "$file er ikke et bilde og er slettet.<br>"; } } } } } ?> (dette er kun halvferidg og skal resultere i et opplastingsscript når det en gang blir ferdig) edit: rettet trykkleif Endret 24. mars 2004 av ilpostino Lenke til kommentar
_dundun_ Skrevet 24. mars 2004 Del Skrevet 24. mars 2004 Hva med å bruke en metode som dette, tror det vil bli veldig mye ryddigere: Gadd ikke implementere, si ifra hvis du trenger kodehjelp. Tanken her er at man bruker et flagg, slik at hele sjekksekvensen kommer før slettesekvensen. for hver fil { $skalslettes = 1; for hver filtype { hvis lik filendelse som en filtype, sett $skalslettes lik 0; } if($skalslettes = 1) { slett fila skriv ut evt. info om at den ble slettet } } a. Lenke til kommentar
ilpostino Skrevet 24. mars 2004 Forfatter Del Skrevet 24. mars 2004 Tanken her er at man bruker et flagg, slik at hele sjekksekvensen kommer før slettesekvensen. hva med å putte slette-sekvensien i en egen funksjon som kalles opp når/hvis en fil skal slettes? har aldri laget noe slik du skiserer før... men kan jo teste litt før jeg kommer tilbake og spør om hjelp... Lenke til kommentar
_dundun_ Skrevet 24. mars 2004 Del Skrevet 24. mars 2004 hva med å putte slette-sekvensien i en egen funksjon som kalles opp når/hvis en fil skal slettes? har aldri laget noe slik du skiserer før... men kan jo teste litt før jeg kommer tilbake og spør om hjelp... funker selvfølgelig helt fint det også, det blir et rent programmeringsteknisk valg, men tror ikke jeg hadde giddet siden det er snakk om såpass lite kode, blir like ryddig å ha den inline hvis du ikke trenger en slettefunksjon også flere steder i scriptet ditt. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå