• 1 رای - 5 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
معتبر سازی پست الکترونیک
#1
سلام دوستان،

یک نمونه کد ساده که توسط اون می تونید ببینید ایمیلی که کاربر هنگام عضویت مثلا وارد کرده صحیح است یا نه! البته نوشتن همچین کدهایی خیلی سادست اما دیدم خیلی ها درخواست می کنند برای همین تصمیم گرفتم اینجا یکسری خوبش رو بزارم.

کد پی‌اچ‌پی:
<?php

function check_email($email) {  // First, we check that there's one @ symbol, and that the lengths are right 
        
if (!ereg("^[^@]{1,64}@[^@]{1,255}$"$email)) {   
                
// Email invalid because wrong number of characters in one section, or wrong number of @ symbols.   
                
return false
        }  
// Split it into sections to make life easier 
       
        
$email_array explode("@"$email); 
        
$local_array explode("."$email_array[0]); 
        for (
$i 0$i sizeof($local_array); $i++) {     
                if (!
ereg("^(([A-Za-z0-9!#$%&'*+/=?^_`{|}~-][A-Za-z0-9!#$%&'*+/=?^_`{|}~\.-]{0,63})|(\"[^(\\|\")]{0,62}\"))$"$local_array[$i])) {     
                        return 
false;   
                }
        }   
        if (!
ereg("^\[?[0-9\.]+\]?$"$email_array[1])) {
                
// Check if domain is IP. If not, it should be valid domain name   
                
$domain_array explode("."$email_array[1]);   
                if (
sizeof($domain_array) < 2) {       
                        return 
false// Not enough parts to domain   
                
}   
                for (
$i 0$i sizeof($domain_array); $i++) {     
                        if (!
ereg("^(([A-Za-z0-9][A-Za-z0-9-]{0,61}[A-Za-z0-9])|([A-Za-z0-9]+))$"$domain_array[$i])) {       
                                return 
false;     
                        }   
                } 
        } 
        return 
true;
}

$email $_POST['email'];
if(!
check_email($email)){
        echo 
"Email is not valid";
}

?>


موفق و پیروز باشید برادرها Wink
غایب
  پاسخ
تشکر شده توسط : Alimokhlesi Y.P.Y zoghal HiddeN hidensoft
#2
Angel
کد پی‌اچ‌پی:
function check_email($str_input)
{
    return(
preg_match("/^([a-zA-Z0-9\+_\-]+)(\.[a-z0-9\+_\-]+)*@([a-z0-9\-]+\.)+[a-z]{2,6}$/ix", &$str_input) && strlen(&$str_input) < 255) ? true false;

سربلند باشی Big Grin
وبلاگ: Yousha.Blog.ir


کد کمتر => خطای کمتر => قابل فهمتر => خوانایی بیشتر => نگهداری بهتر
  پاسخ
تشکر شده توسط : zoghal Alimokhlesi HiddeN oia amir.s hidensoft
#3
من دارم از یه کتاپی php رو میخونم که چند روز پیش در مورد ereg توضیح داده بود . اخرین صفحه های ereg یه کدی نوشته بود که چک میکنه ایمیل معتبر هست یا نه اما وقتی اون کد رو نوشتم درست جواب نمیده .

کد :

کد پی‌اچ‌پی:
<?php

$email 
"[email protected]";
if (
ereg("^([^@]+)@([a-z\-]+\.)+([a-z]{2,4})$"$email,$match)) {

    echo 
"Mailbox : " .$match[1]. "<br />";
    echo 
"Domain name: " .$match[2]. "<br />";
    echo 
"Domain type : " .$match[2]. "<br />";
}
else {
    echo 
"Email address is invalid";
}

?>

که در جواب میگیرم :

کد:
Mailbox : test
Domain name: somedomain.
Domain type : somedomain.

مشکل این کد کجاست ؟ و قسمت دوم یعنی اینجا : ([a-z\-]+\.)

میشه یه توضیحی بدید که این \ ها برای چی هست و ...

ممنون
  پاسخ
تشکر شده توسط :
#4
هر چی \ هست یعنی اینجا نادیده گرفتن. کاراکترهایی مثل + توی عبارات باقاعده معنی خاصی میده. حالا برای اینکه بگیم این + منظور اون معنی خاص نیست و منظور ما همون کاراکتر + است از این استفاده می کنیم
برای domain type هم فکر کنم باید ایندکس ۳ رو استفاده کنید نه ۲
  پاسخ
تشکر شده توسط : Alimokhlesi cyletech HiddeN
#5
البته دونستن اینکه ایا این ایمیل واقعا وجود داره هم خالی از لطف نیست! این یعنی غیر از درست بودن گرامرش
  پاسخ
تشکر شده توسط :
#6
(۱۳۸۸ شهریور ۱۲, ۱۲:۱۴ ب.ظ)admin نوشته: هر چی \ هست یعنی اینجا نادیده گرفتن. کاراکترهایی مثل + توی عبارات باقاعده معنی خاصی میده. حالا برای اینکه بگیم این + منظور اون معنی خاص نیست و منظور ما همون کاراکتر + است از این استفاده می کنیم
برای domain type هم فکر کنم باید ایندکس ۳ رو استفاده کنید نه ۲

ممنون از پاسختون . اما باز هیچ تغییری نکرد , چرا ؟ و این که اینجا \-]+\ شما گفتيد که به این منظور هست که کارکتر + رو همون کاراکتر + در نظر بگیره خوب چرا \ رو قبل از ] قرار داد ؟ تمام کد رو تقریبا میفهمم اما این قسمت از کد برام خیلی گنگ هست .

ممنون .
  پاسخ
تشکر شده توسط :
#7
من توی کد فقط دیدم که قبل از . یک \ قرار داده که همین معنی رو میده
  پاسخ
تشکر شده توسط :
#8
با سلام

دوستان آیا از این توابع برای معتبر سازی ایمیل استفاده کرده اند ؟

کد پی‌اچ‌پی:
if (!filter_input(INPUT_POST"email"FILTER_VALIDATE_EMAIL))
    {
    echo 
"E-Mail is not valid";
    }
  else
    {
    echo 
"E-Mail is valid";
    } 

این توابع را من اولین بار از طرف جناب مولانا دیدم .

آیا بجای"email" نام آی دی textfield ایمیل باید قرار بگیره ؟

بعد از اینکه فرم ارسال شد این تابع مورد استفاده قرار میگیره ؟

با تشکر
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان