10 באגים ב-PHP שכל מתחיל עושה

אתה כותב קוד. אתה מרענן את הדף. אתה רואה מסך לבן וריק.

זה קורה מכיוון ש-PHP נכשל בשקט כברירת מחדל. עליך לאלץ אותו להציג שגיאות במהלך הפיתוח.

הוסף את השורות הללו לראש הקבצים שלך:

ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);

אל תשתמש בזה בסביבת production. השתמש ביומני קבצים (file logs) במקום.

להלן 10 טעויות נפוצות וכיצד לתקן אותן:

  • חוסר בנקודה-פסיק (Semicolons) PHP מפסיקה לעבוד אם שוכחים נקודה-פסיק. זה גורם לעיתים קרובות לקריסה שקטה. תיקון: ודא שכל פקודה מסתיימת בנקודה-פסיק.

  • השוואה רפויה (Loose Comparison) (== לעומת ===) סימן השווה הכפול מבצע המרה אוטומטית של סוג הנתונים (type coercion). זה מוביל לשגיאות לוגיקה. תיקון: השתמש בשווה משווה משולש (===). הוא בודק גם את הערך וגם את סוג הנתונים.

  • משתנים לא מוגדרים (Undefined Variables) שימוש במשתנה לפני שהקצית לו ערך שובר את הלוגיקה שלך. תיקון: השתמש באופרטור ה-null coalescing. דוגמה: $name = $_GET['name'] ?? 'Guest';

  • טווח משתנים גלובליים (Global Variable Scope) פונקציות אינן יכולות לראות משתנים שנמצאים מחוץ להן. תיקון: העבר משתנים לפונקציות כפרמטרים.

  • SQL Injection בניית שאילתות באמצעות קלט משתמש מאפשרת להאקרים לגנוב נתונים. תיקון: השתמש ב-prepared statements עם placeholders (?).

  • Cross-Site Scripting (XSS) הדפסה ישירה של קלט משתמש מאפשרת לסקריפטים זדוניים לרוץ בדפדפנים. תיקון: עטוף את הפלט ב-htmlspecialchars().

  • כותרות כבר נשלחו (Headers Already Sent) אינך יכול לבצע הפניה (redirect) למשתמש אם כבר שלחת טקסט לדפדפן. אפילו רווח בודד עלול לגרום לשגיאה זו. תיקון: מקם קריאות header() ממש בראש הקובץ. השתמש תמיד ב-exit() לאחר הפניה.

  • מפתחות מערך לא מוגדרים (Undefined Array Keys) גישה למפתח בטופס שאינו קיים גורמת להתרעות (warnings). תיקון: השתמש באופרטור ה-null coalescing עבור כל נתוני ה-_POST וה-_GET.

  • Include לעומת Require include מציג רק התרעה אם קובץ חסר. הסקריפט ממשיך לרוץ וקורס מאוחר יותר. תיקון: השתמש ב-require_once עבור קבצים קריטיים כמו חיבורים למסד נתונים.

  • ערכי החזרה שלא נבדקו (Unchecked Return Values) פונקציות PHP רבות מחזירות false במקרה של כישלון. אם תשתמש בתוצאה הזו מיד, תקבל שגיאות נוספות. תיקון: בדוק אם התוצאה היא false לפני השימוש בה.

סיכום להצלחה:

  • הפעל דיווח שגיאות בסביבת פיתוח.
  • השתמש ב-=== עבור כל ההשוואות.
  • בצע ניקוי (Sanitize) לכל קלט משתמש.
  • בדוק ערכי החזרה.

מקור: https://dev.to/bikkisingh/top-10-php-bugs-every-beginner-makes-and-how-to-fix-them-1anh