Avatar billede zorak Nybegynder
19. maj 2003 - 21:56 Der er 10 kommentarer og
1 løsning

Problemmer med script...

Hej eksperter!

Jeg har et problem vedr. et PHP-script, som der viser alle filer i en mappe... men hvordan kan jeg få den til at kun at vise filer med fitypen .cms?

Her er hele koden:
<?php
$konfiguration["cms_dir"] = "../";
  /**
  * Intet tegn paa upload, saa vi viser bare listen over filer
  * og HTML-formularen til nye uploads.
  */
  $indhold = listFiler($konfiguration["cms_dir"]);

/**
* Skriver ud til browseren
*/
echo $indhold;
exit;



/**************************************************\
**              Hjaelpefunktioner              **
\**************************************************/
function listFiler($bibliotek) {

  if($bib = @opendir($bibliotek)) {
    /**
    * Denne syntaks er forklaret i PHP-manualen:
    * http://www.php.net/manual/en/function.readdir.php
    */
    while (false !== ($fil = readdir($bib))) {
      if($fil != "." && $fil != ".." && !ereg("^\..+", $fil)) {
          $fil_liste[] = "<a href=\"edit.php?file=$fil\">$fil</a>";
      }
    }
    closedir($bib);

    if(is_array($fil_liste)) {
      $liste = "" . join("<br>", $fil_liste) . "";
    } else {
      $liste = "The directory is empty";
    }
    return "" . $liste . "</ul>";
  } else {
    die("Could not open directory: " . $cms_dir);
  }

}
?>

Håber at I kan hjælpe mig...
Avatar billede fangel Nybegynder
19. maj 2003 - 22:03 #1
function listFiler($bibliotek) {

  if($bib = @opendir($bibliotek)) {
    /**
    * Denne syntaks er forklaret i PHP-manualen:
    * http://www.php.net/manual/en/function.readdir.php
    */
    while (false !== ($fil = readdir($bib))) {
      if(($fil != "." && $fil != ".." && !ereg("^\..+", $fil)) AND ereg("\.chs$", $fil)) {
          $fil_liste[] = "<a href=\"edit.php?file=$fil\">$fil</a>";
      }
    }
    closedir($bib);

    if(is_array($fil_liste)) {
      $liste = "" . join("<br>", $fil_liste) . "";
    } else {
      $liste = "The directory is empty";
    }
    return "" . $liste . "</ul>";
  } else {
    die("Could not open directory: " . $cms_dir);
  }

}

burde klare det...
Avatar billede fangel Nybegynder
19. maj 2003 - 22:04 #2
hov... skal self. være "cms" der står... ;)
Avatar billede zorak Nybegynder
19. maj 2003 - 22:15 #3
tak for det hurtige svar! :)
Avatar billede zorak Nybegynder
19. maj 2003 - 22:18 #4
... og lige et hurtige spørgsmål:
1) hvordan kan man få PHP til at lave en tom fil?
2) hvordan sletter man en fil?
Avatar billede fangel Nybegynder
20. maj 2003 - 15:35 #5
1) hvordan "tom"?
2) unline("filnavn.ext");

Morten
Avatar billede zorak Nybegynder
20. maj 2003 - 15:50 #6
1) at man laver en fil uden indhold... det skal jeg bruge fordi, at det script som jeg bruger til at gemme med siger at filen ikke findes og vil derfor ikke gemme...
Avatar billede fangel Nybegynder
20. maj 2003 - 16:26 #7
hvad bruger du til at gemme med? kode... nok fordi du bruger et forkert parameter...

Morten
Avatar billede zorak Nybegynder
21. maj 2003 - 21:16 #8
<?
// Let's make sure the file exists and is writable first.
if (is_writable("../cms-content/$filename")) {
// In our example we're opening $filename in append mode.
// The file pointer is at the bottom of the file hence
// that's where $somecontent will go when we fwrite() it.
if (!$handle = fopen("../cms-content/$filename", 'a')) {
echo "Cannot open file ($filename)";
}
// Write $somecontent to our opened file.
if (!fwrite($handle, $content)) {
echo "Cannot write to file ($filename)";
}
echo "Saved \"$filename\" with succes!";
fclose($handle);           
} else {
echo "The file \"$filename\" is not writable";
}
?>
Avatar billede fangel Nybegynder
22. maj 2003 - 15:34 #9
det er sidste parameter sum du har fejl i...

altså "a"et i denne linie:
if (!$handle = fopen("../cms-content/$filename", 'a')) {

du kan bruge:

r  = åben fil for læsning fra starten af filen
r+  = åben fil for læsning og skrivning fra starten af filen
w  = åben fil for skrivning fra starten af filen
w+  = åben fil for læsning og skrivning fra starten af filen
a  = åben fil for skrivning fra slutningen af filen
a+  = åben fil for læsning og skrivning fra slutningen af filen af filen

extra: w og w+ opretter filen hvis denne ikke findes, og de trunkere også indhold...

Morten
Avatar billede zorak Nybegynder
24. maj 2003 - 09:58 #10
skal jeg så bruge r+ ell. w+?
Avatar billede fangel Nybegynder
24. maj 2003 - 10:27 #11
jeg gætter på at det er fordi du gerne vil skrive til bunden af filen... (det er det a(+) gør..)

men så kan du bruge denne omskrivning:

<?
// Let's make sure the file exists and is writable first.
if (is_writable("../cms-content/$filename")) {
  // In our example we're opening $filename in append mode.
  // The file pointer is at the bottom of the file hence
  // that's where $somecontent will go when we fwrite() it.
  if(is_file("../cms-content/$filename") $type="a";
  else $type="w";
  if (!$handle = fopen("../cms-content/$filename", $type)) {
    echo "Cannot open file ($filename)";
  }
  // Write $somecontent to our opened file.
  if (!fwrite($handle, $content)) {
    echo "Cannot write to file ($filename)";
  }
  echo "Saved \"$filename\" with succes!";
  fclose($handle);         
} else {
  echo "The file \"$filename\" is not writable";
}
?>

uden at have testet vil jeg gætte på at det vil hjælpe...

Morten
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester