PHP-Einfach.de PHP lernen leicht gemacht

Navigation
» Startseite
» Newsübersicht
» Kontakt
» Impressum

Community
» Forum
» Gästebuch

Tutorial
» PHP Tutorial
» MySQL Tutorial
» PHP
   » Gästebuch
   » Logfiles
   » Sitemap
   » Login
   » Login Sessions
   » Login Sessions +
      Dateien

   » Links anklickbar
   » Counter
   » Dateiupload
   » Formular mailer
   » Cookies

» MySQL
» Codeschnipsel

Downloads
» Einführung
» Scripts
» Command Board

Sonstiges
» md5-Generator
» Generator
» Wissenswertes

PHP lernen


Dieses Projekt wird unterstützt von
Lichteffekte Shop

 
Partner:
PHP Forum
Mathe Nachhilfe
Suchmaschinenoptimierung

Datei-upload per Formular

Manchmal ist es sinnvoll, dem User zu erlauben, etwas auf den Webspace hochzuladen. Allerdings sollte so ein Script nur mit Einschrenkungen funktionieren, denn wenn der Besucher alles hochladen kann, dann kann er auch PHP Dateien hochladen, die z.B. alle anderen Dateien auf dem Server löschen. Deswegen sollte man die die Datei, die hochgeladen wird, erst überprüfen lassen, bzw. in ein anderes Format verwandeln.

Zuerst brauchen wir für unser Datei-Upload Script ein Formular, ca. so:

<form action="upload.php" method="post" enctype="multipart/form-data">
<input type="file" name="datei"><br>
<input type="submit" value="Hochladen">
</form>

Hiermit können wir unsere Festplatte durchsuchen, und den gewünschten Dateipfad in das Feld eintragen.
Dürckt man jetzt auf "Hochladen", werden die Informationen an upload.php gesendet.

Mit move_uploaded_file laden wir jetzt die Datei hoch. Mit $_FILES, bzw. mit $HTTP_POST_FILES (falls man eine kleinere Version als 4.0.6 benutzt) können wir Informationen über die Datei sammeln.

Der Script ohne Einschränkungen

<?php
move_uploaded_file($_FILES['datei']['tmp_name'], "upload/datei.txt");
?>

Dieser Script lädt unsere Datei in das Verzeichniss upload, und nennt die Datei datei.txt.
Wichtig: Der Ordner upload muss die Schreibrechte CHMOD(777) besitzen.
Außerdem unterstützt nicht jeder Webspace Dateiuploads.

Mit folgenden Befehlen können wir Informationen über die Datei sammeln:

$_FILES['datei']['name']
Hiermit erhalten wir den Namen der Datei auf dem PC des besuchers.

$_FILES['datei']['tmp_name']
Dieser Variable enthält den Namen der Datei auf dem temporären Verzeichnis auf dem Server.

$_FILES['datei']['size']
Diese Variable enthält die Größe der Datei in Bytes.

$_FILES['datei']['type']
Diese Variable enthält den MIME-Type der Datei.
Gif-Dateien haben den Typ: image/gif
.
Man sollte aber lieber den Befehl GetImageSize() benutzen.

Script mit Einschränkungen
Mit diesem Script kann man nur Gif und jpg Dateien hochladen, die nicht größer als 100 KB sind. Dafür kann man sie später auch anschauen.

Für den Script benutzen wir wieder das Formular, das wir vorhin auch schon benutzt haben, aber der PHP-Code sieht etwas anders aus:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
<?php
$dateityp = GetImageSize($_FILES['datei']['tmp_name']);
if($dateityp[2] != 0)
   {

   if($_FILES['datei']['size'] <  102400)
      {
      move_uploaded_file($_FILES['datei']['tmp_name'], "upload/".$_FILES['datei']['name']);
      echo "Das Bild wurde Erfolgreich nach upload/".$_FILES['datei']['name']." hochgeladen";
      }

   else
      {
         echo "Das Bild darf nicht größer als 100 kb sein ";
      }

    }

else
    {
    echo "Bitte nur Bilder im Gif bzw. jpg Format hochladen";
    }
?>


Zuerst überpüfen wir, on die Datei auch eine Bild-Datei ist. Dies geht mit GetImageSize. Falls man versucht, eine andere Datei hochzuladen, enthält $dateityp[2] den Wert 0. Es gibt weitere Grafiktypen:
1 = GIF, 2 = JPG, 3 = PNG, 4 = SWF

Danach überprüfen wir, ob die Datei nicht größer als 100 kb (102400 Byte) ist. Wenn alles in Ordnung ist, wird die Datei hochgeladen.

Autor Andavos

News
13.08 - » Spam im Gästebuch
Endlich Schluss mit dem Spam

08.12 - » Clanletter 2.0
Clanletter wurde komplett neu programmiert

01.09 - » Command Board 1.0 - 2.0
Das Command Board 1.0 Beta 2.0 ist erschienen


Mehr

Forum
» Entwickler Forum

» insert nach login

» Tabellenzelle zu groß







© PHP-Einfach.de 2003 - 2012