Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Przekierowanie po wysłaniu formularza [SwiftMailer]
Forum PHP.pl > Forum > PHP
nivels
Witam,

Nie znam się na PHP. Udało mi sę ustawić formularz kontaktowy na stronie przy pomocy SwiftMailera. Jednak po wysłaniu maila chciałbym aby użytkownik został przekierowany do strony thank_you.html. Nie mam pojęcia jak to zrobić. Poniżej wklejam kod pliku php. Serdecznie proszę Was o pomoc smile.gif

  1.  
  2. <?php
  3.  
  4. include("Swift/lib/swift_required.php");
  5. $host = 'xxxxxx.xxxxxx@gmail.com';
  6. $password = 'xxxxx';
  7. $subject = "zapytanie ze strony";
  8. $body = "Zglaszajacy: ".$_POST["fullname"]."\r\n";
  9. $body .= "Telefon: ".$_POST["phone"]."\r\n";
  10. $body .= "E-mail: ".$_POST["email"]."\r\n";
  11. $body .= "Tresc: ".$_POST["description"]."\r\n";
  12.  
  13. $transport = Swift_SmtpTransport::newInstance('smtp.gmail.com', 465, 'ssl')
  14. ->setUsername($host)
  15. ->setPassword($password);
  16.  
  17. $mailer = Swift_Mailer::newInstance($transport);
  18.  
  19. $message = Swift_Message::newInstance($subject)
  20. ->setFrom(array($host => 'Klient'))
  21. ->setTo(array('xxxxxxx@xxxx.gmail.com'=> 'xxxxxx'))
  22. ->setBody($body);
  23.  
  24. $result = $mailer->send($message);
  25. if ($result) // to dodałem od siebie ale nadal po wysłaniu maila nic się nie dzieje
  26. {
  27. header("Location:http://xxxxx.org/thank_you.html");
  28. }
  29. echo $result;
  30.  
  31.  
  32. ?>
  33.  

markonix
var_dump($result) zbadaj co zawiera gdy e-mail zostanie wysłany i zrób jakąś symulacje błędu aby też to obsłużyć.
nivels
już wiem w czym jest problem z moim skryptem.

Całkowicie ignorowane jest polecenie header. Gdziekolwiek w kodzie bym go nie umieścił i tak nie zostaje wykonany. Co mogę z tym zrobić?
Jest jakaś alternatywa dla polecenia header w celu przekierowania?
rocktech.pl
Witam.

  1. header ( "Location: {<-SPACJA}{URL}" );
  2. /**
  3.  * A nie
  4.  */
  5. header ( "Location:http://xxxxx.org/thank_you.html" );
nivels
poprawiłem, nadal nic wink.gif

rozumiem że nie ma alternatywy dla "header"

może w kodzie html po wysłaniu formularza można jakoś zrobić przekierowanie?
rocktech.pl
Witam.

Jeżeli dalej nie masz przekierowania to oznacza tyle, że nagłówki zostały już wysłane, a ty nie masz włączonego raportowania błędów.

Daj tak.

  1. ini_set( "display_errors" ,1 );
  2. ini_set( "error_reporting", E_ALL);


A co do przekierowania w JavaScript zawsze możesz się posiłkować takim kodem:

  1. if ($result) {
  2. echo '

[JAVASCRIPT] pobierz, plaintext
  1. <script type="text/javascript">
  2. window.location = "http://www.google.com/"
  3. </script>
[JAVASCRIPT] pobierz, plaintext

  1. '}
Adi32
Po header('...') należy dawać exit;
Nagłówek jest wypluwany dopiero jak parser PHP skończy pracę. Ale to raczej nie rozwiązuje problemu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.