PHP -Tutorial

PHP-HOME PHP-Einführung PHP-Installation PHP-Syntax PHP-Kommentare PHP-Variablen PHP-Echo / Drucken PHP-Datentypen PHP-Strings PHP-Nummern PHP-Mathematik PHP-Konstanten PHP-Operatoren PHP If...Else...Elseif PHP-Schalter PHP-Schleifen PHP-Funktionen PHP-Arrays PHP-Superglobals PHP-RegEx

PHP -Formulare

Handhabung von PHP-Formularen PHP-Formularvalidierung PHP-Formular erforderlich PHP-Formular-URL/E-Mail PHP-Formular vollständig

PHP- Erweitert

PHP-Datum und -Zeit PHP einschließen Umgang mit PHP-Dateien PHP-Datei öffnen/lesen PHP-Datei erstellen/schreiben Hochladen von PHP-Dateien PHP-Cookies PHP-Sitzungen PHP-Filter PHP-Filter für Fortgeschrittene PHP-Callback-Funktionen PHP-JSON PHP-Ausnahmen

PHP -OOP

PHP Was ist OOP PHP-Klassen/Objekte PHP-Konstruktor PHP-Destruktor PHP-Zugriffsmodifikatoren PHP-Vererbung PHP-Konstanten Abstrakte PHP-Klassen PHP-Schnittstellen PHP-Eigenschaften Statische PHP-Methoden Statische PHP-Eigenschaften PHP-Namespaces PHP-Iterables

MySQL- Datenbank

MySQL-Datenbank MySQL Connect MySQL-DB erstellen MySQL-Tabelle erstellen MySQL-Daten einfügen MySQL Letzte ID abrufen MySQL Mehrfach einfügen MySQL vorbereitet MySQL Select-Daten MySQL-Wo MySQL-Reihenfolge nach MySQL-Daten löschen MySQL-Update-Daten MySQL-Limit-Daten

PHP- XML

PHP-XML-Parser PHP-SimpleXML-Parser PHP SimpleXML - Get PHP-XML-Expat PHP-XML-DOM

PHP -AJAX

AJAX-Einführung AJAX-PHP AJAX-Datenbank AJAX-XML AJAX Live-Suche AJAX-Umfrage

PHP- Beispiele

PHP-Beispiele PHP-Compiler PHP-Quiz PHP-Übungen PHP-Zertifikat

PHP- Referenz

PHP-Übersicht PHP-Array PHP-Kalender PHP-Datum PHP-Verzeichnis PHP-Fehler PHP-Ausnahme PHP-Dateisystem PHP-Filter PHP-FTP PHP-JSON PHP-Schlüsselwörter PHP-Libxml PHP-Mail PHP-Mathematik PHP-Sonstiges PHP MySQLi PHP-Netzwerk PHP-Ausgabesteuerung PHP-RegEx PHP-SimpleXML PHP-Stream PHP-String Umgang mit PHP-Variablen PHP-XML-Parser PHP-Zip PHP-Zeitzonen

Hochladen von PHP -Dateien


Mit PHP ist es einfach, Dateien auf den Server hochzuladen.

Mit Leichtigkeit kommt jedoch Gefahr, also seien Sie immer vorsichtig, wenn Sie Datei-Uploads zulassen!


Konfigurieren Sie die Datei „php.ini“.

Stellen Sie zunächst sicher, dass PHP so konfiguriert ist, dass es Datei-Uploads zulässt.

Suchen Sie in Ihrer „php.ini“-Datei nach der file_uploadsDirektive und setzen Sie sie auf On:

file_uploads = On

Erstellen Sie das HTML-Formular

Erstellen Sie als Nächstes ein HTML-Formular, mit dem Benutzer die Bilddatei auswählen können, die sie hochladen möchten:

<!DOCTYPE html>
<html>
<body>

<form action="upload.php" method="post" enctype="multipart/form-data">
  Select image to upload:
  <input type="file" name="fileToUpload" id="fileToUpload">
  <input type="submit" value="Upload Image" name="submit">
</form>

</body>
</html>

Einige Regeln für das obige HTML-Formular:

  • Stellen Sie sicher, dass das Formular method="post" verwendet
  • Das Formular benötigt außerdem das folgende Attribut: enctype="multipart/form-data". Es gibt an, welcher Inhaltstyp beim Senden des Formulars verwendet werden soll

