Prosba o poprawe kodu formularza
arkolesz - 06 Cze 2007 19:09
Witam!
Mam wielka prosbe - musze stworzyc formularz przekazujace odpowiednie dane na maila jednak chcac pominac klopotliwe uzywanie Outlooka (lub innego programu pocztowego) uzylem skryptu php (serwer go obsluguje).
Zrobilem to tak:
plik z formularzem (oczywiscie bez sekcji head i body)
<form method="POST" action=zgloszenie.php>
Imię: <input type="text" name="imie">
Nazwisko: <input type="text" name="nazwisko">
<input type="submit" value="Wyślij" name="B1">
</form>
i plik zgloszenie.php
<?php
mail("arkolesz(małpa)go2.pl" ,
"test" ,
"Imię: $imie Nazwisko: $nazwisko");
?>
Formularz ladnie dziala i otrzymuje maila zatytulowanego test jednak bez zawartosci pol formularza:
Imię: Nazwisko:
Co robie zle?
krzychoocpp - 06 Cze 2007 19:16
Witam, "Imię: $_POST['imie'] Nazwisko: $_POST['nazwisko']"
Pozdrawiam, Krzysztof.
arkolesz - 06 Cze 2007 19:22
Niestety, serwer podal taki oto kod bledu:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /var/www/sites/yoyo.pl/a/r/arkolesz/mail/zgloszenie.php on line 4
Sprawdzilem na innym serwerze - ten sam blad.
krzychoocpp - 06 Cze 2007 19:27
Witam, przepraszam, zapomniałem że w "" nie można tak wstawiać, na co dzień nie używam " tylko ', zadziała tak: 'Imię: '.$_POST['imie'].' Nazwisko: '.$_POST['nazwisko']
Pozdrawiam, Krzysztof.
arkolesz - 06 Cze 2007 19:36
Teraz jest super, dziala. Nigdy bym nie doszedl o co chodzi, tymbardziej ze wiele internetowych poradnikow podaje sposob ktorego ja uzywalem jako ten poprawny.
Na koniec jeszcze jedno pytanie - o co chodzi z tymi kropkami? Rozumiem, ze jesli bede mial wiecej pol formularza i bede chcial je wyslac to mam to zrobic tak:
'Imię: '.$_POST['imie'].' Nazwisko: '.$_POST['nazwisko'].' Pole3: '.$_POST['nazwa_pola3']
krzychoocpp - 06 Cze 2007 19:46
Witam, więc tak:
Sposób który miałeś na początku zadziała, ale tylko jeśli będą właczone zmienne globalne. W nowszych wersjach php są domyślnie wyłączone, ze względów bezpieczeństwa. Więc miałeś stary, lub niskiej jakości poradnik.
Kropka to operator łączenia ciągów znaków. Generalnie działa szybciej niż ""
$a = 'buraki';
$b = 'tanie';
//Ponizszy kod wyswietli dwa razy to samo
echo "$a sa $b";
echo $a.' sa '.$b;
Twój kod jest poprawny, ale warto żebyś zabezpieczył się jakoś przed spamem.
Pozdrawiam, Krzysztof.
arkolesz - 06 Cze 2007 20:03
Juz wszystko zrozumialem - nie takie to trudne.
Jesli chodzi o spam to tez sie zastanawialem jak to zabezpieczyc, tymbardziej ze to formularz na stronie szkoly a tu nie problem o osoby ktore dla zabawy beda cos glupiego wysylac. Tylko czy te zabezpieczenia nie przeszkadzalyby osobom z dobrymi intencjami? Poki co nie mam pomyslu na zabezpiecznie wiec nie ma sie o co martwic.
I tak juz na koniec - co zrobic by w otrzymanym mailu kazde pole z jego zawartoscia wyswietlane bylo w kolejnej lini? Mowiac "wordowo" - jak wstawic enter?
krzychoocpp - 06 Cze 2007 20:15
Witam, co do spamu radzę się zapoznać z: http://sblam.com/techniki.html
Nowe linie wstawić możesz tak: "pierwsza linia\r\ndruga linia"
Pozdrawiam, Krzysztof.
arkolesz - 06 Cze 2007 20:48
Chyba nie zrozumialem - gdzie wstawic to \r\n? W ktorym miejscu wczesniej napisanego przezemnie kodu?
krzychoocpp - 06 Cze 2007 20:52
Najprościej będzie jeśli wstawisz to do jakiejś zmiennej (będzie mniej pisania):
$nl="\r\n";
'Imię: '.$_POST['imie'].$nl.' Nazwisko: '.$_POST['nazwisko'].$nl
Czyli wstawiasz tam gdzie nowe linie chcesz mieć.
Pozdrawiam, Krzysztof.
arkolesz - 06 Cze 2007 20:59
No i wszystkie problemy rozwiazane. Po raz kolejny dzieki Tobie, o Wielki Krzychoocpp!
Dziekuje bardzo!
Pozdrawiam!