Moin Stef,
hier das neue Thema, wie gewünscht. Als Anhang habe ich eine Screenshot des Fehlers angehängt und ganz unten siehst Du meinen Verzeichnis-Baum.
Das ist meine html-Datei:
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=Edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="keywords" content="web-cap,Webdesign,günstig,Homepage,Webseite,Gestaltung,SEO,CMS,Responsive,Adaptiv,Duingen,Capellenhagen">
<meta name="description" content="WEB-CAP Webdesign Britta Krueger">
<meta name="author" content="Britta Krueger">
<!-- Site title
================================================== -->
<title>WEB-CAP Webdesign Britta Krüger - Wir geben Ihrer Vorstellung Gestalt!</title>
<!-- Bootstrap CSS
================================================== -->
<link rel="stylesheet" href="css/bootstrap.min.css">
<!-- Animate CSS
================================================== -->
<link rel="stylesheet" href="css/animate.min.css">
<!-- Font Icons CSS
================================================== -->
<link rel="stylesheet" href="css/font-awesome.min.css">
<link rel="stylesheet" href="css/ionicons.min.css">
<!-- Main CSS
================================================== -->
<link rel="stylesheet" href="css/style.css">
<link href="favicon.ico" type="image/x-icon" rel="shortcut icon" />
<!-- Google web font
================================================== -->
<link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:400,700,300' rel='stylesheet' type='text/css'>
</head>
<body>
<div class="container">
<form action="PHPMailer/kontaktformular.php" method="post" class="py-5">
<div class="form-group">
<label for="name">Name</label>
<input type="text" name="name" class="form-control" id="name" placeholder="Name" value="Name">
</div>
<div class="form-group">
<label for="email">E-Mail</label>
<input type="email" name="email" class="form-control" id="email" placeholder="E-Mail" value="Email">
</div>
<div class="form-group">
<label for="subject">Betreff</label>
<input type="text" name="subject" class="form-control" id="subject" placeholder="Betreff" value="Betreff">
</div>
<div class="form-group">
<label for="message">Nachricht</label>
<textarea class="form-control" name="message" id="message" rows="10">Nachricht</textarea>
</div> <!-- nur zum Testen -->
<div class="form-group">
<label for="receiver">E-Mail Empfänger</label>
<input type="email" name="receiver" class="form-control" id="receiver" placeholder="Empfänger" value="">
</div> <input type="submit" name="submit" class="btn btn-primary" value="Senden">
</form>
</div>
</body>
</html>
und hier die beiden PHP-Dateien entsprechend modifiziert für mich:
datenüberprüfung.php:
<?php
// PHP-Mailer hinzufügen
use PHPMailer\src\PHPMailer;
use PHPMailer\src\Exception;
require_once 'phpmailer/src/Exception.php';
require_once 'phpmailer/src/PHPMailer.php';
const HTML_ERROR_START = '<div class="alert alert-danger" role="alert"><p class="m-0">';
const HTML_ERROR_END = '</p></div>';
const HTML_SUCCESS_START = '<div class="alert alert-success" role="alert"><p class="m-0">';
const HTML_SUCCESS_END = '</p></div>';
/**
* 1. Überprüfung, ob das Formular abgesendet wurde, denn wir erhalten die Daten erst, wenn das Formular abgesendet wurde.
*/
if (isset($_POST['submit'])) {
/**
* 2. Alle Eingangsdaten filtern
* - Dazu verwenden wir die Funktion htmlspecialchars()
* - die Funktion trim() wird genutzt, um alle Leerzeichen am Anfang und Ende des Strings (Zeichenkette) zu entfernen
*/
$name = htmlspecialchars(trim($_POST['name']));
$email = htmlspecialchars(trim($_POST['email']));
$subject = htmlspecialchars(trim($_POST['subject']));
$message = htmlspecialchars(trim($_POST['message']));
// Empfänger, nur zum Testen
$receiver = htmlspecialchars(trim($_POST['receiver']));
/**
* 3. Kriterienprüfung
* - Kriterien, wie z.B., wie viele Zeichen müssen mindestens eingegeben werden, ...
*
* Was brauchen wir dafür?
* 1. Array, welches die ganzen Fehler zugeordnet bekommt
*
* Beachte:
* Alle Daten, welche durch das Formular abgesendet werden, sind erstmal Strings, dies heißt, dass man diese zuerst in deren gewünschten Typ umwandeln muss
*/
$errors = [];
$success = false;
/**
* input textfeld | name="name"
* Typ: string
* Kriterien: mindestens 3 Zeichen lang
*/
if (empty($name)) {
$errors[] = HTML_ERROR_START . 'Bitte geben Sie Ihren Namen an!' . HTML_ERROR_END;
} else if (strlen($name) < 3){
$errors[] = HTML_ERROR_START . 'Der Name muss mindestens 3 Zeichen lang sein!' . HTML_ERROR_END;
}
/**
* input emailfeld | name="email"
* Typ: string
* Kriterien: mindestens 7 Zeichen lang
*/
if (empty($email)) {
$errors[] = HTML_ERROR_START . 'Bitte geben Sie Ihre E-Mail-Adresse an!' . HTML_ERROR_END;
} else if (strlen($email) < 7) {
$errors[] = HTML_ERROR_START . 'Die E-Mail-Adresse muss mindestens 7 Zeichen lang sein!' . HTML_ERROR_END;
} else if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = HTML_ERROR_START . 'Bitte geben Sie eine gültige E-Mail-Adresse an!' . HTML_ERROR_END;
}
/**
* input textfeld | name="subject"
* Typ: string
* Kriterien: mindestens 3 Zeichen lang, maximal 50 Zeichen lang
*/
if (empty($subject)) {
$errors[] = HTML_ERROR_START . 'Bitte geben Sie einen Betreff an!' . HTML_ERROR_END;
} else if (strlen($subject) < 3) {
$errors[] = HTML_ERROR_START . 'Der Betreff muss mindestens 3 Zeichen lang sein!' . HTML_ERROR_END;
} else if (strlen($subject) > 50) {
$errors[] = HTML_ERROR_START . 'Der Betreff darf maximal 50 Zeichen lang sein!' . HTML_ERROR_END;
}
/**
* textarea | name="message"
* Typ: string
* Kriterien: mindestens 10 Zeichen lang (man kann erwarten, dass eine Nachricht länger als 10 Zeichen lang ist)
*/
if (empty($message)) {
$errors[] = HTML_ERROR_START . 'Bitte geben Sie eine Nachricht an!' . HTML_ERROR_END;
} else if (strlen($message) < 10) {
$errors[] = HTML_ERROR_START . 'Die Nachricht muss mindestens 10 Zeichen lang sein!' . HTML_ERROR_END;
}
// nur zum Testen
if (empty($receiver)) {
$errors[] = HTML_ERROR_START . 'Bitte geben Sie die E-Mail des Empfängers an!' . HTML_ERROR_END;
}
/**
* 4. Überprüfung, ob Fehler vorhanden sind, wenn nicht, dann Mailversand ausführen
* - für den Mailversand verwenden wir den PHPMailer
*/
if (count($errors) === 0) {
$mailer = new PHPMailer();
$mailer->CharSet = 'UTF-8'; // Charset setzen (für richtige Darstellung von Sonderzeichen/Umlauten)
$mailer->setFrom($email, $name); // Absenderemail und -name setzen
$mailer->addAddress(info@web-cap.de); // Empfängeradresse
$mailer->isHTML(true);
$mailer->Subject = 'Neue Nachricht vom Kontaktformular'; // Betreff der Email
$mailer->Body = '<h3>Neue Nachricht von: ' . $name . '</h3>
<h4>E-Mail-Adresse: ' . $email . '</h4>
<h2>Betreff: ' . $subject . '</h2>
<p>' . nl2br($message) . '</p>'; // Inhalt der Email
/**
* Überprüfung, ob Mail abgesendet wurde, wenn nicht: Fehlermeldung ausgeben, wenn ja: Erfolgsmeldung ausgeben
*/
if (!$mailer->send()) {
$errors[] = HTML_ERROR_START . 'Es ist ein Fehler aufgetreten. Bitte versuchen Sie es in ein paar Minuten nochmal!' . HTML_ERROR_END;
} else {
$success = HTML_SUCCESS_START . 'Ihre Nachricht wurde erfolgreich abgesendet!' . HTML_SUCCESS_END;
}
}
}
kontaktformular.php
<?php
require_once 'PHPMailer/datenUeberpruefung.php';
?>
<!DOCTYPE html>
<html lang="de">
<head> <title>PHP Kontaktformular</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
</head>
<body>
<div class="container">
<form action="" method="post" class="py-5">
<div class="form-group">
<label for="name">Name</label>
<input type="text" name="name" class="form-control" id="name" placeholder="Name" value="<?php echo !empty($name) ? $name : '' ?>">
</div> <div class="form-group">
<label for="email">E-Mail</label>
<input type="email" name="email" class="form-control" id="email" placeholder="E-Mail" value="<?php echo !empty($email) ? $email : '' ?>">
</div> <div class="form-group">
<label for="subject">Betreff</label>
<input type="text" name="subject" class="form-control" id="subject" placeholder="Betreff" value="<?php echo !empty($subject) ? $subject : '' ?>">
</div> <div class="form-group">
<label for="message">Nachricht</label>
<textarea class="form-control" name="message" id="message" rows="10"><?php echo !empty($message) ? $message : '' ?></textarea>
</div> <!-- nur zum Testen -->
<div class="form-group">
<label for="receiver">E-Mail Empfänger</label>
<input type="email" name="receiver" class="form-control" id="receiver" placeholder="Empfänger" value="<?php echo !empty($receiver) ? $receiver : '' ?>">
</div> <input type="submit" name="submit" class="btn btn-primary" value="Senden">
</form> <?php
if (!empty($errors) && count($errors) > 0 && !$success) {
echo implode('', $errors);
} else if (!empty($success) && count($errors) === 0) {
echo $success;
}
?>
</div>
</body>
</html>
Verzeichnis-Baum:
Siehe jpg.Anhang
Ich hoffe ich habe das alles richtig zur Verfügung gestellt.
LGhtml-seminar.de/woltlab/attachment/1882/
html-seminar.de/woltlab/attachment/1883/Britta