Ohne die oben genannten Anforderungen funktioniert der Dateiupload nicht.

Andere Dinge zu beachten:

  • Das type="file"-Attribut des <input>-Tags zeigt das Eingabefeld als Dateiauswahlsteuerelement mit einer Schaltfläche "Durchsuchen" neben dem Eingabesteuerelement

Das obige Formular sendet Daten an eine Datei namens "upload.php", die wir als nächstes erstellen werden.



Erstellen Sie das PHP-Skript zum Hochladen der Datei

Die Datei „upload.php“ enthält den Code zum Hochladen einer Datei:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));
// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}
?>

PHP-Skript erklärt:

  • $target_dir = "uploads/" - gibt das Verzeichnis an, in dem die Datei abgelegt wird
  • $target_file gibt den Pfad der hochzuladenden Datei an
  • $uploadOk=1 wird noch nicht verwendet (wird später verwendet)
  • $imageFileType enthält die Dateiendung der Datei (in Kleinbuchstaben)
  • Überprüfen Sie als Nächstes, ob die Bilddatei ein echtes Bild oder ein gefälschtes Bild ist

Hinweis: Sie müssen ein neues Verzeichnis namens „uploads“ in dem Verzeichnis erstellen, in dem sich die Datei „upload.php“ befindet. Die hochgeladenen Dateien werden dort gespeichert.


Überprüfen Sie, ob die Datei bereits vorhanden ist

Jetzt können wir einige Einschränkungen hinzufügen.

Zuerst prüfen wir, ob die Datei bereits im Ordner „Uploads“ vorhanden ist. Wenn dies der Fall ist, wird eine Fehlermeldung angezeigt und $uploadOk wird auf 0 gesetzt:

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

Dateigröße begrenzen

Das Dateieingabefeld in unserem obigen HTML-Formular heißt "fileToUpload".

Jetzt wollen wir die Größe der Datei überprüfen. Wenn die Datei größer als 500 KB ist, wird eine Fehlermeldung angezeigt und $uploadOk wird auf 0 gesetzt:

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

Dateityp begrenzen

Mit dem folgenden Code können Benutzer nur JPG-, JPEG-, PNG- und GIF-Dateien hochladen. Alle anderen Dateitypen geben eine Fehlermeldung aus, bevor $uploadOk auf 0 gesetzt wird:

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

Schließen Sie das PHP-Skript zum Hochladen der Datei ab

Die komplette „upload.php“-Datei sieht nun so aus:

<?php
$target_dir = "uploads/";
$target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);
$uploadOk = 1;
$imageFileType = strtolower(pathinfo($target_file,PATHINFO_EXTENSION));

// Check if image file is a actual image or fake image
if(isset($_POST["submit"])) {
  $check = getimagesize($_FILES["fileToUpload"]["tmp_name"]);
  if($check !== false) {
    echo "File is an image - " . $check["mime"] . ".";
    $uploadOk = 1;
  } else {
    echo "File is not an image.";
    $uploadOk = 0;
  }
}

// Check if file already exists
if (file_exists($target_file)) {
  echo "Sorry, file already exists.";
  $uploadOk = 0;
}

// Check file size
if ($_FILES["fileToUpload"]["size"] > 500000) {
  echo "Sorry, your file is too large.";
  $uploadOk = 0;
}

// Allow certain file formats
if($imageFileType != "jpg" && $imageFileType != "png" && $imageFileType != "jpeg"
&& $imageFileType != "gif" ) {
  echo "Sorry, only JPG, JPEG, PNG & GIF files are allowed.";
  $uploadOk = 0;
}

// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0) {
  echo "Sorry, your file was not uploaded.";
// if everything is ok, try to upload file
} else {
  if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
    echo "The file ". htmlspecialchars( basename( $_FILES["fileToUpload"]["name"])). " has been uploaded.";
  } else {
    echo "Sorry, there was an error uploading your file.";
  }
}
?>

Vollständige Referenz zum PHP-Dateisystem

Eine vollständige Referenz der Dateisystemfunktionen finden Sie in unserer vollständigen PHP-Dateisystemreferenz .