Gå til innhold

fwrite skriver dobbelt...


Anbefalte innlegg

Her er koden som tar imot fil:

/**
* 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"] = "../galleri/barn";

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


/**
* 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æ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 {

 /**
  * 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("Bilde opplastet", $indhold);

}


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



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

function bygSide($titel, $indhold) {

 /**
  * Pakker indholdet ind i lidt formalia
  */
 return '<html>
           <head><title>' . $titel . '</title></head>
           <body bgcolor="#ffffff">
             <div align="right"><a href="./">Tilbake til admin</a></div>
             ' . $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="#999999"><b>Fil til upload:</b></td>
                    <td bgcolor="#cccccc"><input type="file" name="upfil" /></td>
                  </tr>
                  <tr>
                    <td colspan="2" align="middle" bgcolor="#dddddd"><input type="submit" value="upload" /></td>
                  </tr>
                </table>
              </form>
             ';

 return "<h2>Upload fil:</h2>" . $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[] = "<a href=\"$bibliotek/$fil\">$fil</a>";
     }
   }
   closedir($bib);

   if(is_array($fil_liste)) {
     $liste = "<li>" . join("</li><li>", $fil_liste) . "</li>";
   } else {
     $liste = "<li>Ingen filer på lager</li>";
   }
   return "<h2>Filer på lager:</h2><ul>" . $liste . "</ul>";
 } else {
   die("Kunne ikke åbne biblioteket: " . $bibliotek);
 }

}

?> 

 

Som dere ser har jeg utelatt fwrite her nå. Den er det jo mange versjoner av.

Kan legge ved en link hvis dere lover å ikke spamme servern min med pornobilder :p

(Det er nemlig ingen passordbeskyttelse eller filbegrensning)

 

www.oyvindthorstadbo.com/admin

Lenke til kommentar
Videoannonse
Annonse
Gjest Slettet+6132
Her er koden som tar imot fil:

...masse rar og rar kode...

 

Som dere ser har jeg utelatt fwrite her nå. Den er det jo mange versjoner av.

Kan legge ved en link hvis dere lover å ikke spamme servern min med pornobilder :p

(Det er nemlig ingen passordbeskyttelse eller filbegrensning)

 

www.oyvindthorstadbo.com/admin

5334715[/snapback]

 

Kikka på den linken din jeg, må være ett av de rareste galleri-scriptene jeg noen gang har sett. Hvorfor så mange upload-forms?

 

Jeg tror fortsatt på min teori; php-filen som skriver blir oppkalt to ganger. (ikke spør meg hvorfor, den koden du posta var et rot :p )

Lenke til kommentar
Gjest Slettet+6132
Som jeg har sagt, dette er ikke mitt sterkeste område. Gjør det derfor på min egen litt sære måte. Alle upload-formsene er fordi det er mange kategorier og filene skal havne bestemte steder.

5335006[/snapback]

 

Ok, men da vil jeg tipse deg litt om hvordan du kan endre litt på denne sære måten:

En uploadform, og så en radio-button for hver kategori? ;)

 

(forstår fortsatt ikke hva som er galt med scriptet, prøvde å lese gjennom det nå)

Lenke til kommentar

Kan godt poste hele, men greia er vel den at den delen som skriver endrer jeg på hele tida for å fikse på problemet, men dette er den jeg brukte først.

 

<?php
$item = $_POST['navn'];


$myFile = "barnedata.php";
$fh = fopen($myFile, 'a') or die("can't open file");

$stringData = "$item\n";
fwrite($fh, $stringData);

fclose($fh); 

/**
* 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"] = "../galleri/barn";

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


/**
* 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æ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 {

 /**
  * 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("Bilde opplastet", $indhold);

}


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



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

function bygSide($titel, $indhold) {

 /**
  * Pakker indholdet ind i lidt formalia
  */
 return '<html>
           <head><title>' . $titel . '</title></head>
           <body bgcolor="#ffffff">
             <div align="right"><a href="./">Tilbake til admin</a></div>
             ' . $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="#999999"><b>Fil til upload:</b></td>
                    <td bgcolor="#cccccc"><input type="file" name="upfil" /></td>
                  </tr>
                  <tr>
                    <td colspan="2" align="middle" bgcolor="#dddddd"><input type="submit" value="upload" /></td>
                  </tr>
                </table>
              </form>
             ';

 return "<h2>Upload fil:</h2>" . $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[] = "<a href=\"$bibliotek/$fil\">$fil</a>";
     }
   }
   closedir($bib);

   if(is_array($fil_liste)) {
     $liste = "<li>" . join("</li><li>", $fil_liste) . "</li>";
   } else {
     $liste = "<li>Ingen filer på lager</li>";
   }
   return "<h2>Filer på lager:</h2><ul>" . $liste . "</ul>";
 } else {
   die("Kunne ikke åbne biblioteket: " . $bibliotek);
 }

}

?> 

Lenke til kommentar

Når du bruker radiobuttons, skjekker du hva brukeren har satt den til, og får scriptet til å oppføre seg forskjellig basert på dette.

 

Du kan for eksempel bruke en switch (eller vanlige IF-setninger hvis du vil).

 

Nå har ikke jeg sett så nøye på scriptet ditt, men jeg vil tro det bare er en variabel eller to som er forskjellig for de forskjellige upload-formene. Du bruker switchen til å skjekke hvilken radiobutton brukeren har valgt, og gir resten av uploadprosessen de egenskapene de må ha.

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...