2016-12-10 3 views
0

Mein Kontaktformular funktioniert, aber es wird mich nicht zu meiner Dankeseite umleiten. Es hat funktioniert, bevor ich es auf einen neuen Host übertragen habe.PHP Redirect funktioniert nicht auf Kontaktformular (Nachricht wird gesendet)

<!-- Contact PHP Stuff --> 
<?php 

session_start(); 

require_once 'libs/phpmailer/PHPMailerAutoload.php'; 

$errors = []; 

if(isset($_POST['name'], $_POST['email'], $_POST['subject'], $_POST['message'])) { 

    $fields = [ 
     'name'=> $_POST['name'], 
     'email'=> $_POST['email'], 
     'subject'=> $_POST['subject'], 
     'message'=> $_POST['message'] 
    ]; 

    foreach($fields as $field => $data) { 
     if(empty($data)) { 
      $errors[] = 'The ' . $field . ' field is required'; 
     } 
    } 
    if(!empty($fields['name'])) { 
     if (!preg_match("/^[a-zA-Z ]*$/",$fields['name'])) { 
      $errors[] = "Name can only include letters A-Z"; 
     } 
    } 
    if(!empty($fields['email'])) { 
     if (!filter_var($fields['email'], FILTER_VALIDATE_EMAIL)) { 
      $errors[] = "Please enter a valid email address"; 
     } 
    } 

    if(empty($errors)) { 

     $mail = new PHPMailer(); // create a new object 
     $mail->IsHTML(true); 
     $mail->Username = "[email protected]"; 
     $mail->Password = "*****"; 
     $mail->SetFrom($fields['email'], $fields['name']); 
     $mail->Subject = $fields['subject']; 
     $mail->Body = $fields['message']; 
     $mail->AddAddress("[email protected]"); 

     if($mail->Send()) { 
      header('Location: thanks'); 
      die(); 
     } else { 
      $errors[] = "Sorry could not send message. Try again later"; 
     } 

    } 

} else { 
    $errors[] = 'Something went wrong'; 
} 

$_SESSION['errors'] = $errors; 
$_SESSION['thanks'] = $thanks; 
$_SESSION['fields'] = $fields; 

header('Location: contact#contact-form'); 

?> 

Die Linie header('Location: thanks'); mir Umleiten mit meinem vorherigen Host thanks.html aber jetzt dies geschieht nicht, auch wenn die Nachricht gesendet und geliefert wird.

Ich fand den Code auf einem Tutorial und kann mich nicht erinnern, wo es vor über einem Jahr war.

+1

Was ist der Fehler? Versuchen Sie, nach dem Start des PHP-Tags 'error_reporting (E_ALL) an den Anfang Ihrer Datei zu setzen;' Auch ... ist irgendetwas auf der Seite gedruckt? das führt normalerweise dazu, dass der Header nicht gesetzt werden kann, da einer bereits gesendet wurde. –

Antwort

0

Entfernen Sie alles, bevor Sie den Header verwenden. Sie können nicht von jeglicher Ausgabe haben, bevor header() mit

wenn Sie

error_reporting(E_ALL | E_WARNING | E_NOTICE); 
ini_set('display_errors', TRUE); 

der Seite hinzugefügt werden Sie wahrscheinlich ein ‚Header bereits gesendet‘ Fehler angezeigt.

oder Sie können exit() verwenden, die es offenbar behoben.

+0

Ja, ich habe die .htaccess-Datei kopiert und funktioniert immer noch, wenn ich die URL in einen Browser eintippe. Ich habe gerade versucht, "[http://www.google.com/](http://www.google.com/)" zu verwenden, aber es wird auch nicht darauf verwiesen. –

+0

Funktioniert $ mail-> Send()? Erhalten Sie die E-Mail? – TigOldBitties

+0

Ja ich bin, es ist wirklich seltsam –

Verwandte Themen