Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Formularz php i potwierdzenie
Forum PHP.pl > Forum > Przedszkole
mattiluzak
Witam posiadam na swojej stronie formularz php ktory wysyla maila. Mam potwierdzenie wyslania maila lecz chcialbym aby potwierdzenie wyskakiwalo w osobnym okienku i nie po kliknieciu OK wysylalo automatycznie na strone glowna .. Hmm mam nadzieje ze rozumiecie o co mi chodzi

Tutaj skrypt.php:
  1. <?php
  2. if (count($_POST))
  3. {
  4. ////////// USTAWIENIA //////////
  5. $email = 'mojmail@gmail.com'; // Adres e-mail adresata
  6. $subject = 'mail'; // Temat listu
  7. $message = 'Pomyślnie wyslano wiadomosc. Powrot do strony głownej';
  8. echo "<a href=\"http://www.origami7.cba.pl\"ORIGAMI7</a>"; // Komunikat
  9.  
  10. ///header("Location: 21.php"); //przekierowanie lokalne
  11. ///header("Location: http://www.origami7.cba.pl"); //przekierowanie na adres zdalny
  12.  
  13.  
  14. $error = 'Wystąpił błąd podczas wysylania. Prosze sprobowac ponownie'; // Komunikat błędu
  15. $charset = 'iso-8859-2'; // Strona kodowa
  16. //////////////////////////////
  17. $head =
  18. "MIME-Version: 1.0\r\n" .
  19. "Content-Type: text/plain; charset=$charset\r\n" .
  20. "Content-Transfer-Encoding: 8bit";
  21. $body = '';
  22. foreach ($_POST as $name => $value)
  23. {
  24. if (is_array($value))
  25. {
  26. for ($i = 0; $i < count($value); $i++)
  27. {
  28. $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "\r\n";
  29. }
  30. }
  31. else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "\r\n";
  32. }
  33. echo mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head) ? $message : $error;
  34. }
  35. else
  36. {
  37. ?>
  38. <form action="?" method="post">
  39. Tutaj umieść wszystkie pola formularza
  40. </form>
  41. <?php
  42. }
  43. ?>

Staralem sie wklepac ten skrypt :
  1. echo "<script>alert('Mail został wysłany')</script>";

Lecz ciagle przekierowywalo mnie na pusta strone wraz z ramka
Prosze o pomoc
Kshyhoo
Przenoszę do Przedszkola. Proszę zapoznać się z zasadami panującymi na Forum
mattiluzak
odswiezam
com
chyba jednak nie rozumiemy wink.gif
mattiluzak
Poprostu chodzi mi o to ze po pomyslnym wyslaniu maila zostaje wyswietlone okienko ze mail zostal wyslany, a jesli wystapi blad to wyskoczy osobne okienko ze wystapil blad podczas wysylania.

Aktualnie po wyslaniu przenosi mnie na pusta strone z napisem ze wiadomosc zostala wyslana lecz wyglada to niezbyt ladnie i wolal bym zeby wyskakiwalo okienko na stronie glownej po wyslaniu formularza
Turson
Strona jest pusta może dlatego, że formularz nie jest widoczny po wysłaniu
com
Turson Naprawdę, to chyba autor wie, nie o to mu przecież chodziło wink.gif
No to wykorzystaj np to https://jqueryui.com/dialog/
mattiluzak
Tylko teraz to chyba nalezy edytowac plik *html a nie sam skrypt*php nie wiem jak sie juz do tego zabrac bo nie wiem jak wykorzystac cos takiego probuje i głowkuje od dluzszego czasu i dalej nic..

Czy pomoze mi ktos podpiac takie okienko?
Luna_s20
Zamiast tego swojego echa, o którym wspominasz na początku, a przed przekierowaniem na główną, wstaw sobie to:

  1. include "komunikat.html";
  2. header("Refresh:5; URL=główna.php");


