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

ਤੁਸੀਂ ਕੋਡ ਲਿਖਦੇ ਹੋ। ਤੁਸੀਂ ਰਿਫ੍ਰੈਸ਼ (refresh) ਕਰਦੇ ਹੋ। ਤੁਹਾਨੂੰ ਇੱਕ ਖਾਲੀ ਚਿੱਟੀ ਸਕ੍ਰੀਨ ਦਿਖਾਈ ਦਿੰਦੀ ਹੈ।

ਅਜਿਹਾ ਇਸ ਲਈ ਹੁੰਦਾ ਹੈ ਕਿਉਂਕਿ PHP ਡਿਫੌਲਟ ਰੂਪ ਵਿੱਚ ਚੁੱਪਚਾਪ ਫੇਲ੍ਹ ਹੋ ਜਾਂਦਾ ਹੈ। ਤੁਹਾਨੂੰ ਡਿਵੈਲਪਮੈਂਟ (development) ਦੌਰਾਨ ਗਲਤੀਆਂ (errors) ਦਿਖਾਉਣ ਲਈ ਇਸਨੂੰ ਮਜਬੂਰ ਕਰਨਾ ਪਵੇਗਾ।

ਆਪਣੀਆਂ ਫਾਈਲਾਂ ਦੇ ਉੱਪਰ ਇਹ ਲਾਈਨਾਂ ਜੋੜੋ:

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

ਇਸਨੂੰ production ਵਿੱਚ ਵਰਤੋ ਨਾ। ਇਸਦੀ ਬਜਾਏ ਫਾਈਲ ਲੌਗਸ (file logs) ਦੀ ਵਰਤੋਂ ਕਰੋ।

