איך לבדוק את פורמט האימייל בPHP - תיכנות ובניית אתרים בעזרת PHP

מדור תיכנות ובניית אתרים בעזרת PHP

הוסף למועדפים | הפוך לאתר הבית
מדור ברשת



רוצה לעזור?

אם אתה מעוניין לעזור לנו בפיתוח האתר, באפשרותך לשלוח מאמר\מדריך אל רשימות המאמרים שלנו, תודה על שיתוף הפעולה, הנהלת האתר.


אתרים מומלצים

מעוניינים לשחק משחקים ברשת , משחקי פלאש ועוד? בקרו באתרי משחקים הבאים: גיימאקסטרה משחקים או בבלוג המשחקים: בלוג משחקים

דף ראשי -> תכנות ובניית אתרים -> תיכנות ובניית אתרים בעזרת PHP -> איך לבדוק את פורמט האימייל בPHP
איך לבדוק את פורמט האימייל בPHP
במדריך הזה אנו נלמד כיצד אפשר לבדוק אם המשתמש לדוגמא בהרשמה או בשליחת מייל דרך טופס אכן כתב אימייל בפורמט אמיתי, אבל זה לא הכול - כי תמיד אפשר לחרבש אימייל מזוייף לכן אנו נאלץ את המשתמש לכתוב אימייל אמיתי בכך שגם נבדוק אם השרת של המייל קיים. אומנם עדיין אפשר לכתוב סתם מייל מזוייף אחר אבל זה יותר טוב.

נתחיל בכך שניצור פונקציה שתכיל את הקוד שלנו, כך לא נצטרך כל פעם מחדש לכתוב את הקוד אלא רק פעם אחת לכתוב אותו ולקרא לפונקציה כשנרצה.

לפונקציה נקראה

קוד

function checkEmail ( $email )
{

//code gose here

}



עכשיו הקוד הבא יכנס בתוך הפונקיה איפה שכתוב "//code ..".

בעזרת הקוד הבא אנו רק מוודאים שמה שהמשתמש הכניס - "זה לא רעל.." - סך הכול קצת אבטחה.

קוד

$email = htmlspecialchars ( stripslashes ( strip_tags ( $email ) ) , ENT_QUOTES ) ;



עכשיו אנחנו נשתמש בפונקציה eregi של ביטויים רגולים כדי לוודא את פורמט האימייל. זה בודק בצורה הבאה: קודם כל אותיות ומספרים, אחר כך שטרודל @ אחר כך עוד אותיות וסמפרים אחר כך נקודה ואחר כך עוד אותיות.

זה ביטוי הרגוליים שאנו צריכים להשתמש בתוך הפונקציה eregi כדי לבדוק את פורמט האימייל

קוד

[a-z<?php0-9]@[a-z<?php0-9].[a-z]



וככה הקוד יראה במלואו:

קוד

if ( eregi ( ' [ a-z<?php0-9 ] @ [ a-z<?php0-9 ] . [ a-z ] ', $email ) ) // הפורמט יהיה כזה: something@something.something
{
// more code here
}
else
{
return false;
}



יפה, עכשיו בדקו את פורמט האימייל שהמשתמש הקליד, אבל מה קורה אם הוא הקליד אימייל כזה: blabl@lola.haha אז בעצם לא עשינו פה הרבה, מכוון שהפורמט נכון אבל האימייל הזה מפוברק.

לכן אנו צריכים לבדוק את קיומו של הדומיין בעזרת הפונקציה fsockopen ובמידה והדומיין לא קיים נאמר למשתמש שהוא חוצפן! (:

הקוד יראה כך:
קוד

$domain = explode ( '@', $email ) ;
if ( @fsockopen ( $domain [ 1 ] , 80, $errno, $errstr, 3 ) ) //בודק אם אפשר ליצור קשר עם הסרבר עם פורט 80
{
return true;
}
else
{
return false;
}




השימוש בפונקציה explode נועדה לפרק את מה שהמשתמש הקליד ל-2 חלקים, אחד לפני ה-@ ואחרי ה @, זה נועד כי מה שאחרי השטרודל זה בעצם הדומיין שאליו אנו מנסים לתקשר.
שימו לב שלפני הפונקציה fsockopen יש שטרודל @ זה כדי למנוע הצגת שגיאה של הפונקציה, כי אם ההתחברות תכשל אז תוצג שגיאה ואנחנו לא רוצים שהמשתמש יראה את השגיאה לכן נחסום אותה בעזרת @ לפני הפונקציה (זה גם טיפ אבטחה טוב - למנוע הצגת שגיאות באתרכם).

בקוד למעלה אנו בודקים אם אפשר ליצור קשר עם הדומיין שהמשתמש הקליד עם פורט 80. במידה והצלחנו ליצור איתו קשר - משמע שהאימייל תקין גם מהבחינה הזו.

זהו זה - עבודתך נגמרה! עכשיו יש להשים את כל הקודים כאן ביחד כפי שתראה בקוד הבא ונשמור את הקובץ בסיומת PHP ונקרא לו check_email.php.

קוד


function checkEmail ( $email )
{
$email = htmlspecialchars ( stripslashes ( strip_tags ( $email ) ) , ENT_QUOTES ) ;
if ( eregi ( ' [ a-z<?php0-9 ] @ [ a-z<?php0-9 ] . [ a-z ] ', $email ) )
{

$domain = explode ( '@', $email ) ;

if ( @fsockopen ( $domain [ 1 ] , 80, $errno, $errstr, 3 ) )
{

return true;

}
else
{

return false;

}


}
else
{

return false;

}

}



זוהי אחת הדרכים הכי מתוחכמות שיש לבדיקת תקינות המייל, כמובן יש עוד שיטה אבל היא מעצבנת משתמשים רבים (וזה "אישור אימייל בהרשמה" לתת למשתמש אימייל עם קישור שיאשר את החשבון שלו - וזו דרך מאוד מעצבנת להירשם לאתר\פורום).

עכשיו כל שעליכם לעשות זה לייבא את הקובץ check_mail.php לאנשהו לקרוא לפונקציה בצורה הבאה:

קוד

checkEmail ("mail@bla.com");



ובצורה הזו לבדוק אם האימייל קיים או לא.

הערה: שים לב שבדיקת הפורמט של האימייל חלה רק על נקודה אחת זאת אומרת שאולי בדיקת הפורמט של האימייל הזה לא יתאים לדומיינים ישראלים.
דפים נוספים בקטגוריה תיכנות ובניית אתרים בעזרת PHP
קבלת נתונים מטפסים ואבטחה
ניווט אתר בעזרת include ו-switch ואבטחה
שימוש ב- sessions
עיזרו לנו
אהבת את המדריך? הצבע עבורנו וקדם את האתר שלנו!