Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Formularz email "szczegółowy" ? ;)
Forum PHP.pl > Forum > Przedszkole
lopik
Więc tak, moim "marzeniem" (; jest zrobić formularz email w php.

Ale taki formularz, który zwraca, zawsze inne info przy źle wypełnionym każdym polu w formularzu.
Chodzi o to że, jak np: ktos wypełni źle pole "email" to napisze że 'źły email' , jak wypełni źle pole 'imie' to napisze 'złe imie' itd.

No i wykombinowałem coś ale napewno źle winksmiley.jpg bo pisałem tylko z głowy, a w głowie jeszcze mam mało informacji o php winksmiley.jpg

Takie coś wymysliłmem <gafa>

  1. <?php
  2. $imie = $_POST['imie'];
  3. $email = $_POST['email'];
  4. $tresc = $_POST['tresc'];
  5. $tresc_min = 10;
  6.  
  7. if (ereg("[[:alpha:]]" , $imie) and ereg("^[^@]+@([a-z0-9-]+.)+[a-z]{2,4}$" , $email) and strlen($tresc) > $tresc_min)) {
  8. mail("webmas@o2.pl", "Imię: $imie", "Treść $tresc", "OD: $email");
  9. echo "Dziękuję za wysłanie wiadomości";
  10. }
  11. elseif (ereg("[[:digit:]]", $imie)) {
  12. echo "Pole Imię może zawierać wyłącznie litery!"; }
  13.  
  14. elseif (ereg("^[^@]+@([a-z0-9-]+.)+[a-z]{2,4}$", $email) == false) {
  15. echo "Błędnie napisany adres email";
  16. }
  17. elseif (strlen($tresc) > $tresc_min) {
  18. echo "Tresc jest zbyt krótka";
  19. }
  20.  
  21. else { echo "Żle wypełniony formularz"; 
  22. }
  23. ?>


No nic, uprzedze was " Poucz się więcej php" winksmiley.jpg
OK poucze sie, codziennie coś czytam ucze sie, no ale szybko sie nie da nauczyć winksmiley.jpg

PS.
Czy dużo rzeczy jest tu źle winksmiley.jpg ?
Czy da sie tu coś w miare zmienić żeby było dobrze winksmiley.jpg ?
Czy może tak tez się nie powinno pisac takiego skryptu php ? smile.gif

Przepraszam za głupi post, już nie będe pisał więcej głupot, tylko pierw się podszkole winksmiley.jpg

Dzięki
I Przepraszam za głupoty smile.gif
phpion
1. Nie uzywasz zmiennej $strlen (w sumie nie ma potrzeby jej tworzenia)
2.
  1. <?php
  2. if (ereg("[[:alpha:]]", $imie) ereg("^[^@]+@([a-z0-9-]+.)+[a-z]{2,4}$", $email) strlen($tresc) > $tresc_min))
  3. ?>

ten warunek jest zle skonstruowany, nie uzywasz operatorow && (AND) ani || (OR) wiec nie ma prawa dzialac (nie wywala bledu?)
3.
  1. <?php
  2. elseif (ereg("^[^@]+@([a-z0-9-]+.)+[a-z]{2,4}$", $email)= false)
  3. ?>

nie = a == (= to przypisanie)
lopik
ad1. no tak racja smile.gif
ad2. tu też masz racje, zapomniałem ;/ (wywalało bład, i pisałem że mam źle winksmiley.jpg )
ad3. dokładnie ;/ ups


