Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Jak sprawdzic czy dany string jest e-mail'em ?
Forum PHP.pl > Forum > PHP
Leon_DJ
Witam,
jak sprawdzic czy dany string wpisany
w formularzu jest e-mail'em ?

Chodzi o to, gdy ktos wpisze w polu przeznaczonym
na e-mail cos innego, to zeby stronka go "nawrocila"
komunikatem ze wpisany tekst nie jest e-mailem
i zeby mogl poprawic na wlasciwy

z gory dziekuje i pozdrawiam
Leon_DJ
rzseattle
http://php.pl/search.php
kyno
[php:1:6dda985aa6]<?php
function check_email($email) {
if(eregi("^[a-zA-z0-9_.-]+@[a-zA-z0-9-]+.[a-zA-z0-9-.]+$", $email))
return TRUE;
else
return FALSE;
}
?>[/php:1:6dda985aa6]
dob
Ja taką małą uwage wtrące do kodu :wink: jezeli stosujesz funkcje eregi to nie potrzebne jest sprawdzanie również duzych liter

[php:1:8e7642213a]<?php
function check_email($email) {
if(eregi("^[a-z0-9_.-]+@[a-z0-9-]+.[a-z0-9-.]+$", $email))
return TRUE;
else
return FALSE;
}
?>[/php:1:8e7642213a]

Ja jeszcze dorzuce inne wyrazenie regularne o takim samym działaniu
[php:1:8e7642213a]<?php
if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,4}$",$mail)){
exit("Podany e-mail jest nieprawidłowy");
}
?>[/php:1:8e7642213a]
Wydaje mi sie ze jest troche lepsze bo uwzględnia domenę od 2 do 4 znaków z przecdziału a-z
nediam
  1. <?php
  2. // Funkcja sprawdzajaca poprawnosc maila 
  3. function check_mail($email) 
  4. { 
  5. $regexp = &#092;"/^([[:alnum:]]([[:alnum:]_.:-])?)+@([[:alnum:]][[:alnum:]_.:-]+[[:alnum:]].)?((([[:alnum:]]([[:alnum:]_.:-]{1,59})?[[:alnum:]])|[[:alnum:]]).)([a-z]{2,4}|[0-9]{1,3})$/i\"; 
  6. $email = strtolower($email); 
  7.  
  8. if(preg_match($regexp, $email)) 
  9.  $check = '<font color=green>OK</font>'; 
  10. else 
  11.  $check = '<font color=red>nie OK</font>'; 
  12.  
  13. return $check; 
  14. }; 
  15. ?> 
  16.  
  17. <form action=\"/testy/?id=4\" method=post> 
  18. <p> 
  19. Podaj propozycje maila do sprawdzenia: 
  20. <input name=mail type=text value=\"<? echo $_POST['mail'] ?>\" size=20 class=form> 
  21. <input type=submit name=submit value=\"Sprawdz\" class=formb> 
  22. </p> 
  23. </form> 
  24. <? 
  25. if($_POST['submit']) 
  26.  { 
  27.  echo '<b>Mail podany przez ciebie:</b><br>'; 
  28.  echo $_POST['mail'] . ' &raquo; '; 
  29.  echo check_mail($_POST['mail']); 
  30.  echo '<br><br>'; 
  31.  } 
  32.  
  33. // Sprawdzmy czy dzialaja maile przykladowe 
  34. $maile[] = 'jaNek@wp.Pl'; 
  35. $opis[] = 'OK - litery mogą być duże i małe'; 
  36. $maile[] = 'jaNek_79-80@wp-79_80.Pl'; 
  37. $opis[] = 'OK - użytkownik może być z \"-\" i \"_\"'; 
  38. $maile[] = 'jaNek.8@wp.Pl'; 
  39. $opis[] = 'OK - użytkownik może być z \".\"'; 
  40. $maile[] = 'jaNek:79@wp.Pl'; 
  41. $opis[] = 'OK - użytkownik może być z \":\"'; 
  42. $maile[] = 'jaNek.8@wp.jaNek'; 
  43. $opis[] = 'nie OK - nie ma takiej domeny 5 literowej'; 
  44. $maile[] = 'jaNek@e-janek.wp.Pl'; // thx to Michal 
  45. $opis[] = 'OK - nazwa domeny może zawierać \"-\"'; 
  46. $maile[] = 'jaNek@-janek.Pl'; 
  47. $opis[] = 'nie OK - domena nie może się zaczynać od \"-\"'; 
  48. $maile[] = 'jaNek@poseł.Pl'; 
  49. $opis[] = 'nie OK - domena nie może mieć polskich liter'; 
  50. $maile[] = 'jaNek@w'; 
  51. $opis[] = 'nie OK - brak domeny'; 
  52. $maile[] = 'jaNek@w.Z'; 
  53. $opis[] = 'nie OK - nie ma takiej domeny 1 literowej'; 
  54. $maile[] = 'janek@149.156.124.13'; // thx to Hassan 
  55. $opis[] = 'OK - domena może być w postaci adresu IP'; 
  56. $maile[] = 'janek@jestem-janek-fajny-gosc-mam-na-dzis-wszystkiego-dosc-wiec-juz-koncze-na-dzis.pl'; //thx to mati 
  57. $opis[] = 'nie OK - domena może mieć max 63 znaki'; 
  58. $maile[] = 'janek@wp..pl'; 
  59. $opis[] = 'nie OK - błędna domena'; 
  60.  
  61. echo '<b>Maile przykładowe:</b><br>'; 
  62. for($n=0;$n<count($maile);$n++) 
  63. { 
  64. echo $maile[$n]; 
  65. echo ' <font class=male>(powinno być: ' . $opis[$n] . ')</font> &raquo; '; 
  66. echo check_mail(&#092;"$maile[$n]\"); 
  67. echo '<br>'; 
  68. }; 
  69. ?>
kszychu
[php:1:98b7d9b9e1]<?php
$maile[] = 'jaNek@poseł.Pl';
$opis[] = 'nie OK - domena nie może mieć polskich liter';
?>[/php:1:98b7d9b9e1]
Tak na marginesie, to troszke nieaktualne
Liko
[php:1:83275f1a96]
<?php
if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]+$",$mail)){
exit("Podany e-mail jest nieprawidłowy");
}
?>[/php:1:83275f1a96]
Widmo
nie działa...

