Gå til innhold

Vise mapper med PHP - ikke vise .PHP exstensions


Anbefalte innlegg

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 av Rigo
Lenke til kommentar
Videoannonse
Annonse

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 av warpie
Lenke til kommentar

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 :p

 

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 av Rigo
Lenke til kommentar

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 :p

 

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 av Leakim1991
Lenke til kommentar

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 av warpie
Lenke til kommentar

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...