Avatar billede sleort Nybegynder
18. august 2003 - 16:03 Der er 8 kommentarer og
1 løsning

Fatal error: Call to undefined function: listfiler() in

Jeg har forsøgt at indsætte en IF function i toppen af en upload formular (som virkede), men efter jeg har indsat den får jeg følgende meddelse:

Fatal error: Call to undefined function: listfiler() in /var/www/hotels/1go/kastner/html/upload01.php on line 84

Jeg kan ikke finde ud af hvad det er som der er galt.
// LINIE 84 = $indhold = listFiler($konfiguration["upload_bibliotek"]);

Den er også markeret længere nede på siden.


<?php
if ($_SERVER["HTTP_REFERER"] == "http://www.kastner.1go.dk/pass01.htm") {
?>
<?php
/**
* Simpelt script der tager imod et filupload og lister
* filer i upload-biblioteket.
*
* Scriptet er et eksempel til en artikel paa WebCafe.dk:
*
*    http://www.webcafe.dk/artikler/php/upload/
*/


/**
* Hvor skal filerne uploades til?
* Husk, at webserveren skal kunne skrive til dette bibliotek
*/
$konfiguration["upload_bibliotek"] = "./upload01";

/* Hvor mange kilobytes maa filerne fylde per styk? */
$konfiguration["max_stoerrelse"] = "10000";


/**
* Checker PHP-version
*/
list($major, $minor, $rev) = explode(".", phpversion());
if($major < 4) {
  die("Jeg kan kun arbejde med PHP 4.0.0 eller derover");
}


/**
* Udligner forskellene mellem 4.1.x og 4.0.x
* Bemaerk, at disse ikke er "superglobals"
*/
if($minor < 1) {
  $_FILES = $HTTP_POST_FILES;
  $_POST = $HTTP_POST_VARS;
  $_SERVER = $HTTP_SERVER_VARS;
}


if($_FILES["upfil"]["size"] > 0) {

  /**
  * Hvis der er en fil, saa uploader vi den.
  *
  * Foerst slaar vi lige fast, hvor filen skal flyttes fra og til.
  */

  $fra = $_FILES["upfil"]["tmp_name"];
  $til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];

  /**
  *  Checker lige om filen er for stor til at vi vil acceptere den.
  *  Vi bruger ceil() i stedet for round(), saa vi ikke faar den skoere
  *  situation, at fejlmeldingen siger, at filen er for stor, men angiver
  *  samme stoerrelse for filen og den oevre graense.
  */
  $fil_stoerrelse = filesize($fra)/1024;
  if($fil_stoerrelse > $konfiguration["max_stoerrelse"]) {
      die("Desv&aelig;rre - filen er for stor. Jeg accepterer kun " .
          $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
          ceil($fil_stoerrelse) . "kb");
  }
  if(function_exists("move_uploaded_file")) {
    move_uploaded_file($fra, $til);
  } else {
    copy($fra, $til);
  }

header("Location: " . $_SERVER["PHP_SELF"]);

  exit;

} else {



// LINIE 84 er lige herunder.



  /**
  * Intet tegn paa upload, saa vi viser bare listen over filer
  * og HTML-formularen til nye uploads.
  */
  $indhold = listFiler($konfiguration["upload_bibliotek"]);
  $indhold .= bygFormular($_SERVER["PHP_SELF"]);
  $output = bygSide("File Upload Section", $indhold);

}

$action = $_GET['action'];
$file = $_GET['file'];
if ($action == "delete") {
  if (@file_exists("./upload01/$file")) {
    unlink("./upload01/$file");
    header("Location: " . $_SERVER["PHP_SELF"]);
  }
  }
/**
* Skriver ud til browseren
*/
echo $output;
exit;


/**************************************************\
**              Hjaelpefunktioner              **
\**************************************************/

function bygSide($titel, $indhold) {

  /**
  * Pakker indholdet ind i lidt formalia
  */
  return '
<html>
            <head>
<title>' . $titel . '</title>
<link rel="stylesheet" href="css.css" type="text/css">
</head>
            <body bgcolor="#ffffff">
             
              ' . $indhold . '</body>
          </html>
        ';

}

