Mit PHP E-Mails versenden und Dateien hochladen – Formulare

Kontaktformular mit HTML und PHP (E-Mails versenden mit PHP)

Zum Versenden von E-Mails von deiner Homepage aus, benötigst du etwas HTML-Code für die Strukturierung deines Kontaktformulars und etwas PHP-Code, um die eingegebenen Informationen deiner Besucher auszulesen und per E-Mail zu versenden. Ich gehe in dieser Anleitung davon aus, dass du bereits weißt, wie man PHP Code ausführt und wie PHP und HTML zusammenarbeiten. Wenn nicht, lese dir doch noch schnell den Artikel PHP in HTML einbinden und ausgeben durch.

HTML-Code für Kontaktformular:

<!DOCTYPE html>
<html>
<body>

<h1>Kontaktformular</h1>

<form action="mailversand.php" method="post">
  Name: <input type="text" name="name"><br>
  E-Mail: <input type="text" name="email"><br>
  Nachricht: <textarea name="message"></textarea><br>
  <input type="submit">
</form>

</body>
</html>

In diesem Formular geben Benutzer ihren Namen und ihre E-Mail-Adresse ein und schreiben eine Nachricht. Wenn sie auf „Submit“ klicken, werden die Formulardaten an das PHP-Skript „mailversand.php“ gesendet.

PHP-Code für Kontaktformular (PHP mail-Funktion):

Nenne die Datei mailversand.php

<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];

$headers = 'From: ' . $email;
$to = 'deine-email@beispiel.de';  // Hier solltest du deine E-Mail-Adresse eingeben
$subject = 'Neue Nachricht von ' . $name;

if (mail($to, $subject, $message, $headers)) {
    echo "E-Mail erfolgreich gesendet!";
} else {
    echo "E-Mail konnte nicht gesendet werden.";
}
?>

Jetzt erkläre ich die einzelnen Zeilen:

Im HTML-Code erstellst du ein Formular mit drei Eingabefeldern: für den Namen, die E-Mail-Adresse und die Nachricht des Benutzers. Das Attribut action="mailversand.php" legt fest, dass die Formulardaten an das PHP-Skript „mailversand.php“ gesendet werden, wenn der Benutzer auf „Submit“ klickt. Mit method="post" legst du fest, dass die Formulardaten mit der HTTP-POST-Methode gesendet werden.

Im PHP-Code liest du zuerst die Formulardaten mit $_POST['name'], $_POST['email'] und $_POST['message']. Diese Werte werden in den Variablen $name, $email und $message gespeichert.

Anschließend erstellst du die E-Mail-Header mit From: gefolgt von der E-Mail-Adresse des Benutzers. Du legst auch den Empfänger der E-Mail (die Variable $to) und den Betreff der E-Mail fest.

Schließlich versuchst du, die E-Mail mit der mail()-Funktion zu senden. Diese Funktion gibt true zurück, wenn die E-Mail erfolgreich gesendet wurde, und false, wenn nicht. Mit einer If-Anweisung überprüfst du das Ergebnis und gibst eine entsprechende Nachricht aus.

Bitte beachte, dass dieser Code nur zu Demonstrationszwecken dient und in einer realen Anwendung verbessert werden sollte. Insbesondere solltest du die Benutzereingaben validieren und bereinigen, bevor du sie verwendest, um Sicherheitsprobleme zu vermeiden. Außerdem kann das Senden von E-Mails mit der mail()-Funktion auf einigen Servern problematisch sein, so dass du vielleicht eine fortgeschrittene Bibliothek wie PHPMailer verwenden möchtest.

Dateien mit PHP hochladen

Hier ist ein einfaches PHP-Script, um eine Datei hochzuladen. Dieses Beispiel ermöglicht das Hochladen von Bildern und beschränkt die Dateigröße auf 2 MB (2.000.000 Bytes). Der Code besteht aus zwei Teilen: dem PHP-Script, das den Datei-Upload verarbeitet, und dem HTML-Formular, mit dem Benutzer die Datei auswählen und hochladen können.

PHP-Code:

<?php
// Zielordner für hochgeladene Dateien
$target_dir = "uploads/";

// Überprüfen, ob das Formular abgeschickt wurde
if (isset($_POST['submit'])) {
    // Dateiname erstellen
    $target_file = $target_dir . basename($_FILES["fileToUpload"]["name"]);

    // Flag, um festzustellen, ob der Upload fortgesetzt werden soll
    $uploadOk = 1;

    // Dateigröße auf 2 MB (2.000.000 Bytes) beschränken
    if ($_FILES["fileToUpload"]["size"] > 2000000) {
        echo "Die Datei ist zu groß.";
        $uploadOk = 0;
    }

    // Nur bestimmte Dateitypen zulassen (in diesem Fall JPG, JPEG, PNG und GIF)
    $imageFileType = strtolower(pathinfo($target_file, PATHINFO_EXTENSION));
    $allowed_filetypes = array("jpg", "jpeg", "png", "gif");
    if (!in_array($imageFileType, $allowed_filetypes)) {
        echo "Nur JPG, JPEG, PNG und GIF Dateien sind erlaubt.";
        $uploadOk = 0;
    }

    // Überprüfen, ob $uploadOk auf 0 gesetzt wurde (aufgrund eines Fehlers)
    if ($uploadOk == 0) {
        echo "Die Datei wurde nicht hochgeladen.";
    } else {
        // Wenn alles in Ordnung ist, versuchen Sie, die Datei hochzuladen
        if (move_uploaded_file($_FILES["fileToUpload"]["tmp_name"], $target_file)) {
            echo "Die Datei " . htmlspecialchars(basename($_FILES["fileToUpload"]["name"])) . " wurde erfolgreich hochgeladen.";
        } else {
            echo "Beim Hochladen der Datei ist ein Fehler aufgetreten.";
        }
    }
}
?>

HTML-Code:

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <title>Datei-Upload</title>
</head>
<body>

<h1>Datei hochladen</h1>

<form action="" method="post" enctype="multipart/form-data">
    <label for="fileToUpload">Wählen Sie eine Datei zum Hochladen aus:</label>
    <input type="file" name="fileToUpload" id="fileToUpload">
    <br><br>
    <input type="submit" value="Datei hochladen" name="submit">
</form>

</body>
</html>

Viel Spaß beim Ausprobieren!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen