Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Formularz kontaktowy
Forum PHP.pl > Forum > Przedszkole
suchy1
Witam,

Chciałbym żeby po kliknięciu na przycisk wyslij dane z formularza zostały wysłane. Normalnie mechanizm działa ale jak odswieze strone @ jest wysyłany. Dlatego dodałem instrukcje warunkową IF, jednak teraz formularz nie wysyła wiadomości.

Plik: kontakt.php
  1. <div id = "contentWrapRight">
  2.                        <form action="kontakt.php" method="post">
  3.                            <fieldset>
  4.                                <legend>Formularz kontaktowy</legend>
  5.                                     <dl>
  6.                                        <dt><label for="imie_nazwisko">Imię i nazwisko:</label></dt>
  7.                                        <dd><input type="text" name="imie_i_nazwisko" size="32" maxlength="128" /></dd>
  8.                                    </dl>
  9.                                    <dl>
  10.                                        <dt><label for="email">Email:</label></dt>
  11.                                        <dd><input type="text" name="email" size="32" maxlength="128" /></dd>
  12.                                    </dl>
  13.                                    <dl>
  14.                                        <dt><label for="email">Telefon:</label></dt>
  15.                                        <dd><input type="text" name="telefon" size="32" maxlength="128" /></dd>
  16.                                    </dl>
  17.                                    <dl>
  18.                                        <dt><label for="comments">Wiadomość:</label></dt>
  19.                                        <dd><textarea name="wiadomosc" rows="5" cols="60"></textarea></dd>
  20.                                    </dl>
  21.                            </fieldset>
  22.                            <fieldset>
  23.                                <input type="submit" name="wyslij" value="Wyślij" />
  24.                            </fieldset>
  25.                     </form>
  26.                  </div>
  27.                </div>
  28.                <div id = "contentFooter"></div>
  29.            </div>
  30.        </div>
  31.      
  32.        <?php
  33.            $wyslij=$_POST['wyslij'];
  34.            if($_POST['wyslij'] == true)
  35.                {
  36.                  
  37.                        $site_name = "moja nazwa";
  38.                        $site_email = "mail@google.pl";
  39.                        $imie_i_nazwisko=$_POST['imie_i_nazwisko'];                        
  40.                      
  41.                        mail("$site_email", "$site_name - Formularz kontaktowy",
  42.                        "Wysłany przez: $imie_i_nazwisko \n\n
  43.                        Email: $email\n\n
  44.                        Telefon: $telefon\n\n
  45.                        Wiadomość: \n\n
  46.                        $wiadomosc ");
  47.                        echo "<B>Wiadomość została wysłana !</B>";                  
  48.                }
  49.        ?>


Jak zrobic aby wiadomość była wysyłana w momencie kliknięcia na przycisk wyślij a nie po odswiezeniu storny ?
zulus
po wysłaniu maila wykonaj

header('Location: adres_strony_z_formularzem');

wtedy przeglądarka "zapomni" dane wpisane
suchy1
rozumiem, jak zmodyfikować powyzszy kod zeby sie nie wysyłał za kazdym razem po odswiezeniu storny ?
Mlodycompany
Kolega Zulus już napisał jak zrobić. Header(); Funkcja ta przenosi na stronę z formularzem jednocześnie tracąc dane, więc użytkownik strony będzie sobie mógł odświeżać stronę ile się mu zachce a forumularz nie zostanie powtórzony. biggrin.gif
suchy1
  1. <?php
  2.            $wyslij=$_POST['wyslij'];
  3.            if (!empty ($_POST['wyslij']))
  4.                {                  
  5.                        $site_name = "www.net";
  6.                        $site_email = "mail@gmail.com";
  7.                        $imie_i_nazwisko=$_POST['imie_i_nazwisko'];
  8.  
  9.                        mail("$site_email", "$site_name - Formularz kontaktowy",
  10.                        "Wysłany przez: $imie_i_nazwisko \n\n
  11.                        Email: $email\n\n
  12.                        Telefon: $telefon\n\n
  13.                        Wiadomość: \n\n
  14.                        $wiadomosc ");
  15.                        header('Location: <a href=\"http://www.adres.pl/kontakt.php');&#092;" target=\"_blank\">http://www.adres.pl/kontakt.php');</a>
  16.                }
  17.        ?>


Wyświetla się blad: Warning: Cannot modify header information - headers already sent by (output started at /web/www/strona_test/kontakt.php:84) in /web/www/strona_test/kontakt.php on line 131

Gdyby nie ten blad to wszystko działa.
phpion
Cytat(suchy1 @ 4.01.2009, 14:41:55 ) *
Wyświetla się blad: Warning: Cannot modify header information - headers already sent by (output started at /web/www/strona_test/kontakt.php:84) in /web/www/strona_test/kontakt.php on line 131

Gdyby nie ten blad to wszystko działa.

Oj chyba zaraz dostaniesz ochrzan smile.gif Problem bardzo często poruszany na forum - wystarczy poszukać. Generalnie przed header() nie możesz wysłać do przeglądarki żadnego kodu HTML. Poszukaj, poczytaj.
suchy1
faktycznie nawet kiedys o tym czytałem. Dzięki za pomoc.
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.