Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]podwójne wysyłanie maila.
Forum PHP.pl > Forum > Przedszkole
GoOx
Witam,
Jak w temacie mam problem z funkcją mail()
Wszystko ładnie ale wiadomość email jest wysyłana 2 razy. Czy wysyłaniu wiadomości możesz przeszkadzać zastosowanie sesji i przekierowanie javascript?

kod wysyłający email jest standardowy:
  1. mail($for, $topic, $message, $headers);
Gość
Może wywołujesz funkcję mail 2 razy. Przed i po przekierowaniu. Najlepiej będzi jak pokażesz iwęcej kodu.
GoOx
  1. <?
  2. echo "<form action='$http_g&send' method='post'>";
  3.  
  4. echo "<tr><td><b>$lang_od:</b></td> <td>";
  5. if($logged == true) {
  6. echo $E_mail;
  7. }
  8. else {
  9. echo "$lang_unlogged";
  10. }
  11. echo "</td></tr>";
  12. echo "<tr><td><b>$lang_do:</b></td><td>GoOx (<b>GoOx@goox.pl</b>)</td></tr>
  13. <tr><td><b>$lang_topic:</b></td><td><input type='text' name='email_topic' class='styl'></td></tr>
  14. <tr><td style='vertical-align:text-top;'><b>$lang_email_message:</b></td><td><textarea name='email_message' cols='60' rows='9' class='styl_txt'></textarea></td></tr>";
  15. if($logged == true) {
  16. echo "<tr><td></td><td><p align='right'><input type='submit' name='send_email' class='in' value='$lang_send'>";
  17. }
  18. else {
  19. echo "<tr><td></td><td><p align='right'>$lang_not_send_email</p></td></tr>";
  20. }
  21. echo "</table>";
  22.  
  23. $email_ses = $_SESSION['send_email_ses'];
  24. if(isset($email_ses)) {
  25. if($email_ses == 1) {
  26. echo "$lang_email_send";
  27. }
  28. else {
  29. if($email_ses == 2) {
  30. echo "$lang_not_check_all";
  31. }
  32. }
  33. }
  34.  
  35. $send_email = $_POST['send_email'];
  36. if(isset($send_email) && $logged == true) {
  37. $email_topic = $_POST['email_topic'];
  38. $email_message = $_POST['email_message'];
  39.  
  40. $i = 0;
  41. if(empty($email_message)) {
  42. $i++;
  43. }
  44. if(empty($email_topic)) {
  45. $i++;
  46. }
  47.  
  48. $get = explode('&send', $get);
  49. $get = $get[0];
  50. $url_send_email = $http."?".$get;
  51.  
  52. if($i == 0) {
  53. $email_topic = htmlspecialchars($email_topic);
  54. $email_message = htmlspecialchars($email_message);
  55. $email_message = nl2br($email_message);
  56.  
  57.  
  58. $for = "goox@goox.pl";
  59. $topic = $email_topic;
  60. $message = $email_message;
  61.  
  62. $headers = "MIME-Version: 1.0"."\r\n";
  63. $headers .= "Content-type: text/html; charset=windows-1250"."\r\n";
  64.  
  65. $headers .= "To: GoOx@goox.pl"."\r\n";
  66. $headers .= "From: $E_mail "."\r\n";
  67.  
  68.  
  69. mail($for, $topic, $message, $headers);
  70. $_SESSION['send_email_ses'] = 1;
  71. ?><script>location.href="<? echo $url_send_email; ?>";</script> <?
  72. }
  73. else {
  74. $_SESSION['send_email_ses'] = 2;
  75. ?><script>location.href="<? echo $url_send_email; ?>";</script> <?
  76. }
  77.  
  78. }
  79. ?>


no raczej 2 razy to nie jest wywoływana.
Gość
Nie widać tu gdzie przekierowujesz usera bo nie widać wartości wszystkich zmiennych. Jeśli nie przekierowujesz do tego samego skryptu to może go includujesz 2 razy.
GoOx
Właśnie w tym problem.

To jest jedyny plik z tym kodem a include on posiada tylko innych plików reszta zmiennych to tekty językowe $http to tam przetrzymuję rożne dane związane z linkiem w tym przypadku nazwastrony.pl+plik+zmienne get

W dodatku jest zabezpieczenie że gdy naciśnięty + &send czyli jeśli potem przekierowanie następuje nie na &send to nie ma prawa kod uruchamiać się 2 razy.
toaspzoo

$get = explode('&send', $get);
$get = $get[0];
$url_send_email = $http."?".$get;


Co to ma być ?
Zero filtracji tak jak w twoim byłym serwisie smile.gif
GoOx
A jak inaczej pozbyc sie z lini jednej zmiennej? Zastosowalem explode...

Poza tym i tak nadal nie wiem dlaczgo email jest wysylany 2 razy.
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.