Ich machte einen PHPMailer und es funktioniert einfach perfekt, aber wenn ich auf "Senden" klicke, gibt es mir den größten Fehlercode, den ich je gesehen habe. Ich weiß, dass der Fehler mit dem header('Location: bedankt.php');
im Code zu tun hat.PHPmailer Nachricht beim Senden
Was ich versuche zu erreichen ist, der Benutzer bekommt eine Nachricht, dass das Formular auf der gleichen Seite (No alertbox) gesendet wurde, einfach nur Text, der besagt, dass das Formular eingereicht wurde, also keine Weiterleitung zu "Bedankt.php". Hier ist ein Screenshot des Fehlercodes, über den ich gesprochen habe: Kannst du mir helfen? Hier ist mein Code:
index.php:
<?php
session_start();
require_once 'helpers/security.php';
$errors = isset($_SESSION['errors']) ? $_SESSION['errors'] : [];
$fields = isset($_SESSION['fields']) ? $_SESSION['fields'] : [];
?>
<!DOCTYPE html>
<html lang="en">
<head>
<title>Servicepunt Detailhandel Groningen | Home</title>
<link rel="shortcut icon" href="../../images/favicon/favicon.png" type="image/png">
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css">
<link rel="stylesheet" href="css/style.css?<?php echo date('l jS \of F Y h:i:s A'); ?>"/>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"> </script>
<script src="js/script.js"></script>
</head>
<body>
<body>
<div class="container-fluid">
<div class="header">
contact
</div>
<div id="footer">
footer
<div class="col-md-3 col-md-offset-9 col-xs-4 col-xs-offset-8" id="contact">
<?php if(!empty($errors)): ?>
<div class="panel">
<ul>
<li>
<?php echo implode('</li><li>', $errors); ?>
</li>
</ul>
</div>
<?php endif; ?>
<form action="libs/contact.php" method="post">
<label>
Uw naam*
<input type="text" name="name" id="name" autocomplete="off" <?php echo isset($fields['name']) ? 'Value="' . e($fields['name']) . '"' : '' ?>>
</label>
<br>
<label>
Uw emailadres *
<input type="email" name="email" id="email" autocomplete="off" <?php echo isset($fields['email']) ? 'Value="' . e($fields['email']) . '"' : '' ?>>
</label>
<br>
<label>
Onderwerp *
<input type="text" name="subject" id="subject" autocomplete="off" <?php echo isset($fields['subject']) ? 'Value="' . e($fields['subject']) . '"' : '' ?>>
</label>
<br>
<label>
Uw bericht *
<textarea name="bericht" id="contact" rows="8"><?php echo isset($fields['bericht']) ? e($fields['bericht']) : '' ?></textarea>
</label>
<br>
<input type="submit" value="Verzenden">
</form>
</div>
</div>
</div>
</body>
</html>
<?php
unset($_SESSION['errors']);
unset($_SESSION['fields']);
?>
Code: contact.php:
<?php
session_start();
require_once "phpmailer/PHPMailerAutoload.php";
$errors = [];
if(isset($_POST['name'], $_POST['email'], $_POST['subject'], $_POST['bericht'])) {
$fields = ['name' => $_POST['name'], 'email' => $_POST['email'], 'subject' => $_POST['subject'], 'bericht' => $_POST['bericht']];
foreach($fields as $field => $data) {
if(empty($data)){
$errors[] = 'The ' . $field . ' field is required.';
}
}
// 587 is voor uitgaande email deze is SSL en SMTP.ziggo.nl
// 993 is voor inkomende email deze is TLS en IMAP.ziggo.nl
// 110 is voor inkomende email deze is POP3 en
if(empty($errors)){
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->Host = 'smtp.example.com';
$mail->Username = '[email protected]';
$mail->Password = 'examplepassword';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->isHTML();
$mail->SMTPDebug = 2;
$mail->Subject = $fields['subject'];
$mail->Body = '"' . $fields['name'] .'"'.' heeft uw contactformulier ingevuld op uw website met het volgende bericht: ' . '<br><br>' .'Onderwerp: ' . $fields['subject'] . '<br>' . '<br>'.$fields['bericht'];
$mail->FromName = $fields['name'];
$mail->AddAddress('[email protected]', 'Rainier Laan'); //added mail id of owner
if($mail->send()){
$mail = new PHPMailer;
$mail->isSMTP();
$mail->SMTPAuth = true;
$mail->Host = 'smtp.example.com';
$mail->Username = '[email protected]';
$mail->Password = 'examplepassword';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->isHTML();
$mail->SMTPDebug = 2;
$mail->Subject = 'Bevesteging contactformulier';
$mail->Body = 'Beste ' . $fields['name'] . ',' . '<br><br>' . 'Dankuwel voor het invullen van ons contactformulier op onze site. U krijgt zo snel mogelijk
bericht terug van ons<br> Uw bericht was als volgt: <p>'. 'Onderwerp: ' . $fields['subject'] . '<br>' . $fields['bericht'] .'</p>';
$mail->FromName = 'Servicepunt Detailhandel Groningen';
$mail->AddAddress($fields['email'] , $fields['name']); //added mail id of user
if($mail->send()){
header('Location: bedankt.php');
die();
}
else{
exit;
}
} else {
echo $mail->ErrorInfo; exit;
}
}
} else {
$errors[] = 'Something went wrong.';
}
$_SESSION['errors'] = $errors;
$_SESSION['fields'] = $fields;
header('location: index.php');
Vielen Dank im Voraus!
Ich denke es ist nicht wegen PHPMailer aber PHP selbst. Wenn Sie Header in PHP ändern, muss es VOR allen Ausgaben sein, die von diesem Skript gesendet wurden. –
Ich habe das schon gehört, aber was ich in meiner Frage gesagt habe ist, dass ich die Nachricht erhalten möchte, dass die Benutzer erhalten, wenn das Formular eingereicht wird gleiche Seite (keine Warnmeldung) Nur ein Text, der über dem Formular angezeigt wird. –
Sie benötigen in diesem Fall Ajax: http://stackoverflow.com/questions/15300470/jquery-ajax-form-using-mail-php-script-sends-email-but-post-data-from-html-fo – sinisake