Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Mail się nie wysyla
Malone
post
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 25.01.2011

Ostrzeżenie: (0%)
-----


Witam wszystkich!

Widzę, że admin przeniósł mój post jak się zdaje z tematu, gdzie omawiano dublowanie się wysyłanych formularzy. Mam nadzieję, że w ten sposób nie pozbawił mnie kontekstu, w jakim pytam.

Przeczytałem temat o ponownym niechcianym wysyłaniu maili poprzez odświeżenie strony z formularzem i wreszcie, po dosłownie kilku tygodniach załapałem, jak wykorzystać funkcję header (jakoś wszędzie wszyscy opisywali to w skrócie i nie umiałem tego dostosować do swojego formularza). Ale nie do końca jeszcze wszystko działa...

Oto jak wygląda sprawa:

Jest strona z umieszczonym w niej poza HTML/CSS kodem PHP, który wysyła do mnie maila, a w tym mailu znajdują się:

Imię
Nazwisko
email
Kolejne linijki z wypełnionymi polami testu.

Imię, nazwisko, email oraz testy (na bazie wysuwanych pól do wyboru) są w <formie>, który jest już poza kodem PHP.

Form ma taką postać:

  1. <form action="?" method="post" name="cos_tam">



Jeśli w miejsce "?" wstawię "przekierowanie.php", to po submicie przeglądarka idzie na przekierowanie.php. Na niej jest wyłącznie ten kod:

  1. <?
  2. header("Location: wyslano.php")
  3. ?>


Przekierowuje on natychmiastowo na podaną w nim stronę wyslano.php z podziękowaniem za wysłanie testu.

Czyli w praktyce klikamy w submit i mamy natychmiast stronkę z podziękowaniem.

Działa? Działa. Wreszcie! Nie ma problemu z wciskaniem F5 przez nieświadomych lub złośliwych userów! Łał!

Ale maile przestały dochodzić... Idzie się załamać!

Jako że dotąd dziabałem strony w CSS/HTML, a PHP dostosowuję sobie sam w miarę rozrastających się potrzeb metodą prób i błędów, godzinami czytając fora, to ręce mi już opadają. Nic nie znajduję w tej kwestii.

Wszelkie odpowiedzi na temat wysyłania headerów były już dla mnie niejasne, póki na tym forum be2K nie podał tego w 2 częściach i załapałem, że do tego potrzeba mi jeszcze 2 plików, poza samą stroną z testem. Dzięki, człowieku!

No, ale jakoś nigdzie nie widzę, aby ktokolwiek miał problem z dochodzeniem maili, gdy brakuje "?" w <formie>... Próbowałem już rozmaitych dzikich kombinacji - nic. Leżę na łopatkach.

Albo mam maile wysyłane, ale bez przekierowania na stronę wyslano.php, bo musi być "?" zamiast "przekierowanie.php", albo mam przekierowanie, ale maile nie dochodzą, bo "action" zamiast wysyłać, kieruje na stronę przekierowania.

Proszę o pomoc, jeśli ktokolwiek jest w stanie pojąć moje kulawe noob-owe rozumowanie!

Pozdrawiam!

Ten post edytował Malone 25.01.2011, 16:04:42
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 5)
markonix
post
Post #2





Grupa: Zarejestrowani
Postów: 2 707
Pomógł: 290
Dołączył: 16.12.2008
Skąd: Śląsk

Ostrzeżenie: (0%)
-----


Hey, a jakie zadajesz pytanie?
Go to the top of the page
+Quote Post
ciekawskiii
post
Post #3





Grupa: Zarejestrowani
Postów: 467
Pomógł: 39
Dołączył: 7.11.2010
Skąd: Raz tu, raz tam

Ostrzeżenie: (30%)
XX---


Markonix:D
Fakt, sam nie wiem o co chodzi, czasem lepiej napisac krotko ale tak, zeby kazdy zrozumial bo to nie lektura i nawet do konca nie chce mi sie tego czytac
Go to the top of the page
+Quote Post
modern-web
post
Post #4





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

Ostrzeżenie: (0%)
-----


Rozumiem, ze masz problem z tym, że po dodaniu header('location: ...'); mail się nie wysyła, tak?
Może pokombinuj z dodaniem takiego czegoś w miejscu gdzie wyświetla się podziękowanie:

  1. echo "<meta http-equiv='refresh' content='1; url=http://www.twoja_strona.pl'?>";


Powinno załatwić sprawę, a mail powinien dochodzić bez problemów ^^
Pozdrawiam!

Ten post edytował modern-web 26.01.2011, 08:36:29
Go to the top of the page
+Quote Post
karolo_k
post
Post #5





Grupa: Zarejestrowani
Postów: 84
Pomógł: 5
Dołączył: 12.01.2010

Ostrzeżenie: (0%)
-----


Z tego co napisałeś to ja zrozumiałem ze masz 2 storny. Pierwsza z kodem html i skryptem wysylającym email oraz header do strony drugiej, no a na drugiej masz cos w rodzaju "Dziekuje za wysłanie formularza".

Jeżeli tak to musisz to poprawić, np:
Utworz plik index.html a w nim stwórz ten swoj formularz i daj go w <form action"wysylanie.php">
Utworz plik wysylanie.php i w nim usmieść skrypt na wysyłanie emaila i dodaj do niego header do podziekowanie.html
Utworz podziekowanie.html i w nim podziekuj za wyslanie maila.
Go to the top of the page
+Quote Post
modern-web
post
Post #6





Grupa: Zarejestrowani
Postów: 763
Pomógł: 117
Dołączył: 15.03.2010
Skąd: void

Ostrzeżenie: (0%)
-----


@up
A nie pomyślałeś, że można zrobić to wszystko w 1 pliku?
Dajmy na to... masz plik mail.php
Na początku (lub w kodzie html) zapisujesz skrypt, później korzystasz normalnie z znaczników HTML tj. <html><head></head><body>#</body></html> - tak jakbyś pisał normalną stronę bez jakichkolwiek skryptów. W miejsce # wstawiasz np. formularz. Przyciskowi `submit` nadajesz nazwę. Następnie dodajesz do skryptu coś a la to:
  1. if ( isset ( $_POST['nazwa_przycisku_submit'] ) ) {
  2. // tutaj skrypt mail...
  3. } else {
  4. // komunikat jeśli coś pójdzie nie tak.
  5. }

co pozwoli na wysłanie formularza TYLKO wtedy gdy zostanie naciśnięty dany button.
Potem wystarczy dać w skrypcie kolejną instrukcję warunkową, która wyświetli za pomocą echo podziękowanie za wiadomość.
I koniec... radzę poczytać trochę o zastosowaniu PHP, bo widzę, że zrobiłbyś to dookoła (a po co sobie utrudniać) (IMG:style_emoticons/default/winksmiley.jpg)

Pozdrawiam.

Ten post edytował modern-web 27.01.2011, 15:34:39
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 23.08.2025 - 13:03