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

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

Daniel 19-03-09 20:31

ציטוט:

נכתב במקור על ידי daMn (פרסם 703857)
כי הרעיון שאתה רוצה שייכנס למסד ערך שהוא מספרי וmysql_real_esacape_string לא מונע מלהכניס סטרינג.

רגע רגע רגע, אנחנו מדברים כאן על SELECT או על UPDATE/INSERT ודומיהם?

daMn 19-03-09 20:50

ציטוט:

נכתב במקור על ידי MasterT (פרסם 703860)
רגע רגע רגע, אנחנו מדברים כאן על SELECT או על UPDATE/INSERT ודומיהם?

זה לא משנה.
לערך מספרי משתמשים בהמרה לערך מספרי לפני שימוש כלשהו בשאילתא.

Daniel 19-03-09 21:28

ציטוט:

נכתב במקור על ידי daMn (פרסם 703863)
זה לא משנה.
לערך מספרי משתמשים בהמרה לערך מספרי לפני שימוש כלשהו בשאילתא.

אפשר לדעת למה לפי דעתך הסיבה? יש כמובן את העניין של המשאבים, אבל אני לא רואה בה שום ערך נוסף בזה שלא נדבר שאפשר גם להתחיל להעביר כל הגדרה על סטרינג ל-' במקום " כי זה יחסוך לי עוד 0.00000001 שניות.

daMn 19-03-09 21:37

ציטוט:

נכתב במקור על ידי MasterT (פרסם 703871)
אפשר לדעת למה לפי דעתך הסיבה? יש כמובן את העניין של המשאבים, אבל אני לא רואה בה שום ערך נוסף בזה שלא נדבר שאפשר גם להתחיל להעביר כל הגדרה על סטרינג ל-' במקום " כי זה יחסוך לי עוד 0.00000001 שניות.

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

Daniel 19-03-09 22:22

ציטוט:

נכתב במקור על ידי daMn (פרסם 703874)
אם אתה אוהב לדפוק את הראש בקיר, תעשה את זה.
למה אתה חושב שPHP בנו את הפונקציות המרה למספר, למה להשתמש בפונקצית סינון סטרינג שהקלט הוא בכלל integer.
עזוב כרגע יעילות ומשאבים שהם לא לטובתך, יש פונקציות שבנויות לinteger ויש לstring וכו', בזמן שאתה לא בטוח מה הקלט אתה צודק, אבל אם אתה רוצה שהקלט יהיה מספר אז הוא יהיה מספר, נקודה.

אני מרגיש הרבה יותר בטוח כשיש לי קלאס שמיועד אך ורק לקבלת הפלט, העיבוד שלו, ושמירתו כמשתנה חדש $this->input, ויש לי עוד קלאס שמיועד לפעולות במסד - כאשר אני לא משתמש ב-$DB->query, אני משתמש רק ב-$DB->insert(array("name" => "value"), "table"); כאשר כמובן יש עוד אפשרויות לדברים יותר מתקדמים.

ואני יודע שאין סיכוי שמשהו רע יכנס - אני יודע גם ששום דבר רע לא יצא. שיכניסו לא רק אותיות, שיכניסו הכל - מה שהם רוצים. כל עוד זה לא עובד את ה-MAX QUERY SIZE - שיהיה להם בהצלחה. זה עבר? חבל, לא נכנס. ככה בעיניים עצומות אני יודע שאין שום בעייה.

איפה נוצרת הבעייה? כשאני מתעסק עם קודי מקור של אתרים. אז גם אז צריך לדעת מה לעשות. אגב, אם כבר מעלים את כל הדברים האלה,
http://www.nabble.com/The-PHP-filter...d22508904.html
משהו מעניין.

daMn 19-03-09 22:29

ציטוט:

נכתב במקור על ידי MasterT (פרסם 703880)
אני מרגיש הרבה יותר בטוח כשיש לי קלאס שמיועד אך ורק לקבלת הפלט, העיבוד שלו, ושמירתו כמשתנה חדש $this->input, ויש לי עוד קלאס שמיועד לפעולות במסד - כאשר אני לא משתמש ב-$DB->query, אני משתמש רק ב-$DB->insert(array("name" => "value"), "table"); כאשר כמובן יש עוד אפשרויות לדברים יותר מתקדמים.

ואני יודע שאין סיכוי שמשהו רע יכנס - אני יודע גם ששום דבר רע לא יצא. שיכניסו לא רק אותיות, שיכניסו הכל - מה שהם רוצים. כל עוד זה לא עובד את ה-MAX QUERY SIZE - שיהיה להם בהצלחה. זה עבר? חבל, לא נכנס. ככה בעיניים עצומות אני יודע שאין שום בעייה.

איפה נוצרת הבעייה? כשאני מתעסק עם קודי מקור של אתרים. אז גם אז צריך לדעת מה לעשות. אגב, אם כבר מעלים את כל הדברים האלה,
http://www.nabble.com/The-PHP-filter...d22508904.html
משהו מעניין.

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

$user_insert_data = array(
    
"gid" => intval($core->post['group']),
    
"fullname" => $db->escape_string($core->post['fullname']),
    
"username" => $db->escape_string($core->post['username']),
    
"email" => $db->escape_string($core->post['email']),
    
"password" => salt_password($core->post['password']),
    
"reg_time" => TIME_NOW
); 


Daniel 19-03-09 22:51

ציטוט:

נכתב במקור על ידי daMn (פרסם 703881)
אתה לא היחיד שעובד עם קלאס לעיבוד קלט, אבל כמו שהבנתי ממך המחלקה שלך בעצם מפעילה סינון על כל קלט לא משנה מה הוא, וזאת שיטת עבודה לא נכונה לטווח הארוך אם תרצה דווקא איזשהו קלט שלא יעבור סינון.
הכוונה שלי היא לעבוד ככה:
PHP קוד:

$user_insert_data = array(
    
"gid" => intval($core->post['group']),
    
"fullname" => $db->escape_string($core->post['fullname']),
    
"username" => $db->escape_string($core->post['username']),
    
"email" => $db->escape_string($core->post['email']),
    
"password" => salt_password($core->post['password']),
    
"reg_time" => TIME_NOW
); 


אני מסנן על קל כלט לא משנה מה הוא. אם אני ארצה קלט שלא יעבור סינון, אני אגש אליו בעזרת $input->raw("value"); נכון שישמר עותק נוסף של המשתנה בתוך המחלקה $input, אני לא רואה בזה שום פסול.


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

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