PDA

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



idocsidocs
جمعه 26 شهریور 1389, 13:33 عصر
سلام

من یه تابع احتیاج دارم که صحیح بودن فرمت آدرسهای ایمیلی که کاربرها وارد فرم می کنن رو تشخیص بده.

اگر تابع یا کدی ارسال کردید، در صورت امکان در مورد کد ارسالی و نحوه کارکدن کد توضیح بدهید.

shahriyar3
جمعه 26 شهریور 1389, 14:18 عصر
function check_email_address($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; }
اين هم براي گرفتن خروجي



if (check_email_address($email))
{
echo $email . ' is a valid email address.';
}
else
{
echo $email . ' is not a valid email address.';
}

امیـرحسین
شنبه 27 شهریور 1389, 23:17 عصر
خود PHP توابعی برای این کار داره البته در نسخه 5.2.0 به بعد به نام filter:
$validEmail = filter_var('bob@example.com', FILTER_VALIDATE_EMAIL);

filter_var (http://ir.php.net/manual/en/function.filter-var.php)
Data Filtering (http://ir.php.net/manual/en/book.filter.php)

tehro0n
یک شنبه 28 شهریور 1389, 15:13 عصر
خود PHP توابعی برای این کار داره البته در نسخه 5.2.0 به بعد به نام filter:
$validEmail = filter_var('bob@example.com', FILTER_VALIDATE_EMAIL);

filter_var (http://ir.php.net/manual/en/function.filter-var.php)
Data Filtering (http://ir.php.net/manual/en/book.filter.php)

$res = var_dump(filter_var('http:/we', FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED));
echo $res;



The above example will output:
string(9) "http://we"

kazemproger
دوشنبه 29 شهریور 1389, 00:11 صبح
یه روش خیلی ساده و کار راه انداز بدون دخالت php :


var un = document.getElementById("txtun").value;
if(un == "")
return false;
var re = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
if (!re.test(un))
{
alert(آدرس ایمیل نامعتبر است");
return false;
}


:لبخندساده:

Arman_gh
دوشنبه 29 شهریور 1389, 00:17 صبح
خب اگر جاوا اسکریپت خاموش بود چی؟ مشکل اینجاست.

binyaft
دوشنبه 29 شهریور 1389, 11:59 صبح
حالا اگر روشن هم باشه بهش اعتمادی نیست

shahriyar3
دوشنبه 29 شهریور 1389, 20:57 عصر
ميشه مرور گر و حساس كرد به اجراي اسكريپت هاي اضافي تو صفحه
كه باعث ميشه قبل از اجرا اجازه بگيره
بنا براين منم با دوستان موافقم كه js اصلا راه مطمئني نيست

mohmadd
سه شنبه 30 شهریور 1389, 03:03 صبح
تو بسیاری از سایت ها اول به وسیله جاوااسکریپت چک میشه و بعد در php چک میشه که کاربر اطلاعات غلط نفرسته .
قابل اطمینان تره اگه خودتون regex بنویسید.

در مورد gmail چون قسمت اول ایمیل (نام ایمیل) نمیتونه شامل نقطه باشه.
یعنی دو ایمیل زیر با هم برابر هستن:
app@gmail.com
a.p.p@gmail.com

پس باید نقطه رو از اول نام ایمیل حذف کرد و بعد باید بررسی بشه که ایا ایمیل در دیتابیس وجود داره یا خیر .
تا بعد اجازه بدیم کاربران ثبت نام کنند.
مثال کامل خواستید بگید .

sama01
سه شنبه 30 شهریور 1389, 11:56 صبح
البته از javascript نباید به عنوان اعتبار سنجی استفاده شود. تنها می‌توان از آن برای اطلاع دادن به کاربر معمولی در خصوص اشتباه در ورود داده‌ها استفاده کرد.
آن هم صرفا برای آن که نخواهیم فشار اضافی به سرور وارد کنیم.

از نظر امنیتی به هیچ وجه نباید روی اعتبارسنجی سمت کاربر حساب کرد.