הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   בדיקת תקינות מייל (https://hosts.co.il/forums/showthread.php?t=102878)

AlonElk 05-03-13 19:51

בדיקת תקינות מייל
 
ניסתי להשתמש בפונק' הזאת:
קוד:

        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;
                                                                }

אבל משום מה לא הצלחתי להבין איך אני משתמש בה לצרכים שלי (זה קולט בPOST את המייל מהמתמש, עובר בפונק' ואם המייל תקין מחזיר תשובה X, אם לא תקין מחזיר תשובה Y)

Haimz 05-03-13 20:13

2 אפשריות לרשותך :)

filter_var - פונקצייה מובנת בPHP שעוזרת לאמת מחרוזות מסויימות.
regex - אתה בטח יודע מה זה.

filter_var:
קוד:

if( !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) )
{
        echo "אימייל שגוי";
}

או בregex: (קוד שרשמתי עכשיו, אני לא בדקתי)
קוד:

if( !preg_match("/^[a-zA-Z0-9-_]{3,50}@[a-zA-Z0-9_-\.]+\.[a-zA-Z]{2,5}$/", $_POST['email']) )
{
        echo "אימייל שגוי";
}


AlonElk 05-03-13 20:22

תודה :)

אדיר 05-03-13 20:40

בהמשך לתגובה של חיים:

filter_var קיימת ב php מגרסא 5.2 ומעלה.
אם יש לך - מצויין, אין שום בעיה.
אם אין לך - תנזוף בחברת האחסון לשדרג וקרא שוב את הסעיף הקודם :).

Rebuilt 08-03-13 11:00

בחיים אל תשתמש בREGEX כדי לבדוק תקינות מייל, מתי שאפשר לחסוך בזה שימוש - חוסכים.
חוץ מזה שהREGEX שהרוב כותבים (אם אפשר לקרוא לזה "הרוב" ולא כולם) לא מכיל את כל הדברים שמעידים על תקינות מייל כמו בfilter_var.
תשתמש בfilter_var. וכמו שאדיר אמר... אם אין לך אפשרות, תפנה אל האחסון שיטפלו בזה, זה ממש בושה אחסון שלא מריץ php5.2+...

---
דרך אגב, הפונקציה שנתת לא בודקת אם המייל עצמו תקין, אלה אם הדומיין המשוייך תקין.
זאת אומרת, גם מייל כזה יעבור:
asasas321212121121cvxv@gmail.com
על אף שהוא לא באמת קיים.

לעומת מייל פשוט שכזה שלא יכול לעבור כי אין דומיין בשם gmailxxxx3.co.il
user@gmailxxxx3.co.il


כל הזמנים הם GMT +2. הזמן כעת הוא 06:12.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