Rigo Skrevet 1. mars 2012 Del Skrevet 1. mars 2012 (endret) Hei igjen! Er tilbake med enda et spørsmål. Det jeg lurer på denne gangen er hvordan jeg kan forhindre filer med .PHP exstensions i å vises med dette skriptet: Forresten, skriptet nedenfor viser alle filene i mappen, så det er forklart. <?php // open this directory $myDirectory = opendir("."); // get each entry while($entryName = readdir($myDirectory)) { $dirArray[] = $entryName; } // close directory closedir($myDirectory); // count elements in array $indexCount = count($dirArray); // sort 'em sort($dirArray); // print 'em print("<TABLE border=1 cellpadding=5 cellspacing=0 class=whitelinks>\n"); print("<TR><TH>Nom</TH><th>Type</th><th>Delete</th></TR>\n"); // loop through the array of <strong class="highlight">files</strong> and print them all for($index=0; $index < $indexCount; $index++) { if (substr("$dirArray[$index]", 0, 1) != "."){ // don't list hidden <strong class="highlight">files</strong> print("<TR><TD><a href=\"$dirArray[$index]\">$dirArray[$index]</a></td>"); print("<td>"); print(filetype($dirArray[$index])); print("</td>"); print("<td><a href=\"delete.php?file=$dirArray[$index]\">Delete</a></td>"); print("</td>"); print("</TR>\n"); } } print("</TABLE>\n"); ?> Jeg har prøvd å bytte ut en liten del av koden som er nesten på toppen med dette: while($entryName = readdir($myDirectory)) { $pathinfo = pathinfo($entryName); if ($pathinfo['extension'] != '<strong class="highlight">php</strong>') $dirArray[] = $entryName; } Fikk da disse feilmeldingene: Notice: Undefined index: extension in C:\xampp\htdocs\index.php on line 7 Notice: Undefined index: extension in C:\xampp\htdocs\index.php on line 7 Jeg prøvde å fjerne <strong class="highlight"></strong>. Den viser da ikke lenger .PHP filene, men jeg får fortsatt en feilmelding på toppen. Endret 1. mars 2012 av Rigo Lenke til kommentar
slacky Skrevet 1. mars 2012 Del Skrevet 1. mars 2012 (endret) Notis er oftest ikke noe å bry seg med (Det er ikke FEILmeldinger, og de har ingen betyding for vidre kode). Dette er "tilsvarnde" ditt script +/- (HTML-delen er ikke lik): <?php $dir = "."; if ($handle = opendir($dir)) { echo "<table cellspacing='20' cellpadding='10'>\n"; $i=0; while (false !== ($file = readdir($handle))) { $inf = pathinfo($file); $ext = $inf['extension']; if ($ext=="" && $file[0]!=".") { if($i==0 or $i%5==0) echo "<tr>\n"; $i++; echo " <td width='70' height='70' style='text-align:center;background:#ddd;border:1px solid #ffaaaa;border-radius:4px;'> <span style='color:#333;'> <a href='".$dir.$file."'><b>{$file}</b></a> <br /> </span> <span style='font-size:10px;'> - <a href=\"delete.php?file={$file}\">Delete</a> </span> </td>"; if($i%5==0) echo "</tr>\n\n"; } } echo "</table>\n"; closedir($handle); } ?> Kan ikke dette forenkles: >>> if (substr("$dirArray[$index]", 0, 1) != "."){ Til noe lignende dette: >>> if ($dirArray[$index][0]!='.'){ Endret 1. mars 2012 av warpie Lenke til kommentar
Rigo Skrevet 1. mars 2012 Forfatter Del Skrevet 1. mars 2012 (endret) Får fortsatt samme feilmelding. Jeg har ikke selv laget koden, men har fått det fra en annen side, og jeg prøver å tilpasse den til mine behov. Jeg får denne feilmeldinga på toppen: Notice: Undefined index: extension in C:\xampp\htdocs\index.php on line 9 Den virker harmløs, men skulle gjerne hatt den bort, ettersom jeg ikke ønsker en sånn på toppen av hver side EDIT: Ser nå at du fjernet ALLE filer med filendelse. Jeg ønsker kun å ikke vise .PHP filene. Resten må vises. EDIT 2: Endte opp med et annet script, takk for hjelpen! Endret 1. mars 2012 av Rigo Lenke til kommentar
Leakim Skrevet 2. mars 2012 Del Skrevet 2. mars 2012 (endret) Får fortsatt samme feilmelding. Jeg har ikke selv laget koden, men har fått det fra en annen side, og jeg prøver å tilpasse den til mine behov. Jeg får denne feilmeldinga på toppen: Notice: Undefined index: extension in C:\xampp\htdocs\index.php on line 9 Den virker harmløs, men skulle gjerne hatt den bort, ettersom jeg ikke ønsker en sånn på toppen av hver side EDIT: Ser nå at du fjernet ALLE filer med filendelse. Jeg ønsker kun å ikke vise .PHP filene. Resten må vises. EDIT 2: Endte opp med et annet script, takk for hjelpen! Ser du løste det, men du kan bare legge inn error_reporting(0); på toppen av scriptet ditt, så vises ingen feilmeldinger/notiser/advarsler. Evt. kan du skru av error_reporting i configfila til PHP. Endret 2. mars 2012 av Leakim1991 Lenke til kommentar
slacky Skrevet 2. mars 2012 Del Skrevet 2. mars 2012 (endret) Notis er altid harmløs. Ved mitt script så ville du kunne fjernet bare .php ved å erstatte følgende: >>> if ($ext=="" && $file[0]!=".") { med: >>> if ($ext!=".php" && $file[0]!=".") { Notis vises kjeldent/aldri når siden er lastet opp på webhotell. Hoster du serveren privat kan du stille dette inn i php.ini-filen: >>> error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE Selvfølgelig kan du droppe å skjule "E_DEPRECATED".. En skal ikke ta i bruk funksjoner som er deprecated uansett; Det betyr oftest at det finnes en "lik" funksjon som oftest er bedre på et vis. Endret 2. mars 2012 av warpie Lenke til kommentar
FraXinuS Skrevet 2. mars 2012 Del Skrevet 2. mars 2012 Jeg vil ikke si at Notice-meldinger er harmløste, De forteller deg vanligvis at du har en skrivefeil eller bruker en variabel som ikke finnes. Det kan ha store konsekvenser for koden din om du har en skrivefeil uten at du merker det. Jeg bruker vanligvis å legge inn en error handler (set_error_handler) som stopper scriptet hvis jeg bruker en undefined variabel eller array index. Løsningen på Noticene dine står i manualen: Note: If the path does not have an extension, no extension element will be returned (see second example below). Det betyr at du må sjekke at $pathinfo['extension'] finnes før du prøver å bruke den. 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å