Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] mail() i form action
Forum PHP.pl > Forum > Przedszkole
Liam88r
Witam.
Mam taki problem. Dopiero zaczyam z php i chcialbym napisac skrypt, ktory po wpisaniu jakiegos stringa do formularza wykona:
1) przekierowanie do witryny, gdzie sobie z POST pobiore dane
2) wyslanie danych z formularza na maila.

I napisalem cos takiego:
Kod
<?php
if (empty($_POST['submit']))
{
echo "<form action=\"adres.php\" method=\"post\">
pole:
<input type=\"text\" name=\"id\" style=\"width: 250px\">
<input type=\"submit\" name=\"submit\" value=\"Wyslij\">&nbsp;
<input type=\"reset\" value=\"zresetuj\"></form>";
}

elseif (!empty($_POST['id']))
{
$message = "Id: $_POST[id]";
$header = "From: $_POST[id] <$_POST[email]>";
@mail("adres@domena.com","Wiadomosc ze strony page","$message","$header")
or die('blad');
echo "<div align=\"center\"><strong>Wiadomość została wysłana poprawnie!</a></strong></div>";
}
?>


No i to przekierowuje mnie do nowyj witryny, ale na maila nie dostaje zadnej informacji....
z kolei jesli usune:
Kod
action=\"adres.php\"

to maila dostaje, ale nie zostane rzecz jasna przekierowany do nastepnej witryny. Co powinienem zrobic ?
piotrooo89
wiec tak mozesz zrobić np tak:

  1. <?php
  2. echo '<form action="'.$_SERVER['PHP_SELF'].'" method="post">
  3. pole:
  4. <input type="text" name="id" style="width: 250px">
  5. <input type="submit" name="submit" value="Wyslij">&nbsp;
  6. <input type="reset" value="zresetuj"></form>';
  7. ?>


lub zostawić action puste i wtedy wykona się na stronie.
DREEMus
W pliku adres.php umieść
  1. <?php
  2. elseif (!empty($_POST['id']))
  3. {
  4. $message = "Id: $_POST[id]";
  5. $header = "From: $_POST[id] <$_POST[email]>";
  6. @mail ( 'adres@domena.com', 'Wiadomosc ze strony page', $message, $header )
  7.    or die ( 'blad' );
  8. echo '<div align="center"><strong>Wiadomość została wysłana poprawnie!</a></strong></div>';
  9. }
  10. ?>

bo przecież tam wysyłasz dane i przekierowujesz stronę po kliknięciu "Wyślij" ...
Liam88r
@piotrooo89: przeciez wtedy nie przekierowuje mnie na konkretny adres, a to jest jedno z moich zalozen.

@DREEMus: hmmm nie dziala nadal. Pokazuje tekst "wiadomosc zostala wyslana" jednak maila nie ma winksmiley.jpg

tak jak pisalem wczesniej. Jesli wywale calkiem action to maila dostaje od razu. Tylko jak ktos rozwiaze moj problem przekierowania na odpowiednia strone...
slawny
No to jeżeli mail już dochodzi to po wysłaniu daj header("Location: strona.php"); i ju.
DREEMus
  1. <?php
  2. if ( empty ( $_POST['submit'] ) ) {
  3.    echo '<form action="strona.php" method="post">
  4.    Pole:
  5.    <input type="text" name="id" style="width: 250px">
  6.    <input type="submit" name="submit" value="Wyslij"> &nbsp;
  7.    <input type="reset" value="zresetuj"></form>';
  8.    }
  9.    elseif ( !empty ( $_POST['id'] ) ) {
  10.        $message = "Id: $_POST[id]";
  11.        $header = "From: $_POST[id] <$_POST[email]>";
  12.        @mail ( 'adres@domena.com', 'Wiadomosc ze strony page', "$message", "$header" )
  13.            or die ( 'blad' );
  14.        echo '<div align="center"><strong>Wiadomość została wysłana poprawnie!</a></strong></div>';
  15.        header ( 'Location: gdzies.php' ); //To Cie przeniesie :)
  16.        }
  17. ?>
piotrooo89
na stronie na która chcesz być przekierowany dajesz:

  1. <?php
  2. if (!empty ( $_POST['id'] ))
  3. {
  4.    $message = "Id: $_POST['id']";
  5.    $header = "From: $_POST['id'] <$_POST['email']>";
  6.    mail('adres@domena.com', 'Wiadomosc ze strony page', $message, $header) or die ( 'blad' );
  7.    echo '<div align="center"><strong>Wiadomość została wysłana poprawnie!</a></strong></div>';
  8. }
  9. ?>
Liam88r
przeciez header nie moze byc po pojawieniu sie juz czegos na ekranie, a echo jest juz w czwartej linii. Poza tym w linii 4 jest:
Kod
action="strona.php"

przekieruje mnie do tej strony, ale nie wysle maila. A jesli to usune to nie przekieruje mnie do tej strony, ale wysle maila tongue.gif I tu jest caly problem winksmiley.jpg Probowalem juz na rozne sposoby wykorzystujac to co podal DREEMus, ale nie chce dzialac dalej.
No i jak umueszcze headera po echo no to mam:
Cytat
Warning: Cannot modify header information - headers already sent by (output started at /adres/test.php:13) in /adres/test.php on line 14


@piotrooo89: ta propozycja juz byla. Nic z tego.
slawny
na samej górze strony daj
  1. <?php
  2. ?>



Jeżeli będą błędne informacje, wyświetli ci echo.
Jeżeli będzie wszytko ok, przekieruje cie na stronę z header.

edit

na końcu
  1. <?php
  2. ?>
Liam88r
OOOO....sławny smile.gif Juz prawie o to chodzilo smile.gif Juz wysyla mail i przekierowuje na strone smile.gif
Tylko nie moge za pomoca $_POST pokazac na stronie, na ktora mnie przekierowuje zmiennej id, ktora wlasnie w formie uzytkownik tworzy.
slawny
No to jak nie możesz post-em to daj get-em
  1. <?php
  2. header("Location: strona.php?zmienna=$zmienna");
  3. ?>
Liam88r
Ok. Dziala winksmiley.jpg "Pomógł" wyklikane winksmiley.jpg dzieki winksmiley.jpg
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.