𝗧𝗼𝗽 𝟭𝟬 𝗣𝗛𝗣 𝗕𝘂𝗴𝘀 𝗘𝘃𝗲𝗿𝘆 𝗕𝗲𝗴𝗶𝗻𝗻𝗲𝗿 𝗠𝗮𝗸𝗲𝘀

ನೀವು ಕೋಡ್ ಬರೆಯುತ್ತೀರಿ. ನೀವು ಪುಟವನ್ನು ರಿಫ್ರೆಶ್ ಮಾಡುತ್ತೀರಿ. ನಿಮಗೆ ಕೇವಲ ಬಿಳಿ ಪರದೆ ಕಾಣಿಸುತ್ತದೆ.

ಇದು PHP ಡಿಫಾಲ್ಟ್ ಆಗಿ ಯಾವುದೇ ಎಚ್ಚರಿಕೆ ನೀಡದೆ ವಿಫಲವಾಗುವುದರಿಂದ ಸಂಭವಿಸುತ್ತದೆ. ನೀವು ದೋಷಗಳನ್ನು (errors) ನೋಡದಿದ್ದರೆ, ಅವುಗಳನ್ನು ಸರಿಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ.

ನಿಮ್ಮ ಫೈಲ್‌ನ ಮೇಲ್ಭಾಗದಲ್ಲಿ ಈ ಸಾಲುಗಳನ್ನು ಸೇರಿಸುವ ಮೂಲಕ ನಿಮ್ಮ ಅಭಿವೃದ್ಧಿಯನ್ನು (development) ಪ್ರಾರಂಭಿಸಿ:

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

ಇದು ತಪ್ಪನ್ನು ತೋರಿಸಲು PHP ಅನ್ನು ಒತ್ತಾಯಿಸುತ್ತದೆ. ಇದನ್ನು ಪ್ರೊಡಕ್ಷನ್ (production) ಪರಿಸರದಲ್ಲಿ ಬಳಸಬೇಡಿ.