Stwórz plik "komunikat.html" i do niego wrzuć

  1. <link rel="stylesheet" type="text/css" href="komunikat.css" />
  2.  
  3. <div id="pokaz_wiadomosc" class="wiadomosc">
  4. <div class="tresc">
  5.  
  6. Dziękujemy. Twój e-mail został wysłany poprawnie.<br/>
  7. Odpowiemy jak będzie nam się chciało<br/>
  8. i będziemy mieli czas<br/>
  9.  
  10. <a href = "java script:void(0)" onclick = "document.getElementById('zamknij_wiadomosc').style.display='none';document.getElementById('pokaz_wiadomosc').style.display='none'">Ok</a>
  11.  
  12. </div>
  13. </div>
  14. <div id="zamknij_wiadomosc" class="tlo">
  15. </div>

Oczywiście w środku możesz napisać coś mądrzejszego.

Następnie stworz sobie plik "komunikat.css" i w niego wklej:


  1. .tlo{
  2. position: absolute;
  3. top: 0%;
  4. left: 0%;
  5. background-color: black;
  6. opacity:.70;
  7. -moz-opacity: 0.7;
  8. filter: alpha(opacity=70);
  9. z-index:1001;
  10. width: 100%;
  11. height: 100%;}
  12.  
  13. .wiadomosc {
  14. position: absolute;
  15. top: 25%;
  16. left: 25%;
  17. width: 50%;
  18. height: auto;
  19. border: 4px solid #D27B2E;
  20. box-shadow: 1px 1px 33px #000000;
  21. z-index:1002;
  22. overflow: auto;
  23. }
  24.  
  25. .tresc{
  26. position: relative;
  27. margin: auto;
  28. padding: 16px;
  29. background-color: white;
  30. z-index:1002;
  31. overflow: auto;
  32. text-align: center;
  33. }


W efekcie zamiast przekierowania powinno pojawić się okienko w stylu lightboxa
z komunikatem, a po chwili przekierować na główna.php

A dziwo to wygląda tak:
mattiluzak
Wszystko zrobione, tak wyglada teraz plik ze skryptem.php

  1. <?php
  2. if (count($_POST))
  3. {
  4. ////////// USTAWIENIA //////////
  5. $email = 'mojmail@gmail.com'; // Adres e-mail adresata
  6. $subject = ' mail'; // Temat listu
  7. ///$message = '<center><font size="6"><b>Pomyślnie wyslano wiadomosc. Powrot do strony głownej</b></font></center>';
  8. ///echo "<a href=\"http://www.origami7.cba.pl\"ORIGAMI7</a>"; // Komunikat
  9. include "komunikat.html";
  10. header("Refresh:5; URL=główna.php");
  11. ///header("Location: 21.php"); //przekierowanie lokalne
  12. ///header("Location: http://www.origami7.cba.pl"); //przekierowanie na adres zdalny
  13.  
  14.  
  15. $error = 'Wystąpił błąd podczas wysylania. Prosze sprobowac ponownie'; // Komunikat błędu
  16. $charset = 'iso-8859-2'; // Strona kodowa
  17. //////////////////////////////
  18. $head =
  19. "MIME-Version: 1.0\r\n" .
  20. "Content-Type: text/plain; charset=$charset\r\n" .
  21. "Content-Transfer-Encoding: 8bit";
  22. $body = '';
  23. foreach ($_POST as $name => $value)
  24. {
  25. if (is_array($value))
  26. {
  27. for ($i = 0; $i < count($value); $i++)
  28. {
  29. $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "\r\n";
  30. }
  31. }
  32. else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "\r\n";
  33. }
  34. echo mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head) ? $message : $error;
  35. }
  36. else
  37. {
  38. ?>
  39. <form action="?" method="post">
  40. Tutaj umieść wszystkie pola formularza
  41. </form>
  42. <?php
  43. }
  44. ?>


