הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

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

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 14-05-06, 13:34   # 1
nevo
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 1,217

nevo לא מחובר  

[PHP - מאמר( מתחילים )] בעיית מספרים ושליפת נתונים!

זהו המאמר הראשון שלי, מקווה שתרחיבו את הידע שלכם איתו.
הרבה פעמים באתר שלך או אחר, משתמשים בשיטת GET כדי לשלוף רשומה מהמסד לדוגמא:
קוד:
page.php?Id=528 .
עכשיו אתרים לוקחים את ערך הId ואיתו שולפים את אותה רשומה מהמסד אבל עכשיו אם נחשוב על זה, נגיע למסקנה מאוד חכמה, שאם יש משתמש חכמולוג שישנה את הId ל
קוד:
page.php?Id=blah -
תיהיה לנו בעיה בשליפה מהמסד וזה יחזיר שגיאה או יותר חמור SQL INJECTION
לדוגמא
קוד:
page.php?Id='or'"
לחשוב כמה בעיות זה יכול לעשות, אני חשבתי על שיטה קטנה שיכולה בקלות לפתור את הבעיה והיא
INTVAL.
מהו INTVAL - זוהיא פונקציה שמחזירה את הערך המספרי ממחרוזת.
עכשיו אם לדוגמא יש לנו מחרוזת
קוד:
blah blah blah
אז הערך המספרי שלה הוא 0.
והינה הקוד:
PHP קוד:
$val = (isset( $_GET['Id']))?intval$_GET['Id']):0
עכשיו למה דווקא 0, הרי זה ברור שלא יכול להיות Id של 0 במסד!
אז בעזרת mysql_num_rows אפשר להוציא פלט שהרשומה לא נמצאה!

אני מקווה שמאמר קטן זה הרחיב לכם את המידע!
שלכם, נבו.

Last edited by nevo; 14-05-06 at 13:38..
  Reply With Quote
ישן 14-05-06, 13:59   # 2
wildeye
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: May 2006
הודעות: 535
שלח הודעה באמצעות ICO אל wildeye שלח הודעה באמצעות MSN אל wildeye

wildeye לא מחובר  

יפה על ההשקעה קבל ח"ח
  Reply With Quote
ישן 14-05-06, 14:04   # 3
Alon.R
הוסטסניון
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 2,435

Alon.R לא מחובר  

LOL
הרבה יותר פשוט להשתמש ב is_numeric - בדיקה אם מידע מסויים הוא מספר.
  Reply With Quote
ישן 14-05-06, 14:08   # 4
exciter
משתמש - היכל התהילה
 
exciter's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: סוף העולם, שמאלה
הודעות: 672

exciter לא מחובר  

לא פשוט יותר לבדוק כמה שורות חזרו לך ואז להגיב לפי זה ?
הרי גם אם יכניסו נגיד ID של 100 ועדיין לא הגעת למספר 100 אז יהיה תקלה.
אז עדיף לספור מספר שורות שנמצאו עם אותו ID, אם המספר שווה ל 1 שיציג את מה שבא לך, או לא, שיציג הודעת שגיאה.
__________________
  Reply With Quote
ישן 14-05-06, 14:11   # 5
nevo
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 1,217

nevo לא מחובר  

ציטוט:
נכתב במקור על ידי exciter
לא פשוט יותר לבדוק כמה שורות חזרו לך ואז להגיב לפי זה ?
הרי גם אם יכניסו נגיד ID של 100 ועדיין לא הגעת למספר 100 אז יהיה תקלה.
אז עדיף לספור מספר שורות שנמצאו עם אותו ID, אם המספר שווה ל 1 שיציג את מה שבא לך, או לא, שיציג הודעת שגיאה.
כנראה לא הבנת את המאמר תנסה לקרוא אותו שוב, ולזה ששתי הודעות מעלי, למה לדבר שטויות?
אם אתה משתמש בis_numeric
אתה צריך לכתוב כמה שורות קוד.
  Reply With Quote
ישן 14-05-06, 14:26   # 6
-VladK-
הוסטסניון
 
-VladK-'s Avatar
 
מיני פרופיל
תאריך הצטרפות: Apr 2006
גיל: 34
הודעות: 2,182

-VladK- לא מחובר  

מאמר נחמד! קבל ח"ח על ההשקעה
  Reply With Quote
ישן 14-05-06, 16:33   # 7
miniature
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
הודעות: 1,754

miniature לא מחובר  

אפשר לפתור חלק מבעיות ההזרקה עם הוספת סלאשים וכדו'.

ח"ח על המדריך.
__________________
יואב.

דרכים ליצירת קשר:

אימייל: thebigfire@walla.co.il
הודעה פרטית
  Reply With Quote
ישן 14-05-06, 16:51   # 8
בניה
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: נחושה
הודעות: 3,434

בניה לא מחובר  

ב"ה


אם רוצים לנטר נסיונות פריצה אז אפשר להשתמש בis_numeric אם לא אז אפשר פשוט לעשות:
קוד:
(int)$_GET['id']
זה פשוט מתעלם מהבעיות שרוצים לגרום לנו.
  Reply With Quote
ישן 14-05-06, 17:03   # 9
BlueNosE
אין כמו ב127.0.0.1
 
BlueNosE's Avatar
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
מיקום: כפ"ס
גיל: 32
הודעות: 4,086

BlueNosE לא מחובר  

מסכים עם בניה, אבל הכי פשוט-
is_int וזהו.
גם 4e34.3 זה num, אבל לא int..
וזה גם בודק אם הוא רימה
__________________
עומר,
admin [@] rely.co.il

בניית אתרים Rely

סלנג מילון סלנג utter
  Reply With Quote
ישן 14-05-06, 17:44   # 10
nevo
חבר וותיק
 
מיני פרופיל
תאריך הצטרפות: Oct 2005
גיל: 34
הודעות: 1,217

nevo לא מחובר  

ציטוט:
נכתב במקור על ידי BlueNosE
מסכים עם בניה, אבל הכי פשוט-
is_int וזהו.
גם 4e34.3 זה num, אבל לא int..
וזה גם בודק אם הוא רימה
כן אבל לא יכול להיות ID כזה במסד.
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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