function bygFormular($action) {

  $formular = '<form action="' . $action . '" method="post" enctype="multipart/form-data">
                <table border="1" cellpadding="5" cellspacing="0">
                  <tr>
                    <td align="right" bgcolor="#B9D5E3"><b>Fil til upload:</b></td>
                    <td bgcolor="#CDE0EA"><input type="file" name="upfil" /></td>
                  </tr>
                  <tr>
                    <td colspan="2" align="middle" bgcolor="#CDE0EA"><input type="submit" value="upload" /></td>
                    </tr>
                   
                   
                   
                </table>
                </form>
              <b>ADVARSEL:</b><br>Nå du trykker <i>::Slet denne fil::</i> bliver filen slettet med det samme,og der kan ikke fortrydes.<br><br><br><br>
                <a href="#" onClick="window.close()">Luk vinduet</a>
                <br><br><br>
                  ';

  return "<h3>Upload fil:</h3>" . $formular;

}
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[] = "<tr><td><a href=\"$bibliotek/$fil\">$fil</a></td><td width='135' align='center'><a href=\"upload01.php?action=delete&file=$fil\">:: Slet denne fil ::</a></td></tr>
      ";
      }
    }
    closedir($bib);

    if(is_array($fil_liste)) {
      $liste = "<table border='0' width='410'>" . join("", $fil_liste) . "</table><br>hr align='left' width='400'>";
    } else {
      $liste = "<li>Ingen filer p&aring; lager</li>";
    }
    return "<h3>Filer p&aring; lager:</h3>" . $liste . "&nbsp;";
  } else {
    die("Kunne ikke &aring;bne biblioteket: " . $bibliotek);
  }

}
?>
<?php
} else {
    header('Location: index.php');
}
?>
Avatar billede sone Nybegynder
18. august 2003 - 16:11 #1
Jeg har før oplevet at hvis der en fejl inde i funktionen - så kan PHP godt afvikle scriptet, men "lader som om" at funktionen ikke eksisterer.
Avatar billede fangel Nybegynder
18. august 2003 - 16:39 #2
tror funktion opbygningen skal komme før kaldet! prøv at flyt selve koden ned under funktionerne!