Lecz ramka wyswietla sie na nowej stronie calej pustej czy nie mozna tego modyfikowac tak aby wyswietlala sie na stronie glownej ?
Oraz po kliknieciu "OK" skrypt przenosi mnie na główna.php gdy zmieniam te wartosc na index.thml nie dziala i nie kieruje mnie na strone glowna
Luna_s20
Jak zmienisz główna.php na index.html to musi zadziałać. Skryptowi wszystko jedno - odczytuje i przenosi po prostu.
Jako że dzisiaj jest święto marnowania czasu, pecjalnie utworzyłam sobie według swojej instrukcji plik php, html i css i sprawdziłam to wszystko zanim odpowiedziałam.

  1. <?php
  2.  
  3. ?>
  4. <form action="?" method="post">
  5. Tutaj umieść wszystkie pola formularza
  6. </form>
  7. <?php
  8.  
  9.  
  10. if (count($_POST))
  11. {
  12. ////////// USTAWIENIA //////////
  13. $email = 'mojmail@gmail.com'; // Adres e-mail adresata
  14. $subject = ' mail'; // Temat listu
  15. ///$message = '<center><font size="6"><b>Pomyślnie wyslano wiadomosc. Powrot do strony głownej</b></font></center>';
  16. ///echo "<a href=\"http://www.origami7.cba.pl\"ORIGAMI7</a>"; // Komunikat
  17. include "komunikat.html";
  18. header("Refresh:5; URL=index.html");
  19. ///header("Location: 21.php"); //przekierowanie lokalne
  20. ///header("Location: http://www.origami7.cba.pl"); //przekierowanie na adres zdalny
  21.  
  22.  
  23. $error = 'Wystąpił błąd podczas wysylania. Prosze sprobowac ponownie'; // Komunikat błędu
  24. $charset = 'iso-8859-2'; // Strona kodowa
  25. //////////////////////////////
  26. $head =
  27. "MIME-Version: 1.0\r\n" .
  28. "Content-Type: text/plain; charset=$charset\r\n" .
  29. "Content-Transfer-Encoding: 8bit";
  30. $body = '';
  31. foreach ($_POST as $name => $value)
  32. {
  33. if (is_array($value))
  34. {
  35. for ($i = 0; $i < count($value); $i++)
  36. {
  37. $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value[$i]) : $value[$i]) . "\r\n";
  38. }
  39. }
  40. else $body .= "$name=" . (get_magic_quotes_gpc() ? stripslashes($value) : $value) . "\r\n";
  41. }
  42. echo mail($email, "=?$charset?B?" . base64_encode($subject) . "?=", $body, $head) ? $message : $error;
  43. }
  44. else
  45. {
  46.  
  47. }
  48. ?>
  49.  


Działa smile.gif Lkingsmiley.png
mattiluzak
Niestety nie wiem jak to mozliwe ale skopiowalem caly skrypt jaki zamiescilas i po kliknieciu "OK" w okienku przekierowuje mnie na adres: "http://origami7.cba.pl/java%20script:void(0)" podejrzewam ze tu bedzie chyba cos nie tak z komunikat.html

EDIT: DODAm ze gdy nie klikne "OK" i odczekam 5 sec automatycznie przenosi mnie na strone glowna lecz gdy klikne i okienko zamknie sie przekierowuje mnie na wyzej podana strone mozesz jesli mozesz wejdz na strone moja i wyslij maila probnego, formularz znajduje sie po lewej stronie


EDIT2: ROZSZYFROWALEM. wink.gif

W komunikat.html nalezy zmienic wartosc:
  1. <a href = "java script:void(0)" onclick = "document.getElementById('zamknij_wiadomosc').style.display='none';document.getElementById('pokaz_wiadomosc').style.display='none'">Ok</a>


na:

  1. <a href = "index.html" onclick = "document.getElementById('zamknij_wiadomosc').style.display='none';document.getElementById('pokaz_wiadomosc').style.display='none'">Ok</a>


Teraz dziala dizekuje wielkie za pomoc wink.gif

Tylko ostatnie mam pytanie czy jesli mail nie zostanie wyslany wyswietli sie blad o takowym nie powodzeniu wyslania?
Rozumiem ze wyswietli sie juz nie w ramce ale chodiz mi o samo dzialanie skryptu zeby potwierdzil blad wyslania jesli sie nie powiedzie i jak moglbym sprawdzic to? jak wymusic niepoprawne wyslanie formularza zeby wymusic komunikat o bledzie. Moze troche chaotycznie to brzmi ale mysle ze wmiare zrozumiale
Turson
  1. if(mail(bla bla bla){
  2. //mail został wysłany
  3. }
  4. else{
  5. //wysyłanie nie powiodło się
  6. }
Luna_s20
Jak chcesz, żeby błędy wyświetlało w ramce, to skopiuj sobie i przeedytuj ramkę z komunikat.html i podepnij w ten sam sposób w miejscu, w którym ma wyświetlać błąd.
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.