Poprawiłem kod (poprawiony kod, w 1 poście) i wywala mi taki błąd:
"Parse error: syntax error, unexpected ')' in /home2/webmaker/public_html/php/form.php on line 29"
phpion
To moze pokaz okolice linii 29?
lopik
U mnie linia 29 to jest to: (linia 7 w pierwszym poście)
  1. <?php
  2. if (ereg("[[:alpha:]]" , $imie) and ereg("^[^@]+@([a-z0-9-]+.)+[a-z]{2,4}$" , $email) and strlen($tresc) > $tresc_min)) {
  3. ?>
Jim
Cytat
syntax error
oznacza błąd syntaktyczny (składniowy).

Cytat
unexpected ')'
oznacza że parser napotkał na nieprzewidziny znak ')'.

popatrz na swój kod, sprawdź czy wszystkie nawiasy się zgadzają, zobaczysz na końcu o jeden za dużo.
lopik
No juz mam smile.gif

Ale przcież tak to nie działa, a nikt mi tu tego nie napisał winksmiley.jpg

I tak dzięki. smile.gif

Nie będe pisał nowego tematu, bo to sie tyczy mojego formularza smile.gif

A więc, formularz mam, i działa (sam nie wieże ze sam go zrobiłem tongue.gif )

Ale mam takie pytanie, jak formularz jet już wypełniony, i klikam na przycisk "wyśli" i jest jakiś błąd - ok tak ma być, i strona z formularzem jest przeładowana, i wpisana treść z formularza znika - i pytanie takie, czy da się jakoś w miare prosto zrobić, zeby ta treść z formularza nie znikała po przeładowaniu strony w przypadku błędu ?


I jeszcze jedno, jak powinna być napisana funkcja mail() z dodatkowymi nagłówkami, bo coś mi nie wychodzi :|

  1. <?php
  2. mail("aders@poczty.com" , "Wiadomosc z www", $_POST['wiadomosc'], "OD:$_POST['imie']rn email:$_POST['email']");
  3. ?>


W formularzu mam:
- imie
- email
- wiadomosc

I chcial bym wszystkie te dane dostać na mejla.

Dziękuję, za każdą pomoc smile.gif
strife
Cytat(pik @ 18.09.2006, 14:50:13 ) *
(...) i strona z formularzem jest przeładowana, i wpisana treść z formularza znika - i pytanie takie, czy da się jakoś w miare prosto zrobić, zeby ta treść z formularza nie znikała po przeładowaniu strony w przypadku błędu ?

Przykładowo w ten sposób:
  1. <form method="post" action="?">
  2. <input type="text" name="tekst" value="<?php echo $_POST['tekst'] ?>" />
  3. <input type="submit" />
  4. </form>

Cytat(pik @ 18.09.2006, 14:50:13 ) *
I jeszcze jedno, jak powinna być napisana funkcja mail() z dodatkowymi nagłówkami, bo coś mi nie wychodzi :|

Poczytaj, dokładnie o mail" title="Zobacz w manualu php" target="_manual i co się wpisuje w nagłówkach ( przeczytaj komentarze ).
lopik
Ok dzięki, załapałem teraz, przedtem czytałem ale jakoś mi nie wchodziło do głowy winksmiley.jpg

Teraz juz kumam, i juz wszystko zrobione (prawie) winksmiley.jpg

Pyt. 1
Jeszcze jedno smile.gif

Wstawiłęm ten kod co podałeś że po przeładowaniu strony w przypadku jakiegos błędu, tresc z formularza nie znika.

A żeby znikała jesli formularz jest dobrze wypełniony, po wysłaniu wiadomości ? da się ?

//

Pyt. 2
I jeszcze zrobiłem sobie takie coś:

  1. <?php
  2. $plik = fopen("plik.txt", "a+");
  3.  
  4. $zapisac = ''.$_POST['imie'].'n'.$_POST['email'].'n'.$_POST['odpisz'].'n'.$_POST['wiadomosc'].'n';
  5.  
  6. if (!empty($zapisac)) {
  7. fwrite($plik, $zapisac); }
  8.  
  9. ?>


I chciał bym zeby dane z formularza były zapisywane kazde w nowej linijce, "imie" w osobnej, "email" w osobnej itd.
Wstawiłem znak "\n" ale nie działa :|
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.