שלח תשובה

זירת השאלות

1391
צפיות
6
תשובות

סימנים לא נכנסים לבסיס נתונים

,‏ 18 במרץ, 2013

אני מכין צ'אט והסימנים שמצאתי שלא נכנסים לבסיס נתונים הם #$%^&*)(

6 תשובות

  1. idan5x הגיב:

    אני מניח שאתה משתמש בPHP, אך תקן אותי אם אני טועה…
    נסה להשתמש בפקודה mysql_real_escape_string()

    דוגמא קטנה העושה שימוש בפקודה זו:
    http://pastebin.com/BEUnMVhK

  2. דרור טל הגיב:

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

  3. idan5x הגיב:

    אני לא בטוח שהבנתי מה אתה מנסה לעשות… מה השימוש של מסד הנתונים כחלק מהצ'אט? הוא מאחסן את ההיסטוריה של הצ'אט? זה רשימה של מילים אסורות?

    אם אתה מנסה להכניס משפט למסד והסימנים הללו אינם נקלטים עליך לעשות כך:
    את המשפט המתקבל שמור במשתנה. כשאתה שולח query למסד דרך mysql_query עליך לעשות כך:
    http://pastebin.com/4UerpgTP

    מה שהפקודה עושה:
    http://www.w3schools.com/php/func_mysql_real_escape_string.asp

  4. idan5x הגיב:

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

  5. idan5x הגיב:

    השימוש בפקודה הוא שפתר את התקלה?

שלח תשובה