ਇੱਥੇ 10 ਆਮ ਗਲਤੀਆਂ ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਸੁਧਾਰਨ ਦੇ ਤਰੀਕੇ ਦਿੱਤੇ ਗਏ ਹਨ:

  • ਸੈਮੀਕੋਲਨ (Semicolons) ਦਾ ਨਾ ਹੋਣਾ ਜੇਕਰ ਤੁਸੀਂ ਸੈਮੀਕੋਲਨ ਭੁੱਲ ਜਾਂਦੇ ਹੋ ਤਾਂ PHP ਕੰਮ ਕਰਨਾ ਬੰਦ ਕਰ ਦਿੰਦਾ ਹੈ। ਇਹ ਅਕਸਰ ਚੁੱਪਚਾਪ ਕ੍ਰੈਸ਼ (crash) ਹੋ ਜਾਂਦਾ ਹੈ। ਸੁਧਾਰ: ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਹਰ ਸਟੇਟਮੈਂਟ ਸੈਮੀਕੋਲਨ ਨਾਲ ਖਤਮ ਹੁੰਦੀ ਹੈ।

  • ਲੂਜ਼ ਕੰਪੈਰੀਜ਼ਨ (Loose Comparison) (== vs ===) ਡਬਲ ਇਕੁਅਲ (=) ਚਿੰਨ੍ਹ 'type coercion' ਕਰਦਾ ਹੈ। ਇਸ ਨਾਲ ਲੌਜਿਕ (logic) ਦੀਆਂ ਗਲਤੀਆਂ ਹੋ ਸਕਦੀਆਂ ਹਨ। ਸੁਧਾਰ: ਟ੍ਰਿਪਲ ਇਕੁਅਲ (===) ਦੀ ਵਰਤੋਂ ਕਰੋ। ਇਹ ਮੁੱਲ (value) ਅਤੇ ਕਿਸਮ (type) ਦੋਵਾਂ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ।

  • ਅਣਡਿਫਾਈਨਡ ਵੇਰੀਏਬਲਜ਼ (Undefined Variables) ਕਿਸੇ ਵੇਰੀਏਬਲ ਨੂੰ ਅਸਾਈਨ (assign) ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਉਸਦੀ ਵਰਤੋਂ ਕਰਨ ਨਾਲ ਤੁਹਾਡਾ ਲੌਜਿਕ ਟੁੱਟ ਜਾਂਦਾ ਹੈ। ਸੁਧਾਰ: null coalescing operator ਦੀ ਵਰਤੋਂ ਕਰੋ। ਉਦਾਹਰਨ: $name = $_GET['name'] ?? 'Guest';

  • ਗਲੋਬਲ ਵੇਰੀਏਬਲ ਸਕੋਪ (Global Variable Scope) ਫੰਕਸ਼ਨਾਂ (functions) ਨੂੰ ਆਪਣੇ ਬਾਹਰਲੇ ਵੇਰੀਏਬਲ ਦਿਖਾਈ ਨਹੀਂ ਦਿੰਦੇ। ਸੁਧਾਰ: ਵੇਰੀਏਬਲਜ਼ ਨੂੰ ਫੰਕਸ਼ਨਾਂ ਵਿੱਚ ਪੈਰਾਮੀਟਰਾਂ (parameters) ਵਜੋਂ ਪਾਸ ਕਰੋ।

  • SQL ਇੰਜੈਕਸ਼ਨ (SQL Injection) ਯੂਜ਼ਰ ਇਨਪੁਟ ਨਾਲ ਕੁਏਰੀਆਂ (queries) ਬਣਾਉਣ ਨਾਲ ਹੈਕਰ ਡਾਟਾ ਚੋਰੀ ਕਰ ਸਕਦੇ ਹਨ। ਸੁਧਾਰ: ਪਲੇਸਹੋਲਡਰਾਂ (?) ਦੇ ਨਾਲ prepared statements ਦੀ ਵਰਤੋਂ ਕਰੋ।

  • ਕਰਾਸ-ਸਾਈਟ ਸਕ੍ਰਿਪਟਿੰਗ (XSS) ਯੂਜ਼ਰ ਇਨਪੁਟ ਨੂੰ ਸਿੱਧਾ ਪ੍ਰਿੰਟ ਕਰਨ ਨਾਲ ਬ੍ਰਾਊਜ਼ਰਾਂ ਵਿੱਚ ਮਾਲੀਸ਼ੀਅਸ ਸਕ੍ਰਿਪਟਾਂ (malicious scripts) ਚੱਲ ਸਕਦੀਆਂ ਹਨ। ਸੁਧਾਰ: ਆਉਟਪੁੱਟ ਨੂੰ htmlspecialchars() ਵਿੱਚ ਲਪੇਟੋ (wrap)।

  • ਹੈਡਰਜ਼ ਪਹਿਲਾਂ ਹੀ ਭੇਜੇ ਜਾ ਚੁੱਕੇ ਹਨ (Headers Already Sent) ਜੇਕਰ ਤੁਸੀਂ ਬ੍ਰਾਊਜ਼ਰ ਨੂੰ ਪਹਿਲਾਂ ਹੀ ਟੈਕਸਟ ਭੇਜ ਦਿੱਤਾ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਯੂਜ਼ਰ ਨੂੰ ਰੀਡਾਇਰੈਕਟ (redirect) ਨਹੀਂ ਕਰ ਸਕਦੇ। ਇੱਕ ਸਪੇਸ ਵੀ ਇਸ ਗਲਤੀ ਦਾ ਕਾਰਨ ਬਣ ਸਕਦੀ ਹੈ। ਸੁਧਾਰ: header() ਕਾਲਜ਼ ਨੂੰ ਸਭ ਤੋਂ ਉੱਪਰ ਰੱਖੋ। ਰੀਡਾਇਰੈਕਟ ਤੋਂ ਬਾਅਦ ਹਮੇਸ਼ਾ exit() ਦੀ ਵਰਤੋਂ ਕਰੋ।

  • ਅਣਡਿਫਾਈਨਡ ਐਰੇ ਕੀਜ਼ (Undefined Array Keys) ਅਜਿਹੀ ਫਾਰਮ ਕੀ (key) ਤੱਕ ਪਹੁੰਚਣਾ ਜੋ ਮੌਜੂਦ ਨਹੀਂ ਹੈ, ਚੇਤਾਵਨੀਆਂ (warnings) ਪੈਦਾ ਕਰਦਾ ਹੈ। ਸੁਧਾਰ: ਸਾਰੇ $_POST ਅਤੇ $_GET ਡੇਟਾ ਲਈ null coalescing operator ਦੀ ਵਰਤੋਂ ਕਰੋ।

  • Include ਬਨਾਮ Require ਜੇਕਰ ਕੋਈ ਫਾਈਲ ਗੁੰਮ ਹੈ ਤਾਂ Include ਸਿਰਫ ਇੱਕ ਚੇਤਾਵਨੀ ਦਿਖਾਉਂਦਾ ਹੈ। ਸਕ੍ਰਿਪਟ ਚੱਲਦੀ ਰਹਿੰਦੀ ਹੈ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਕ੍ਰੈਸ਼ ਹੋ ਜਾਂਦੀ ਹੈ। ਸੁਧਾਰ: ਡਾਟਾਬੇਸ ਕਨੈਕਸ਼ਨਾਂ ਵਰਗੀਆਂ ਮਹੱਤਵਪੂਰਨ ਫਾਈਲਾਂ ਲਈ require_once ਦੀ ਵਰਤੋਂ ਕਰੋ।

  • ਅਣਚੈੱਕ ਰਿਟਰਨ ਵੈਲਿਊਜ਼ (Unchecked Return Values) ਬਹੁਤ ਸਾਰੇ PHP ਫੰਕਸ਼ਨ ਫੇਲ੍ਹ ਹੋਣ 'ਤੇ false ਰਿਟਰਨ ਕਰਦੇ ਹਨ। ਜੇਕਰ ਤੁਸੀਂ ਉਸ ਨਤੀਜੇ ਦੀ ਤੁਰੰਤ ਵਰਤੋਂ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਹੋਰ ਗਲਤੀਆਂ ਮਿਲਣਗੀਆਂ। ਸੁਧਾਰ: ਵਰਤਣ ਤੋਂ ਪਹਿਲਾਂ ਚੈੱਕ ਕਰੋ ਕਿ ਨਤੀਜਾ false ਹੈ ਜਾਂ ਨਹੀਂ।

ਸਫਲਤਾ ਲਈ ਸਾਰਾਂਸ਼:

  • ਡਿਵੈਲਪਮੈਂਟ ਵਿੱਚ error reporting ਚਾਲੂ ਕਰੋ।
  • ਸਾਰੇ ਤੁਲਨਾਵਾਂ (comparisons) ਲਈ === ਦੀ ਵਰਤੋਂ ਕਰੋ।
  • ਸਾਰੇ ਯੂਜ਼ਰ ਇਨਪੁਟ ਨੂੰ ਸੈਨੀਟਾਈਜ਼ (sanitize) ਕਰੋ।
  • ਰਿਟਰਨ ਵੈਲਿਊਜ਼ ਦੀ ਜਾਂਚ ਕਰੋ।

ਸਰੋਤ: https://dev.to/bikkisingh/top-10-php-bugs-every-beginner-makes-and-how-to-fix-them-1anh