Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Warunek
Forum PHP.pl > Forum > Przedszkole
Flips
  1. <html>
  2. <body>
  3. <?php
  4. $action = $_GET['action'];
  5. $nazwapliku = $_SERVER['SCRIPT_NAME'];
  6. echo "$action";
  7.  
  8. if($action==0){
  9. echo '<div>';
  10. echo "<form action=\"$nazwapliku?action=wyslij\" method='post'>";
  11. echo '<input type="text" name="email" /><br />';
  12. echo '<textarea name="content" cols="30" rows="6"></textarea>';
  13. echo '<input type="submit" value="wyslij" />';
  14. echo '</form>';
  15. echo '</div>';
  16. }
  17. elseif($action==wyslij){
  18. $adresat = 'adres@serwer.pl'; // pod ten adres zostanie wyslana
  19. @$email = $_POST['email']; // wiadomosc
  20. @$content = $_POST['content'];
  21. $header = "From: ktos@serwer.pl \nContent-Type:".
  22. ' text/plain;charset="iso-8859-2"'.
  23. "\nContent-Transfer-Encoding: 8bit";
  24. if (mail($adresat, 'List ze strony', $content, $header))
  25. echo '<p>dziala</p>';
  26. else
  27. echo '<p><b>NIE</b> wyslano maila!</p>';
  28. };
  29. ?>
  30. </body>
  31. </html>


Dlaczego mimo tego że $action == wyslij to i tak wyświetla mi to pierwsze? Tak jakby == 0?
verio
Spróbuj z:
  1. elseif($action=='wyslij'){
kalmaceta
ja tam w formularzu widze method="post", albo GET albo POST. Zły pomysł z tymi parametrami we właściwości action form

Przeglądarka wysyła metodą GET albo POST nie równocześnie i na podstawie tego serwer WWW przekazuje a PHP wypełnia tablice $_GET i $_POST mimo, że querystring ma jakieś parametry gdy jest post to get nie jest ruszany, de facto są one dostępne do wyłuskania.
Flips
próbowałem 'action' tak jak napisał verio, ale też to nic nie daje... a co do tego co napisał kalmaceta, co to ma do rzeczy? Jedna zmienna jest przekazywana w pasku adresu, a druga przez POST...

EDIT: aha, no to ja nie wiem jak to zrobić w takim razie...

Ma ktoś pomysł? Mógłbym zmienić wszystko na GET, ale załóżmy że to by był skrypt wysyłający maila, więc GET odpada...
verio
Jeżeli metodę wysyłania formularza ustawiasz jako
  1. method='post'
to powinno być
  1. $action = $_POST['action'];
Flips
Cytat(verio @ 11.12.2010, 11:34:02 ) *
Jeżeli metodę wysyłania formularza ustawiasz jako
  1. method='post'
to powinno być
  1. $action = $_POST['action'];



Ale ten GET_['action'] nie odnosi się do formularza z którego przesyłam, tylko po prostu przy "submicie" dodaję do adresu
  1. ?action=wyslij
czaisz?
kalmaceta
człowieku przeczytaj jeszcze raz mój post wyżej.

Jeśli wysyłasz formularz metodą POST, to przeglądarka wykonuje żądanie metodą POST, serwer je otrzymuje i przekazuje do PHP, i choćbyś wpisał milion parametrów w urlu akcji formularza to i tak zostanie on wysłany POST'em i nie będzie nic w $_GET. czaisz?

te Twoje ?action=wyslij jest tylko querystring'iem nie żadnym parametrem dla PHP i serwera
verio
Rozumiem. Wtedy formularz głupieje, jeżeli tak naprawdę dane wysyłane są w dwóch tablicach. Lepiej korzystać albo z GET albo z POST, nie z dwóch na raz. Sam kiedyś walczyłem z tym problemem.
Flips
Cytat(kalmaceta @ 11.12.2010, 11:42:07 ) *
człowieku przeczytaj jeszcze raz mój post wyżej.

Jeśli wysyłasz formularz metodą POST, to przeglądarka wykonuje żądanie metodą POST, serwer je otrzymuje i przekazuje do PHP, i choćbyś wpisał milion parametrów w urlu akcji formularza to i tak zostanie on wysłany POST'em i nie będzie nic w $_GET. czaisz?

te Twoje ?action=wyslij jest tylko querystring'iem nie żadnym parametrem dla PHP i serwera


Czyli najlepiej będzie po prostu założyć nowy plik .php tak? Bo ja już wiem jaki jest problem tylko nie wiem jak go rozwiązać
kalmaceta
a nie możesz po prostu

  1. if (isset($_POST['email']))
  2. //formularz sybmitowany
  3. else
  4. //nie bylo submita
Flips
Cytat(kalmaceta @ 11.12.2010, 11:48:55 ) *
a nie możesz po prostu

  1. if (isset($_POST['email']))
  2. //formularz sybmitowany
  3. else
  4. //nie bylo submita


No w sumie można, nie pomyślałem o tym. Jak to nie sprawi że kod będzie mniej czytelny (bo jestem dopiero początkujący i nie wiem jak pisać żeby później ktoś mógł to łatwo edytować) to zrobię tak jak mi napisałeś. Dzięki, temat do zamknięcia.
lord2105
  1. <html>
  2. <body>
  3. <?php
  4. if(isset($_POST['wyslij'])){
  5. $adresat = 'adres@serwer.pl'; // pod ten adres zostanie wyslana
  6. @$email = $_POST['email']; // wiadomosc
  7. @$content = $_POST['content'];
  8. $header = "From: ktos@serwer.pl \nContent-Type:".
  9. ' text/plain;charset="iso-8859-2"'.
  10. "\nContent-Transfer-Encoding: 8bit";
  11. if (mail($adresat, 'List ze strony', $content, $header))
  12. echo '<p>dziala</p>';
  13. else
  14. echo '<p><b>NIE</b> wyslano maila!</p>';
  15. }
  16. else {
  17. echo '<div>';
  18. echo "<form action=".$_SERVER['SCRIPT_NAME']." method='post'>";
  19. echo '<input type="text" name="email" /><br />';
  20. echo '<textarea name="content" cols="30" rows="6"></textarea>';
  21. echo '<input type="submit" name="wyslij" value="wyslij" />';
  22. echo '</form>';
  23. echo '</div>';
  24. }
  25. ?>
  26. </body>
  27. </html>


poprostu tak

Pozdrawiam
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.