ಇಲ್ಲಿ 10 ಸಾಮಾನ್ಯ ದೋಷಗಳು ಮತ್ತು ಅವುಗಳನ್ನು ಸರಿಪಡಿಸುವ ವಿಧಾನಗಳಿವೆ.

  1. ಸೆಮಿಕೋಲನ್ (Semicolons) ಮರೆತರೆ ಒಂದು ಹೇಳಿಕೆಯನ್ನು (statement) ಕೊನೆಗೊಳಿಸಲು PHP ಗೆ ಸೆಮಿಕೋಲನ್ ಅಗತ್ಯವಿದೆ. ನೀವು ಅದನ್ನು ಮರೆತರೆ, ಸ್ಕ್ರಿಪ್ಟ್ ನಿಂತುಹೋಗುತ್ತದೆ. ಪರಿಹಾರ: ಯಾವಾಗಲೂ ನಿಮ್ಮ ಸಾಲುಗಳನ್ನು ಸೆಮಿಕೋಲನ್‌ನೊಂದಿಗೆ ಕೊನೆಗೊಳಿಸಿ.

  2. ಲೂಸ್ ಕಂಪ್ಯಾರಿಸನ್ (Loose Comparison) == ಆಪರೇಟರ್ ಹೋಲಿಕೆ ಮಾಡುವ ಮೊದಲು ಡೇಟಾ ಪ್ರಕಾರಗಳನ್ನು (types) ಬದಲಾಯಿಸುತ್ತದೆ. ಇದು ತಪ್ಪು ಫಲಿತಾಂಶಗಳಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಪರಿಹಾರ: === ಬಳಸಿ. ಇದು ಮೌಲ್ಯ (value) ಮತ್ತು ಪ್ರಕಾರ (type) ಎರಡನ್ನೂ ಪರಿಶೀಲಿಸುತ್ತದೆ.

  3. ಅನಿರ್ದಿಷ್ಟ ವೇರಿಯೇಬಲ್‌ಗಳು (Undefined Variables) ನೀವು ರಚಿಸದ ವೇರಿಯೇಬಲ್ ಅನ್ನು ಬಳಸುವುದರಿಂದ ಲಾಜಿಕ್ ದೋಷಗಳು ಉಂಟಾಗುತ್ತವೆ. ಪರಿಹಾರ: null coalescing ಆಪರೇಟರ್ ಬಳಸಿ. $name = $_GET['name'] ?? 'Guest';

  4. ಗ್ಲೋಬಲ್ ವೇರಿಯೇಬಲ್ ಸ್ಕೋಪ್ (Global Variable Scope) ಫಂಕ್ಷನ್‌ಗಳು ಅವುಗಳ ಹೊರಗಿನ ವೇರಿಯೇಬಲ್‌ಗಳನ್ನು ನೋಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಪರಿಹಾರ: ವೇರಿಯೇಬಲ್‌ಗಳನ್ನು ಪ್ಯಾರಾಮೀಟರ್‌ಗಳಾಗಿ ಫಂಕ್ಷನ್‌ಗಳಿಗೆ ಕಳುಹಿಸಿ.

  5. SQL ಇಂಜೆಕ್ಷನ್ (SQL Injection) ಬಳಕೆದಾರರ ಇನ್‌ಪುಟ್ ಅನ್ನು ನೇರವಾಗಿ ಕ್ವೇರಿಯಲ್ಲಿ (query) ಹಾಕುವುದು ಅಪಾಯಕಾರಿ. ದಾಳಿಕೋರರು ನಿಮ್ಮ ಡೇಟಾವನ್ನು ಕದಿಯಬಹುದು. ಪರಿಹಾರ: ಪ್ಲೇಸ್‌ಹೋಲ್ಡರ್‌ಗಳೊಂದಿಗೆ ಪ್ರಿಪೇರ್ಡ್ ಸ್ಟೇಟ್‌ಮೆಂಟ್‌ಗಳನ್ನು (prepared statements) ಬಳಸಿ.

  6. ಕ್ರಾಸ್-ಸೈಟ್ ಸ್ಕ್ರಿಪ್ಟಿಂಗ್ (XSS) ಬಳಕೆದಾರರ ಇನ್‌ಪುಟ್ ಅನ್ನು ನೇರವಾಗಿ ಸ್ಕ್ರೀನ್ ಮೇಲೆ ಪ್ರಿಂಟ್ ಮಾಡುವುದರಿಂದ ಬ್ರೌಸರ್‌ನಲ್ಲಿ ದುರುದ್ದೇಶಪೂರಿತ ಸ್ಕ್ರಿಪ್ಟ್‌ಗಳು ಚಲಿಸಲು ಸಾಧ್ಯವಾಗುತ್ತದೆ. ಪರಿಹಾರ: ಎಲ್ಲಾ ಔಟ್‌ಪುಟ್‌ಗಳ ಮೇಲೆ htmlspecialchars() ಬಳಸಿ.

  7. ಹೆಡರ್ ದೋಷಗಳು (Header Errors) ಬ್ರೌಸರ್ ಗೆ ಯಾವುದೇ ಪಠ್ಯ ಅಥವಾ ಸ್ಪೇಸ್‌ಗಳನ್ನು ಕಳುಹಿಸಿದ ನಂತರ ನೀವು ಹೆಡರ್ ಕಳುಹಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಪರಿಹಾರ: header() ಕರೆಗಳನ್ನು ಫೈಲ್‌ನ একেবারে ಮೇಲ್ಭಾಗದಲ್ಲಿ ಇರಿಸಿ. ರಿಡೈರೆಕ್ಟ್ ಮಾಡಿದ ನಂತರ ಯಾವಾಗಲೂ exit() ಬಳಸಿ.

  8. ಫಾರ್ಮ್ ಕೀಗಳು ಮರೆತರೆ (Missing Form Keys) ಅಸ್ತಿತ್ವದಲ್ಲಿಲ್ಲದ ಫಾರ್ಮ್ ಕೀಯನ್ನು ಪ್ರವೇಶಿಸುವುದು ದೋಷಗಳಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ. ಪರಿಹಾರ: ಡಿಫಾಲ್ಟ್ ಮೌಲ್ಯವನ್ನು ಒದಗಿಸಲು null coalescing ಆಪರೇಟರ್ ಬಳಸಿ.

  9. Include vs Require ಫೈಲ್ ಇಲ್ಲದಿದ್ದರೆ include ಕಮಾಂಡ್ ಕೇವಲ ಎಚ್ಚರಿಕೆಯನ್ನು (warning) ನೀಡುತ್ತದೆ. ಸ್ಕ್ರಿಪ್ಟ್ ಚಾಲನೆಯಲ್ಲಿರುತ್ತದೆ ಮತ್ತು ನಂತರ ಕ್ರ್ಯಾಶ್ ಆಗುತ್ತದೆ. ಪರಿಹಾರ: ಡೇಟಾಬೇಸ್ ಕನೆಕ್ಷನ್‌ಗಳಂತಹ ನಿರ್ಣಾಯಕ ಫೈಲ್‌ಗಳಿಗಾಗಿ require_once ಬಳಸಿ.

  10. ಪರಿಶೀಲಿಸದ ರಿಟರ್ನ್ ಮೌಲ್ಯಗಳು (Unchecked Return Values) ಅನೇಕ PHP ಫಂಕ್ಷನ್‌ಗಳು ವಿಫಲವಾದರೆ false ಅನ್ನು ರಿಟರ್ನ್ ಮಾಡುತ್ತವೆ. ಮುಂದಿನ ಹಂತದಲ್ಲಿ ಆ false ಮೌಲ್ಯವನ್ನು ಬಳಸುವುದರಿಂದ ಕ್ರ್ಯಾಶ್ ಆಗುತ್ತದೆ. ಪರಿಹಾರ: ಫಲಿತಾಂಶವನ್ನು ಬಳಸುವ ಮೊದಲು ಫಂಕ್ಷನ್ false ಅನ್ನು ರಿಟರ್ನ್ ಮಾಡಿದೆಯೇ ಎಂದು ಪರಿಶೀಲಿಸಿ.

ಉತ್ತಮ ಕೋಡ್‌ಗಾಗಿ ಸಾರಾಂಶ: • ಅಭಿವೃದ್ಧಿಯ ಸಮಯದಲ್ಲಿ (development) ಎರರ್ ರಿಪೋರ್ಟಿಂಗ್ ಅನ್ನು ಆನ್ ಮಾಡಿ. • == ಬದಲಿಗೆ === ಬಳಸಿ. • ರಿಟರ್ನ್ ಮೌಲ್ಯಗಳನ್ನು ಪರಿಶೀಲಿಸಿ. • ಎಲ್ಲಾ ಬಳಕೆದಾರರ ಇನ್‌ಪುಟ್‌ಗಳನ್ನು ಸ್ಯಾನಿಟೈಸ್ (sanitize) ಮಾಡಿ.

ಮೂಲ: https://dev.to/bikkisingh/top-10-php-bugs-every-beginner-makes-and-how-to-fix-them-1anh