Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Poprawne wpisywanie emaila w formularzu PHP
Forum PHP.pl > Forum > Przedszkole
richardoone
Z racji tego że jest to mój pierwszy post - Witam Wszystkich.
Czy ktoś mógłby mi pomóc przerobić poniższy kod, aby wartość wpisywanego w pole User tesktu byla emailem(chodzi o poprawność znaków xxxxxxx@xxxxxx.xxx). Czyli aby system sprawdzal czy jest prawidlowo napisany email, jeśli nie to komunikat, jeśli tak to dalej tak jak jest w kodzie.


<?php
session_start();
include "inc/db.php";
$db = new db();

$user = $db->real_escape($_POST['user']);
$pass = $db->real_escape($_POST['pass']);

if(empty($user)){
header('Location: meineanzeigen.php?fail=user');
}
elseif(empty($pass)){
header('Location: meineanzeigen.php?fail=pass');
}else{
$db->query('INSERT INTO user SET
email = "'.$user.'",
pass = "'.md5($pass).'"
');

header('Location: meineanzeigen.php?reg=ok');
}

?>
Boshi
http://php.net/manual/en/filter.examples.validation.php
albo wyrażenia regularne.
richardoone
Dzieki Boshi. Juz tego próbowalem bo przewaliłem całe google w poszukiwaniu rozwiązania. Ale ciągle wyskakiwała mi pusta strona. Jak dodać tą walidację do kodu aby po sprawdzeniu przechodził dalej tak jak teraz w kodzie?
Boshi
  1.  
  2. <?php
  3. include "inc/db.php";
  4. $db = new db();
  5.  
  6. $user = $db->real_escape($_POST['user']);
  7. $pass = $db->real_escape($_POST['pass']);
  8.  
  9. if(empty($user) ){
  10. header('Location: meineanzeigen.php?fail=user');
  11. }
  12.  
  13. else if (!filter_var($user, FILTER_VALIDATE_EMAIL)) {
  14. echo 'bledny email';
  15. }
  16. elseif(empty($pass)){
  17. header('Location: meineanzeigen.php?fail=pass');
  18. }else{
  19. $db->query('INSERT INTO user SET
  20. email = "'.$user.'",
  21. pass = "'.md5($pass).'"
  22. ');
  23.  
  24. header('Location: meineanzeigen.php?reg=ok');
  25. }
  26.  
  27. ?>
  28.  
richardoone
Niestety też nie działa. Bardzo ciekawy skrypt, ale po mojemu zamiast $user powinno byc $email, i może wtedy te funkcje by działały.
A jak dopisać do $user aby tylko określone znaki mogły być wpisane- czyli tak jak email (xxxxxx@xxxxx.xx)
Boshi
Jaka zmienna email? nigdzie jej nie odczytujesz z formularza. Skoro sprawdzasz inputa user to user, dlatego funkcja pobiera ten parametr i sprawdza. Pokaż formularz i napisz co dokłądnie nie działa bo jak na moje to powinno.


Sprawdź co zawiera user var_dump($user);
Skoro chcesz inaczej to zainteresuj się wyrażeniami regularnymi.
richardoone
Teraz to dziala tylko w odwrotna strone. Po wpisaniu jakiegokolwiek emaila przy rejestracji pokazuje echo że jest nieprawidłowy. A po wpisaniu ciaągu znaków przechodzi dalej. Mze zdałobz egzamin użycie preg_match? var_dump jest NULL
Struktura user wygląda tak:
http://zapodaj.net/015fd1c5a63f6.png.html

Dzieki Boshi.Jest ok. Dałem:

$emailErr = "Invalid email format";
zamiast echo.
Tylko mam jeszcze pytanie. Czy da się wyświetlić wiadomość o błędnym emailu z bazy danych w wyskakującym okienku? smile.gif
com
Da sie tylko sobie do niego te wiadomosc przekaz smile.gif
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.