• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Formularz sprawdzanie błędów

Object Storage Arubacloud
0 głosów
157 wizyt
pytanie zadane 5 czerwca 2017 w PHP przez mitsuukurinaa Bywalec (2,790 p.)

Witam, mam formularz i wszystko ładnie działa. Problem taki, że nawet, gdy go nie wypełnie jest komunikat, że dziekujemy za wypełnienie itd. 
Chciałbym, aby wyszedł błąd gdy :
Email : (bez @ wyjdzie błąd)
nr telefonu : tylko cyfry , jeśli litery to błąd

Mógłby mi ktoś pomóc? Tutaj wstawiam warunek bo chyba tylko to starczy, jeśli się mylę to spokojnie wstawię cały Php i ewentualnie HTML

// wysłanie listu
if (mail($odbiorca,$tytul,$tresclistu,$naglowki))
{
print "".$message."";
}
else
{
print "".$error."";
}
}
?>

 

2 odpowiedzi

+2 głosów
odpowiedź 5 czerwca 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)
Sprawdź to przed wysyłaniem wiadomości i tylko jeśli wszystko się zgadza wysyłaj. Do emaila możesz użyć filter_var/input z odpowiednim filtrem, do cyfr w numerze właściwie też, ewentualnie jakbyś potrzebował coś dokładnie dostosować to wyrażeń regularnych.

Przy okazji dopowiem, że funkcja mail() bywa problematyczna, często maile wpadają do spamu. Polecam użyć PHPMailera albo SwiftMailera i wysyłać przez SMTP.
+1 głos
odpowiedź 5 czerwca 2017 przez Chess Szeryf (76,710 p.)
edycja 5 czerwca 2017 przez Chess

Nie napisałeś, co robi (co zwraca funkcja mail). Trudno cokolwiek wywróżyć, aczkolwiek da się.

Edit: @Arkadiusz Waluk, dzięki za zwrócenie uwagi. 

Edit: Użyłeś funkcji wbudowanej, więc funkcja jeśli mail został dostarczony zwraca TRUE, w innych przypadkach zwraca FALSE.

Gdybyś napisał własną funkcję to byłoby to mniej więcej tak:

Gdy będzie 1 lub true wykona się pierwszy warunek, gdy będzie 0 lub false wykona się następny, krótki przykład:

<?php 

function counting($a,$b){ 
	return pow($a,$b);
}
 
if(counting(5,4)) { 
	echo 'Query is executed.';
}else{ 
	echo 'Query is not executed.';
}
?>

Jeżeli funkcja counting zwróci true lub 1, to wykona się pierwsze echo, gdy zwróci ta funkcja false lub 0 to wykona się drugie echo.

Ta funkcja zwraca true, bo w tym przykładzie są dwie liczby typu całkowitoliczbowego, a chodzi oto, aby w funkcji były liczby, nie łańcuchy tekstowe (strings).

Natomiast dla string'a, funkcja zwróci wartość false i wykona się drugie echo. Dzieje się tak, dlatego, że funkcja pow może jako argumenty przyjąć tylko liczby, a nie łańcuchy znaków.

Dla counting('a',5'), zwróci false, bo pow nie przyjmuje wartości string, tylko int lub float. Dla ('b','b'), też zwróci false. Mam nadzieję, że wiesz już o co chodzi. To co zwraca funkcja jest rozpatrywane i albo przejdzie do następnego warunku albo nie, bo np. wykona się wcześniejszy warunek.

To, co zwraca funkcja sprawdza się za pomocą funkcji var_dump. Przykład:

var_dump(counting(5,5));

Dla tego poniższego przykładu zawsze będzie true, czyli wykona się zawsze pierwsze echo:

<?php 
function x(){ 
	return -4534;
	
}
var_dump(x());

if(x()){ 
	echo 'true';
}else{ 
	echo 'false';
}
?>

Jeśli coś błędnie napisałem, to można to w prosty sposób zweryfikować przyrówując do odpowiedniego typu, np.:

if(x()==true){ /* ... */ }

Przecież ten warunek zawsze będzie prawdziwy, ponieważ jeśli zmienna nie będzie ustawiona to zwróci "undefined variable".

Jeśli zmienna będzie ustawiona to zwróci true, czyli warunek się sprawdzi i zawsze wykona ci pierwszy warunek, pierwszego if.

komentarz 5 czerwca 2017 przez Arkadiusz Waluk Ekspert (287,950 p.)

Nie napisałeś, co robi (co zwraca funkcja mail). Trudno cokolwiek wywróżyć, aczkolwiek da się.

http://php.net/manual/en/function.mail.php#refsect1-function.mail-returnvalues

Podobne pytania

0 głosów
3 odpowiedzi 1,001 wizyt
pytanie zadane 5 stycznia 2017 w PHP przez sapero Gaduła (4,100 p.)
0 głosów
2 odpowiedzi 225 wizyt
pytanie zadane 10 października 2019 w HTML i CSS przez Gowi Użytkownik (830 p.)
0 głosów
4 odpowiedzi 563 wizyt
pytanie zadane 28 marca 2016 w PHP przez Paweł123 Nałogowiec (33,500 p.)

92,555 zapytań

141,403 odpowiedzi

319,553 komentarzy

61,939 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...