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

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

AlonMi 12-09-08 17:46

שאלה ב-PHP
 
אני רוצה לטעון לרשימה רק "אימיילים מאושרים"
כלומר -
אני מריץ פונקציה שמאמתת כתובות אימייל

קוד:

function is_email($email)
{
  if(eregi("^[a-z0-9._-]+@+[a-z0-9._-]+.+[a-z]{2,3}$", $email))
  {
  return true;
  }
  else
  {
  return FALSE;
  }
}

אחרי זה אני רוצה להעלות רק את הכתובות שאומתו, ניסיתי לקבוע WHERE אבל זה לא עבד...

קוד:

      $myselect=mysql_query("SELECT `email`,`username`,`id` FROM `new_users` ORDER BY `id` DESC");
מה אני עושה?

mayden 12-09-08 17:53

כלומר למסד אתה מכניס את כל הכתובות ללא קשר אם הם מאושרות או לא?

אתה עושה במסד עוד רשומה של authorized:
1 = מאושר, 0 = לא מאושר, 2 = בהמתנה (או משהו בסגנון)

ועושה WHERE בSELECT... לפי הצורך.

AlonMi 12-09-08 18:05

כרגע קיימות במסד 200 אלף כתובות אימייל,
המטרה שלי היא להציג את כל האימיילים שמאומתים.

יש דרך לעשות את זה ללא שדה נוסף אלא עם הנתונים הקיימים והרצת פונקציה שבעצם תבדוק את האימות?

intercooler3819 12-09-08 19:19

אממ בגרסה הכי עדכנית של MYSQL או לפחות מגרסה 5 יש אפשרות להשתמש בפונקציה regexp לשליפת תוצאות שמתאימות לתבנית ביטוי רגולרי (:

תגגל קצת עשיתי את זה הרבה זה חמדמד ביותר

AlonMi 13-09-08 08:42

תודה, אבל יש מישהו שיכול להיות יותר ספציפי? אני דיי גרוע בביטויים רגולריים...

intercooler3819 13-09-08 16:26

אממ אם אפשר תציג כאן את המבנה של הטבלה שלך (את השאילתה שאיתה כתבת אותה)

כשיהיה לי זמן אני אכתוב לך שאילתה לשליפת כל המיילים התקינים

AlonMi 13-09-08 16:45

קודם כל תודה,

דבר שני, נתתי למעלה את השאילתה...
המבנה של הטבלה הוא בסיסי - ID, USERNAME, PASSWORD, EMAIL ועוד כמה...

AlmogBaku 13-09-08 18:44

האם אתה רוצה להציג את כל הכתובות המורשות, או לבדוק אם כתובת ספציפית?

דבר נוסף, האם יש שדה מסויים שמכיל ערך מסויים לגבי כתובת שאומתה?
למשל:
PHP קוד:

access='y' 


intercooler3819 13-09-08 19:01

ציטוט:

SELECT * FROM `new_users` WHERE testcolumn REGEXP '^[a-zA-Z0-9\.\_\-]+\@[a-zA-Z0-9\.\_\-]+\.[a-zA-Z\.]{1,5}$'
תריץ תגיד לי מה תקבל
אני לא ממש בקיא בESCAPING של MYSQL בנוגע לאופרטור REGEXP
אבל זה אמור לעבוד (לפחות בתאוריה D:)

AlonMi 13-09-08 21:04

ציטוט:

נכתב במקור על ידי nitsanbn (פרסם 667267)
תריץ תגיד לי מה תקבל
אני לא ממש בקיא בESCAPING של MYSQL בנוגע לאופרטור REGEXP
אבל זה אמור לעבוד (לפחות בתאוריה D:)

וואו!! גדול! תודה רבה! זה עובד!!!
רק שיניתי את הקטע הרגולרי שנתת לי ל-
^[a-z0-9._-]+@+[a-z0-9._-]+.+[a-z]{2,3}$
כי הוא פשוט נותן לי תוצאות רלוונטיות יותר, שהשני מפספס.

intercooler3819 13-09-08 22:30

חח תשחק עם זה
רק תזהר - במידה ואתה חוזר לPHP4 - תקבל הרבה תקלות

בנוסף

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

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

AlonMi 13-09-08 23:19

ציטוט:

נכתב במקור על ידי nitsanbn (פרסם 667346)
חח תשחק עם זה
רק תזהר - במידה ואתה חוזר לPHP4 - תקבל הרבה תקלות

בנוסף

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

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

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

תודה רבה שוב, לילה טוב


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

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