PDA

View Full Version : سوال: فرمت ایمیل



ms_raha
سه شنبه 05 اردیبهشت 1391, 15:21 عصر
سلام
چطوری میشه تعیین کنیم که کاربر در یک textbox فرمت ایمیل وارد کند و در غیر اینصورت پیغام دهد
ممنون

MMSHFE
سه شنبه 05 اردیبهشت 1391, 15:35 عصر
کم کم داره سؤالات JS این تالار بیشتر از PHP میشه. لطفاً از تالار مناسب استفاده کنید. ایندفعه بطور استثنا جواب میدم:


<!doctype html>
<html>
<head>
<title>JS Input Check</title>
<meta charset="utf-8"/>
<script type="text/javascript">
function validateEmail(obj) {
var re = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
if(!re.test(obj.value)) {
alert('Error: Invalid email address');
}
}
</script>
</head>
<body>
<input id="txt" onchange="validateEmail(this)" type="text"/>
</body>
</html>

این کد وقتی از روی کادر متن حرکت کنید (با کلید Tab یا کلیک روی بخش دیگری از صفحه) ایمیل رو چک میکنه و اگه اشتباه باشه، پیغام خطا میده.
موفق باشید.

ms_raha
سه شنبه 05 اردیبهشت 1391, 20:14 عصر
jsچیه من با php میخوام

mohamadali1374
سه شنبه 05 اردیبهشت 1391, 20:25 عصر
سلام دوست عزیز این کد رو ببین:
if(!preg_match("/^[.A-z0-9_-]+[@][A-z0-9_-]+([.][A-z0-9_-]+)+[A-z]{2,4}$/",
$email))
die("لطفا رايانامه(ايميل)را به طور صحيح وارد کنيد!");
فقط توجه کن در اینجا متغیر استفاده شده $email است که باید با توجه به برنامت باید تغییرش بدی!!!!

MMSHFE
چهارشنبه 06 اردیبهشت 1391, 11:25 صبح
ضمن تشکر از دوستمون باید این نکته رو هم اضافه کنم که این بررسی صحت اعتبار ایمیل داره سمت سرور انجام میشه و اجازه واردکردن کارکترهای غیرمجاز در سمت کلاینت به کاربر داده شده. اگه بخواین همون سمت کلاینت قبل از ارسال برای سرور، ایمیل رو چک کنید باید مشابه روشی که گفتم، از همون JS استفاده کنید. بعلاوه نوع سؤال شما و نحوه مطرح شدنش طوری بود که فکر کردم اعتبارسنجی سمت کلاینت رو لازم دارین.
موفق باشید.

Hamid.RDN
پنج شنبه 07 اردیبهشت 1391, 11:16 صبح
دوست عزیز این کاملترین روش هستش که دامین و DNS رو هم چک میکنه:




function isEmail($email, $validate_domain = FALSE)
{
if (preg_match($email, '/^[-_a-z0-9\'+*$^&%=~!?{}]++(?:\.[-_a-z0-9\'+*$^&%=~!?{}]+)*+@(?:(?![-.])[-a-z0-9.]+(?<![-.])\.[a-z]{2,6}|\d{1,3}(?:\.\d{1,3}){3})(?::\d++)?$/iD'))
{
if ($validate_domain)
{
// Validate the domain exists with a DNS check, if the checks cannot be made (soft fail over to TRUE)
list($user, $domain) = explode('@', $email);
return isDomain($domain, TRUE, TRUE);
}
return TRUE;
}
else
return FALSE;
}


function isDomain($domain, $validate_TLD = TRUE, $validate_DNS = FALSE)
{
if ($validate_TLD)
{
return preg_match($domain, '@^([a-z0-9]([-a-z0-9]*[a-z0-9])?\\.)+((a[cdefgilmnoqrstuwxz]|aero|arpa)|(b[abdefghijmnorstvwyz]|biz)|(c[acdfghiklmnorsuvxyz]|cat|com|coop)|d[ejkmoz]|(e[ceghrstu]|edu)|f[ijkmor]|(g[abdefghilmnpqrstuwy]|gov)|h[kmnrtu]|(i[delmnoqrst]|info|int)|(j[emop]|jobs)|k[eghimnprwyz]|l[abcikrstuvy]|(m[acdghklmnopqrstuvwxyz]|mil|mobi|museum)|(n[acefgilopruz]|name|net)|(om|org)|(p[aefghklmnrstwy]|pro)|qa|r[eouw]|s[abcdeghijklmnortvyz]|(t[cdfghjklmnoprtvwz]|travel)|u[agkmsyz]|v[aceginu]|w[fs]|y[etu]|z[amw])$@i') AND ($validate_DNS == TRUE) ? isDNS($domain) : TRUE;
}
else
{
return preg_match($domain, '@^[a-z0-9][a-z0-9\-]+[a-z0-9](\.[a-z]{2,4})+$@i') AND ($validate_DNS == TRUE) ? isDNS($domain) : TRUE;
}
}


function isDNS($domain)
{
if (function_exists('checkdnsrr'))
{
if (!checkdnsrr($domain, "MX")) // Linux: PHP 4.3.0 and higher & Windows: PHP 5.3.0 and higher
return FALSE;
}
elseif (function_exists("getmxrr"))
{
if (!getmxrr($domain, $mxhosts))
return FALSE;
}
return TRUE;
}

iner30
یک شنبه 22 مرداد 1391, 19:12 عصر
Warning: preg_match() [function.preg-match]: Delimiter must not be alphanumeric or backslash

مروبط به چیه؟
از خط چهارم خطا میگیره

iner30
سه شنبه 24 مرداد 1391, 23:32 عصر
دوستان دلیل این ارور رو نمیدونستن؟!!!

MMSHFE
جمعه 27 مرداد 1391, 08:34 صبح
دوست عزیز بهتره از @ در ابتدا و انتهای الگوی preg_match استفاده نکنید چون جزو کارکترهای alpha_numeric محسوب میشه (حرفی - عددی). پیشنهاد میکنم از # یا / برای اینکار استفاده کنید. خودتون ببینید PHP چه دردسری خواهد داشت تا کارکتر @ وسط رشته رو با Delimiter ابتدا و انتها اشتباه نگیره!
موفق باشید.