שלח תשובה

זירת השאלות

460
צפיות
13
תשובות

בעיה עם $_GET ב- PHP

,‏ 19 באפריל, 2005

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

Notice: Undefined index: sql in F:serverwwwrootindex.php on line 14

השורה שבה מתרחשת השגיאה היא:

$x=$_GET[‘sql’];

כיצד ניתן למנוע את השגיאה?

תודה מראש!

תגיות:

13 תשובות

  1. jonatan44 הגיב:

    ——->


    <?php
    if(isset($_GET["id"]))
    {
    echo $_GET["id"];
    }
    else
    {
    echo "No GET here.";
    }
    ?>

  2. בעיה ב- PHP עם mysql_connect
    הפונקציה mysql_connect משום מה לא מוכרת ע"י PHP.
    הנה השגיאה:

    Fatal error: Call to undefined function mysql_connect() in F:phplearnindex.php on line 15

    הנה שורת הקוד:

    mysql_connect (‘127.0.0.1’, ‘root’, ‘111’);

    כיצד ניתן לפתור את הבעיה?

    תודה מראש!

  3. cosmo הגיב:

    PHP ופונקציות ה-MySQL
    כדי לאפשר ל-PHP להשתמש בפונקציות ה-MySQL אתה צריך לעשות כמה דברים.
    ההוראות הן כדלקמן (בהנחה שהורדת את כל חבילת הZIP של PHP).

    1. תאתר את קובץ php.ini (אם בצעת התקנה על IIS הוא אמור להיות בתיקיית Windows שלך).
    2. תעתיק את הקובץ  libmysql.dll לתיקיית Windowssystem32
    3. בתוך הקובץ  php.ini תמצא את השורה בה תגדיר את התיקייה בה נמצאים ה"אקסטנשנים" שלך (לדוגמא:  extension_dir=C:php5ext)
    4. תמצא את השורה בה כתוב extension=php_mysql.dll ותוריד את הסימון  5. תאתחל מחדש את שרת הweb שלך (Apache או IIS, מה שאתה מריץ)

    בהצלחה!

  4. בעיה עם שאילתה בעברית ב- MySQL
    אני מריץ את שאילתת הוספה באמצעות PHP:

    $sql="insert into tbl_users(username,password) values(‘" . $_POST[‘username’] . "’,’" . $_POST[‘password’] . "’)";
        mysql_query($sql);

    השאילתה עובדת ללא שגיאות במהלך הריצה, אך משום מה הנתונים של העברית נשמרים כסימני שאלה.
    חשוב לציין כי מיד לאחר ההתקנה של המסד MySQL 4.1.11 הגדרתי בו קידוד hebrew.

    אשמח לקבל פיתרון בנושא.
    תודה מראש!

  5. jonatan44 הגיב:

    ———>
    אם אני זוכר נכון, גירסה 4.1.X עובדת אם UNICODE, לכן אתה צריך לישמור/לישלוף את הנתונים כ UNICODE.
    בכל מיקרה, הקידוד שבו אתה שלוף את הנתונים צריך להיות זהה לקידוד שבו אתה מכניס את הנתונים.
    בהצלחה!

  6. Admini הגיב:

    ראה הוזהרת. XSS
    הקוד שהעלת (בלי בדיקת קלט) עלול להיות מקור לצרות.

  7. jonatan44 הגיב:

    חסימת XSS:
    ב PHP יש פונקציה מובנה להפיכת תווים מיוחדים שעולולים ליגרום בעיות כגון &",><?’ ועוד….
    היא ניקרא htmlspecialchars
    http://il.php.net/manual/en/function.htmlspecialchars.php

  8. מה כל-כך בעייתי בקוד שהעלתי?
    זו בסך הכל השמה של מחרוזת שהמשתמש הקליד מטופס לתוך משתנה. מה כל-כך בעייתי בקוד כזה? ומה זה ה- XSS הזה בדיוק? אפשר מידע מפורט יותר?

    תודה!

  9. jonatan44 הגיב:

    אתה מכניס נתונים ל DB
    מבלי להפעוך תווי html, כלומר מישהוא יכול להכניס תגי html לקוד וכאשר תכניס אותם למסד הם יפריעו לתצוגה.
    אם אתה לא הופך אותם בהכנסה, תהפוך אותם בשליפה.

  10. בדרך כלל אני מחליף אותם בהצגה
    כשבניתי אפליקציות ב- ASP תמיד תמיד הקפדתי על הפעלת הפונקציה server.htmlencode על כל מחרוזת שאני מציג ללקוח.

  11. ניר טייב הגיב:

    בזבוז
    אתה מחליף גם הרבה תווים שלא עושים שום בעיה.

שלח תשובה

חדש! אחסון אתרים של וובמאסטר

שירות אחסון אתרים
המקצועי של וובמאסטר!

מומחים באירוח אתרי
WordPress, Joomla, Drupal

  • שרתי לינוקס עם CloudLinux, LiteSpeed
  • 1GB דיסק SSD, 10GB תעבורה חודשית
  • ממשק ניהול cPanel, תעודת SSL חינם

עכשיו במחיר היכרות:
רק 420 ש"ח לשנה!