[php:1:a26f3494b6]<?php
if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]+$",$HTTP_GET_VARS['odbiorca']))
{
echo "dupa";
//print("<META HTTP-EQUIV='Refresh' CONTENT='0; URL=../index.php?error=Podany e-mail jest nieprawidłowy!'>");
exit;
}

?>[/php:1:a26f3494b6]

sdkfj@afasf.pl dziala
widmo@q.pl nie...
Liko
Spróboj takiego wyrażenia: ^[^@ ]+@[^@ ]+.[^@ .]+$
zalew
znalazlem cos takiego keidys i uzywam z powodzeniem.. sprawdza tez istnienie domeny...
[php:1:9a317afd33]<?php

function validate_email($email)
{

// Create the syntactical validation regular expression
$regexp = "^([_a-z0-9-]+)(.[_a-z0-9-]+)*@([a-z0-9-]+)(.[a-z0-9-]+)*(.[a-z]{2,4})$";

// Presume that the email is invalid
$valid = 0;

// Validate the syntax
if (eregi($regexp, $email))
{
list($username,$domaintld) = split("@",$email);
// Validate the domain
if (getmxrr($domaintld,$mxrecords))
$valid = 1;
} else {
$valid = 0;
}

return $valid;

}
?>[/php:1:9a317afd33]
Widmo
Dzięki Liko,
pomogło biggrin.gif

To jeszcze Was pomecze...

Jak daje:
[php:1:8bf8b832da]<?php
Z adresu IP: ".$ip." Oraz proxy? ".$proxy."
?>[/php:1:8bf8b832da]

I ktos sie laczy normalnie to dostaje wiadomosc:

Cytat
Z adresu IP: 62.121.121.9 Oraz proxy?


Ale jak laczy sie przez proxy, to sie odwracaja adresy :/

Cytat
Z adresu IP: 193.219.28.144 Oraz proxy? 62.121.121.9
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.