Leon_DJ
29.01.2004, 15:40:39
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
29.01.2004, 15:49:06
kyno
29.01.2004, 15:58:34
[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]
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
30.01.2004, 11:50:46
<?php
// Funkcja sprawdzajaca poprawnosc maila
function check_mail($email)
{
$regexp = \"/^([[:alnum:]]([[:alnum:]_.:-])?)+@([[:alnum:]][[:alnum:]_.:-]+[[:alnum:]].)?((([[:alnum:]]([[:alnum:]_.:-]{1,59})?[[:alnum:]])|[[:alnum:]]).)([a-z]{2,4}|[0-9]{1,3})$/i\";
$check = '<font color=green>OK</font>';
else
$check = '<font color=red>nie OK</font>';
return $check;
};
?>
<form action=\"/testy/?id=4\" method=post>
<p>
Podaj propozycje maila do sprawdzenia:
<input name=mail type=text value=\"
<? echo $_POST['mail'] ?>\" size=20 class=form>
<input type=submit name=submit value=\"Sprawdz\" class=formb>
</p>
</form>
<?
if($_POST['submit'])
{
echo '<b>Mail podany przez ciebie:</b><br>'; echo $_POST['mail'] . ' » '; echo check_mail
($_POST['mail']); }
// Sprawdzmy czy dzialaja maile przykladowe
$maile[] = 'jaNek@wp.Pl';
$opis[] = 'OK - litery mogą być duże i małe';
$maile[] = 'jaNek_79-80@wp-79_80.Pl';
$opis[] = 'OK - użytkownik może być z \"-\" i \"_\"';
$maile[] = 'jaNek.8@wp.Pl';
$opis[] = 'OK - użytkownik może być z \".\"';
$maile[] = 'jaNek:79@wp.Pl';
$opis[] = 'OK - użytkownik może być z \":\"';
$maile[] = 'jaNek.8@wp.jaNek';
$opis[] = 'nie OK - nie ma takiej domeny 5 literowej';
$maile[] = 'jaNek@e-janek.wp.Pl'; // thx to Michal
$opis[] = 'OK - nazwa domeny może zawierać \"-\"';
$maile[] = 'jaNek@-janek.Pl';
$opis[] = 'nie OK - domena nie może się zaczynać od \"-\"';
$maile[] = 'jaNek@poseł.Pl';
$opis[] = 'nie OK - domena nie może mieć polskich liter';
$maile[] = 'jaNek@w';
$opis[] = 'nie OK - brak domeny';
$maile[] = 'jaNek@w.Z';
$opis[] = 'nie OK - nie ma takiej domeny 1 literowej';
$maile[] = 'janek@149.156.124.13'; // thx to Hassan
$opis[] = 'OK - domena może być w postaci adresu IP';
$maile[] = 'janek@jestem-janek-fajny-gosc-mam-na-dzis-wszystkiego-dosc-wiec-juz-koncze-na-dzis.pl'; //thx to mati
$opis[] = 'nie OK - domena może mieć max 63 znaki';
$maile[] = 'janek@wp..pl';
$opis[] = 'nie OK - błędna domena';
echo '<b>Maile przykładowe:</b><br>'; for($n=0;$n<count($maile);$n++)
{
echo ' <font class=male>(powinno być: ' . $opis[$n] . ')</font> » '; echo check_mail
(\"$maile[$n]\"); };
?>
kszychu
30.01.2004, 12:00:02
[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
25.05.2004, 21:44:30
[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
25.05.2004, 21:58:59
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
25.05.2004, 22:02:14
Spróboj takiego wyrażenia: ^[^@ ]+@[^@ ]+.[^@ .]+$
zalew
25.05.2004, 22:04:45
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
25.05.2004, 22:09:46
Dzięki Liko,
pomogło
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.