Flips
11.12.2010, 10:17:29
<html>
<body>
<?php
$action = $_GET['action'];
$nazwapliku = $_SERVER['SCRIPT_NAME'];
if($action==0){
echo "<form action=\"$nazwapliku?action=wyslij\" method='post'>"; echo '<input type="text" name="email" /><br />'; echo '<textarea name="content" cols="30" rows="6"></textarea>'; echo '<input type="submit" value="wyslij" />'; }
elseif($action==wyslij){
$adresat = 'adres@serwer.pl'; // pod ten adres zostanie wyslana
@$email = $_POST['email']; // wiadomosc
@$content = $_POST['content'];
$header = "From: ktos@serwer.pl \nContent-Type:".
' text/plain;charset="iso-8859-2"'.
"\nContent-Transfer-Encoding: 8bit";
if (mail($adresat, 'List ze strony', $content, $header)) else
echo '<p><b>NIE</b> wyslano maila!</p>'; };
?>
</body>
</html>
Dlaczego mimo tego że $action == wyslij to i tak wyświetla mi to pierwsze? Tak jakby == 0?
verio
11.12.2010, 10:20:18
Spróbuj z:
elseif($action=='wyslij'){
kalmaceta
11.12.2010, 10:22:20
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
11.12.2010, 10:29:03
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
11.12.2010, 10:34:02
Jeżeli metodę wysyłania formularza ustawiasz jako
method='post'
to powinno być
$action = $_POST['action'];
Flips
11.12.2010, 10:37:24
Cytat(verio @ 11.12.2010, 11:34:02 )

Jeżeli metodę wysyłania formularza ustawiasz jako
method='post'
to powinno być
$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
?action=wyslij
czaisz?
kalmaceta
11.12.2010, 10: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
verio
11.12.2010, 10:43:22
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
11.12.2010, 10:46:31
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
11.12.2010, 10:48:55
a nie możesz po prostu
if (isset($_POST['email'])) //formularz sybmitowany
else
//nie bylo submita
Flips
11.12.2010, 10:53:54
Cytat(kalmaceta @ 11.12.2010, 11:48:55 )

a nie możesz po prostu
if (isset($_POST['email'])) //formularz sybmitowany
else
//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
11.12.2010, 11:45:04
<html>
<body>
<?php
if(isset($_POST['wyslij'])){ $adresat = 'adres@serwer.pl'; // pod ten adres zostanie wyslana
@$email = $_POST['email']; // wiadomosc
@$content = $_POST['content'];
$header = "From: ktos@serwer.pl \nContent-Type:".
' text/plain;charset="iso-8859-2"'.
"\nContent-Transfer-Encoding: 8bit";
if (mail($adresat, 'List ze strony', $content, $header)) else
echo '<p><b>NIE</b> wyslano maila!</p>'; }
else {
echo "<form action=".$_SERVER['SCRIPT_NAME']." method='post'>"; echo '<input type="text" name="email" /><br />'; echo '<textarea name="content" cols="30" rows="6"></textarea>'; echo '<input type="submit" name="wyslij" value="wyslij" />'; }
?>
</body>
</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.