Morten
Avatar billede Slettet bruger
18. august 2003 - 18:15 #3
Dine funktioner står inde i en if (...) { // funktioner      }

Tag selve funktionerne ud af denne if (...) { // gør noget } // funktioner her.

Altså så funktionerne kommer før eller efter selve dine betingelser (if's). Og så det kun er kaldene hertil der er mellem { og }
Avatar billede detox Nybegynder
18. august 2003 - 18:17 #4
Prøv med:

<?php
if ($_SERVER["HTTP_REFERER"] == "http://www.kastner.1go.dk/pass01.htm")  {
/**
* Simpelt script der tager imod et filupload og lister
* filer i upload-biblioteket.
*
* Scriptet er et eksempel til en artikel paa WebCafe.dk:
*
*    http://www.webcafe.dk/artikler/php/upload/
*/


/**
* Hvor skal filerne uploades til?
* Husk, at webserveren skal kunne skrive til dette bibliotek
*/
$konfiguration["upload_bibliotek"] = "./upload01";

/* Hvor mange kilobytes maa filerne fylde per styk? */
$konfiguration["max_stoerrelse"] = "10000";


/**
* Checker PHP-version
*/
list($major, $minor, $rev) = explode(".", phpversion());
if($major < 4) {
  die("Jeg kan kun arbejde med PHP 4.0.0 eller derover");
}


/**
* Udligner forskellene mellem 4.1.x og 4.0.x
* Bemaerk, at disse ikke er "superglobals"
*/
if($minor < 1) {
  $_FILES = $HTTP_POST_FILES;
  $_POST = $HTTP_POST_VARS;
  $_SERVER = $HTTP_SERVER_VARS;
}


if($_FILES["upfil"]["size"] > 0) {

  /**
  * Hvis der er en fil, saa uploader vi den.
  *
  * Foerst slaar vi lige fast, hvor filen skal flyttes fra og til.
  */

  $fra = $_FILES["upfil"]["tmp_name"];
  $til = $konfiguration["upload_bibliotek"] . "/" . $_FILES["upfil"]["name"];

  /**
  *  Checker lige om filen er for stor til at vi vil acceptere den.
  *  Vi bruger ceil() i stedet for round(), saa vi ikke faar den skoere
  *  situation, at fejlmeldingen siger, at filen er for stor, men angiver
  *  samme stoerrelse for filen og den oevre graense.
  */
  $fil_stoerrelse = filesize($fra)/1024;
  if($fil_stoerrelse > $konfiguration["max_stoerrelse"]) {
      die("Desv&aelig;rre - filen er for stor. Jeg accepterer kun " .
          $konfiguration["max_stoerrelse"] . "kb, og din fil fylder " .
          ceil($fil_stoerrelse) . "kb");
  }
  if(function_exists("move_uploaded_file")) {
    move_uploaded_file($fra, $til);
  } else {
    copy($fra, $til);
  }

header("Location: " . $_SERVER["PHP_SELF"]);

  exit;

} else {



// LINIE 84 er lige herunder.



  /**
  * Intet tegn paa upload, saa vi viser bare listen over filer
  * og HTML-formularen til nye uploads.
  */
  $indhold = listFiler($konfiguration["upload_bibliotek"]);
  $indhold .= bygFormular($_SERVER["PHP_SELF"]);
  $output = bygSide("File Upload Section", $indhold);

}

$action = $_GET['action'];
$file = $_GET['file'];
if ($action == "delete") {
  if (@file_exists("./upload01/$file")) {
    unlink("./upload01/$file");
    header("Location: " . $_SERVER["PHP_SELF"]);
  }
  }
/**
* Skriver ud til browseren
*/
echo $output;
exit;
} else {
    header('Location: index.php');
}
/**************************************************\
**              Hjaelpefunktioner              **
\**************************************************/

function bygSide($titel, $indhold) {

  /**
  * Pakker indholdet ind i lidt formalia
  */
  return '
<html>
            <head>
<title>' . $titel . '</title>
<link rel="stylesheet" href="css.css" type="text/css">
</head>
            <body bgcolor="#ffffff">
             
              ' . $indhold . '</body>
          </html>
        ';

}

function bygFormular($action) {

  $formular = '<form action="' . $action . '" method="post" enctype="multipart/form-data">
                <table border="1" cellpadding="5" cellspacing="0">
                  <tr>
                    <td align="right" bgcolor="#B9D5E3"><b>Fil til upload:</b></td>
                    <td bgcolor="#CDE0EA"><input type="file" name="upfil" /></td>
                  </tr>
                  <tr>
                    <td colspan="2" align="middle" bgcolor="#CDE0EA"><input type="submit" value="upload" /></td>
                    </tr>
                   
                   
                   
                </table>
                </form>
              <b>ADVARSEL:</b><br>Nå du trykker <i>::Slet denne fil::</i> bliver filen slettet med det samme,og der kan ikke fortrydes.<br><br><br><br>
                <a href="#" onClick="window.close()">Luk vinduet</a>
                <br><br><br>
                  ';

  return "<h3>Upload fil:</h3>" . $formular;

}
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[] = "<tr><td><a href=\"$bibliotek/$fil\">$fil</a></td><td width='135' align='center'><a href=\"upload01.php?action=delete&file=$fil\">:: Slet denne fil ::</a></td></tr>
      ";
      }
    }
    closedir($bib);

    if(is_array($fil_liste)) {
      $liste = "<table border='0' width='410'>" . join("", $fil_liste) . "</table><br>hr align='left' width='400'>";
    } else {
      $liste = "<li>Ingen filer p&aring; lager</li>";
    }
    return "<h3>Filer p&aring; lager:</h3>" . $liste . "&nbsp;";
  } else {
    die("Kunne ikke &aring;bne biblioteket: " . $bibliotek);
  }

}
?>
Avatar billede sleort Nybegynder
18. august 2003 - 18:26 #5
Det lader til at det virker. Jeg siger mange tak.
Avatar billede fangel Nybegynder
18. august 2003 - 18:29 #6
detox => hvad rettede du?

Morten
Avatar billede detox Nybegynder
18. august 2003 - 18:53 #7
Jeg flyttede funktionerne udenfor if løkken, som mercur8 osse var inde på.
Avatar billede Slettet bruger
18. august 2003 - 18:56 #8
Hvorfor er det så at det er sone's svar der er accepteret? En fejl?
Avatar billede sleort Nybegynder
18. august 2003 - 18:57 #9
ja - sorry. Det er første gang at jeg prøver dette forum.. My bad.
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