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

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

Helps 09-05-11 18:28

בעיה בזיהוי ID
 
ערב טוב,

יש לי בעיה קטנה. אני עובד מול שרת WAMP ואני בונה מערכת שמטרתה להציג תקציר של המאמר ומאמר מלאה. את הID הגלובאלי אני השוואתי לID רגיל בצורה הבאה:
קוד:

if (isset($_GET['id'])) {$id = $_GET['id'];}
לאחר מכן הוצאתי את הנתונים מן הטבלה:
קוד:

$result = mysql_query ("SELECT * FROM article WHERE id='$id'",$db);
וברגע שאני נכנס לדף יש לי שגיאה:
קוד:

Notice: Undefined variable: id in C:\wamp\www\mysite\bigarticle.php on line 6
כאילו הוא לא מצליח לזהות את הID. במה יכולה להיות הבעיה? האם הבעיה היא בWAMP? או במשהו שעשיתי לא נכון?

BlueNosE 09-05-11 18:42

מן הסתם זה אומר שהIF לא תפס. תבדוק אם שלחת בGET ואם שלחת תבדוק איפה שמת את הIF.
האם אתה עובד בScope הנכון?

shushu 09-05-11 19:24

קודם כל תשים את השאילתה בתוך התנאי שלך, כי אם הוא לא קיים אז אתה מריץ שאילתה שה-ID שווה לכלום

דבר שני, מה יש בשורה 6 או בשורה שלפניה מה כתוב בקוד...?

Helps 09-05-11 22:10

ציטוט:

נכתב במקור על ידי BlueNosE (פרסם 803894)
מן הסתם זה אומר שהIF לא תפס. תבדוק אם שלחת בGET ואם שלחת תבדוק איפה שמת את הIF.
האם אתה עובד בScope הנכון?

לא אני לא עובד שם..

ציטוט:

נכתב במקור על ידי shushu (פרסם 803900)
קודם כל תשים את השאילתה בתוך התנאי שלך, כי אם הוא לא קיים אז אתה מריץ שאילתה שה-ID שווה לכלום

דבר שני, מה יש בשורה 6 או בשורה שלפניה מה כתוב בקוד...?

תודה על העזרה אך פטרתי את הבעיה.

הבעיה הייתה בקובץ PHP.INI בGLOBAL REGISTER. ניתן לנעול את האשכול!

בניה 10-05-11 09:15

ציטוט:

נכתב במקור על ידי Helps (פרסם 803905)
לא אני לא עובד שם..



תודה על העזרה אך פטרתי את הבעיה.

הבעיה הייתה בקובץ PHP.INI בGLOBAL REGISTER. ניתן לנעול את האשכול!

מה הייתה הבעיה? ש REGISTER GLOBAL היה מכובה?
זו לא בעיה ככה זה צריך להיות.
http://php.net/manual/en/security.globals.php
תראה את ה Warning שיש למעלה...

Ender 10-05-11 10:57

אני מניח השורה בה אתה מוציא את הנתונים מהטבלה היא בתוך פונקציה.

אם ככה, עדיף להעביר את ה- ID לפונקציה בתור פרמטר מאשר להפעיל REGISTER_GLOBALS

וכמו שציינו מעלי, תעשה בדיקה שקיים ערך כלשהו ב- id לפני שאתה בכלל מפעיל את השאילתה.

ובנוסף, כדי שלא יהיו לך בעיות של SQL Injection, תסנן את ה- ID לפני שהוא נכנס לשאילתה.

אם ה- ID הוא ערך מספרי, תסנן אותו באמצעות הפונקציה intval,
אם הוא לא ערך מספרי תסנן אותו באמצעות mysql_real_escape_string


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

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