05-03-13, 19:51 | # 1 |
חבר מתקדם
|
בדיקת תקינות מייל
ניסתי להשתמש בפונק' הזאת:
קוד:
function email($email) { if(strpos($email, '@') === false) return false; $host = explode("@",$email); $mxarr = array(); $regexp = '/^[-!#$%&\'*+\\.\/0-9=?A-Z^_`{|}~]+@([-0-9A-Z]+\.)+([0-9A-Z]){2,4}$/i'; if (!preg_match($regexp, $email)) return false; if (function_exists('getmxrr') && !getmxrr($host[1],$mxarr)) return false; return true; } Last edited by AlonElk; 05-03-13 at 20:07.. |
05-03-13, 20:13 | # 2 |
חבר וותיק
|
2 אפשריות לרשותך
filter_var - פונקצייה מובנת בPHP שעוזרת לאמת מחרוזות מסויימות. regex - אתה בטח יודע מה זה. filter_var: קוד:
if( !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) ) { echo "אימייל שגוי"; } קוד:
if( !preg_match("/^[a-zA-Z0-9-_]{3,50}@[a-zA-Z0-9_-\.]+\.[a-zA-Z]{2,5}$/", $_POST['email']) ) { echo "אימייל שגוי"; } |
05-03-13, 20:22 | # 3 |
חבר מתקדם
|
תודה
|
08-03-13, 11:00 | # 5 |
חבר בקהילה
|
בחיים אל תשתמש בREGEX כדי לבדוק תקינות מייל, מתי שאפשר לחסוך בזה שימוש - חוסכים.
חוץ מזה שהREGEX שהרוב כותבים (אם אפשר לקרוא לזה "הרוב" ולא כולם) לא מכיל את כל הדברים שמעידים על תקינות מייל כמו בfilter_var. תשתמש בfilter_var. וכמו שאדיר אמר... אם אין לך אפשרות, תפנה אל האחסון שיטפלו בזה, זה ממש בושה אחסון שלא מריץ php5.2+... --- דרך אגב, הפונקציה שנתת לא בודקת אם המייל עצמו תקין, אלה אם הדומיין המשוייך תקין. זאת אומרת, גם מייל כזה יעבור: asasas321212121121cvxv@gmail.com על אף שהוא לא באמת קיים. לעומת מייל פשוט שכזה שלא יכול לעבור כי אין דומיין בשם gmailxxxx3.co.il user@gmailxxxx3.co.il Last edited by Rebuilt; 08-03-13 at 11:02.. |
חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים) | |
|
|