𝗧𝗼𝗽 𝟭𝟬 𝗣𝗛𝗣 𝗕𝘂𝗴𝘀 ਜੋ ਹਰ ਨਵੇਂ ਸਿੱਖਣ ਵਾਲਾ (Beginner) ਕਰਦਾ ਹੈ
ਤੁਸੀਂ ਕੋਡ ਲਿਖਦੇ ਹੋ। ਤੁਸੀਂ ਪੇਜ ਨੂੰ ਰਿਫ੍ਰੈਸ਼ ਕਰਦੇ ਹੋ। ਤੁਹਾਨੂੰ ਇੱਕ ਖਾਲੀ ਚਿੱਟੀ ਸਕ੍ਰੀਨ ਦਿਖਾਈ ਦਿੰਦੀ ਹੈ।
ਇਹ ਇਸ ਲਈ ਹੁੰਦਾ ਹੈ ਕਿਉਂਕਿ PHP ਡਿਫੌਲਟ ਰੂਪ ਵਿੱਚ ਚੁੱਪਚਾਪ ਫੇਲ ਹੋ ਜਾਂਦਾ ਹੈ। ਜੇਕਰ ਤੁਹਾਨੂੰ ਗਲਤੀਆਂ (errors) ਦਿਖਾਈ ਨਹੀਂ ਦਿੰਦੀਆਂ, ਤਾਂ ਤੁਸੀਂ ਉਹਨਾਂ ਨੂੰ ਠੀਕ ਨਹੀਂ ਕਰ ਸਕਦੇ।
ਆਪਣੀ ਫਾਈਲ ਦੇ ਸਭ ਤੋਂ ਉੱਪਰ ਇਹ ਲਾਈਨਾਂ ਜੋੜ ਕੇ ਆਪਣੀ ਡਿਵੈਲਪਮੈਂਟ ਸ਼ੁਰੂ ਕਰੋ:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
ਇਹ PHP ਨੂੰ ਇਹ ਦਿਖਾਉਣ ਲਈ ਮਜਬੂਰ ਕਰਦਾ ਹੈ ਕਿ ਕੀ ਗਲਤ ਹੈ। ਇਸਨੂੰ production ਵਿੱਚ ਵਰਤੋ ਨਾ।
ਇੱਥੇ 10 ਆਮ ਬੱਗ (bugs) ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਠੀਕ ਕਰਨ ਦੇ ਤਰੀਕੇ ਦਿੱਤੇ ਗਏ ਹਨ।
ਸੈਮੀਕੋਲਨ (Semicolons) ਦਾ ਨਾ ਹੋਣਾ PHP ਨੂੰ ਇੱਕ ਸਟੇਟਮੈਂਟ ਨੂੰ ਖਤਮ ਕਰਨ ਲਈ ਸੈਮੀਕੋਲਨ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਇੱਕ ਵੀ ਭੁੱਲ ਜਾਂਦੇ ਹੋ, ਤਾਂ ਸਕ੍ਰਿਪਟ ਰੁਕ ਜਾਂਦੀ ਹੈ। ਸੁਧਾਰ: ਹਮੇਸ਼ਾ ਆਪਣੀਆਂ ਲਾਈਨਾਂ ਨੂੰ ਸੈਮੀਕੋਲਨ ਨਾਲ ਖਤਮ ਕਰੋ।
ਲੂਜ਼ ਕੰਪੈਰੀਜ਼ਨ (Loose Comparison)
==ਆਪਰੇਟਰ ਤੁਲਨਾ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਟਾਈਪਸ (types) ਨੂੰ ਬਦਲ ਦਿੰਦਾ ਹੈ। ਇਸ ਨਾਲ ਗਲਤ ਨਤੀਜੇ ਨਿਕਲਦੇ ਹਨ। ਸੁਧਾਰ:===ਦੀ ਵਰਤੋਂ ਕਰੋ। ਇਹ ਮੁੱਲ (value) ਅਤੇ ਟਾਈਪ (type) ਦੋਵਾਂ ਦੀ ਜਾਂਚ ਕਰਦਾ ਹੈ।ਅਣਪਛਾਤੇ ਵੇਰੀਏਬਲ (Undefined Variables) ਅਜਿਹੇ ਵੇਰੀਏਬਲ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਜੋ ਤੁਸੀਂ ਨਹੀਂ ਬਣਾਇਆ, ਲੌਜਿਕ ਗਲਤੀਆਂ ਪੈਦਾ ਕਰਦਾ ਹੈ। ਸੁਧਾਰ: null coalescing operator ਦੀ ਵਰਤੋਂ ਕਰੋ।
$name = $_GET['name'] ?? 'Guest';ਗਲੋਬਲ ਵੇਰੀਏਬਲ ਸਕੋਪ (Global Variable Scope) ਫੰਕਸ਼ਨ ਆਪਣੇ ਬਾਹਰਲੇ ਵੇਰੀਏਬਲ ਨਹੀਂ ਦੇਖ ਸਕਦੇ। ਸੁਧਾਰ: ਵੇਰੀਏਬਲ ਨੂੰ ਫੰਕਸ਼ਨਾਂ ਵਿੱਚ ਪੈਰਾਮੀਟਰਾਂ (parameters) ਵਜੋਂ ਪਾਸ ਕਰੋ।
SQL ਇੰਜੈਕਸ਼ਨ (SQL Injection) ਯੂਜ਼ਰ ਇਨਪੁਟ ਨੂੰ ਸਿੱਧਾ ਕੁਐਰੀ (query) ਵਿੱਚ ਪਾਉਣਾ ਖ਼ਤਰਨਾਕ ਹੈ। ਹਮਲਾਵਰ ਤੁਹਾਡਾ ਡਾਟਾ ਚੋਰੀ ਕਰ ਸਕਦੇ ਹਨ। ਸੁਧਾਰ: ਪਲੇਸਹੋਲਡਰਾਂ (placeholders) ਦੇ ਨਾਲ prepared statements ਦੀ ਵਰਤੋਂ ਕਰੋ।
ਕਰਾਸ-ਸਾਈਟ ਸਕ੍ਰਿਪਟਿੰਗ (XSS) ਸਕ੍ਰੀਨ 'ਤੇ ਕੱਚਾ (raw) ਯੂਜ਼ਰ ਇਨਪੁਟ ਪ੍ਰਿੰਟ ਕਰਨ ਨਾਲ ਬ੍ਰਾਊਜ਼ਰਾਂ ਵਿੱਚ ਮਾਲੀਸ਼ੀਅਸ ਸਕ੍ਰਿਪਟਾਂ ਚੱਲ ਸਕਦੀਆਂ ਹਨ। ਸੁਧਾਰ: ਸਾਰੇ ਆਉਟਪੁੱਟ 'ਤੇ
htmlspecialchars()ਦੀ ਵਰਤੋਂ ਕਰੋ।ਹੈਡਰ ਗਲਤੀਆਂ (Header Errors) ਤੁਸੀਂ ਬ੍ਰਾਊਜ਼ਰ ਨੂੰ ਕੋਈ ਵੀ ਟੈਕਸਟ ਜਾਂ ਸਪੇਸ ਭੇਜਣ ਤੋਂ ਬਾਅਦ ਹੈਡਰ ਨਹੀਂ ਭੇਜ ਸਕਦੇ। ਸੁਧਾਰ:
header()ਕਾਲਸ ਨੂੰ ਸਭ ਤੋਂ ਉੱਪਰ ਰੱਖੋ। ਰੀਡਾਇਰੈਕਟ (redirect) ਤੋਂ ਬਾਅਦ ਹਮੇਸ਼ਾexit()ਦੀ ਵਰਤੋਂ ਕਰੋ।ਫਾਰਮ ਕੀਜ਼ (Form Keys) ਦਾ ਨਾ ਹੋਣਾ ਅਜਿਹੀ ਫਾਰਮ ਕੀ ਤੱਕ ਪਹੁੰਚਣਾ ਜੋ ਮੌਜੂਦ ਨਹੀਂ ਹੈ, ਗਲਤੀਆਂ ਪੈਦਾ ਕਰਦਾ ਹੈ। ਸੁਧਾਰ: ਡਿਫੌਲਟ ਮੁੱਲ ਪ੍ਰਦਾਨ ਕਰਨ ਲਈ null coalescing operator ਦੀ ਵਰਤੋਂ ਕਰੋ।
Include ਬਨਾਮ Require
includeਕਮਾਂਡ ਫਾਈਲ ਗੁੰਮ ਹੋਣ 'ਤੇ ਸਿਰਫ਼ ਇੱਕ ਚੇਤਾਵਨੀ ਦਿੰਦੀ ਹੈ। ਸਕ੍ਰਿਪਟ ਚੱਲਦੀ ਰਹਿੰਦੀ ਹੈ ਅਤੇ ਬਾਅਦ ਵਿੱਚ ਕ੍ਰੈਸ਼ ਹੋ ਜਾਂਦੀ ਹੈ। ਸੁਧਾਰ: ਡਾਟਾਬੇਸ ਕਨੈਕਸ਼ਨਾਂ ਵਰਗੀਆਂ ਮਹੱਤਵਪੂਰਨ ਫਾਈਲਾਂ ਲਈrequire_onceਦੀ ਵਰਤੋਂ ਕਰੋ।ਅਣਚੈੱਕ ਰਿਟਰਨ ਵੈਲਯੂਜ਼ (Unchecked Return Values) ਕਈ PHP ਫੰਕਸ਼ਨ ਫੇਲ ਹੋਣ 'ਤੇ
falseਰਿਟਰਨ ਕਰਦੇ ਹਨ। ਅਗਲੇ ਕਦਮ ਵਿੱਚ ਉਸfalseਮੁੱਲ ਦੀ ਵਰਤੋਂ ਕਰਨ ਨਾਲ ਕ੍ਰੈਸ਼ ਹੋ ਜਾਂਦਾ ਹੈ। ਸੁਧਾਰ: ਨਤੀਜੇ ਦੀ ਵਰਤੋਂ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਚੈੱਕ ਕਰੋ ਕਿ ਫੰਕਸ਼ਨ ਨੇfalseਰਿਟਰਨ ਕੀਤਾ ਹੈ ਜਾਂ ਨਹੀਂ।
ਬਿਹਤਰ ਕੋਡ ਲਈ ਸਾਰਾਂਸ਼:
• ਡਿਵੈਲਪਮੈਂਟ ਵਿੱਚ error reporting ਚਾਲੂ ਕਰੋ।
• == ਦੀ ਬਜਾਏ === ਦੀ ਵਰਤੋਂ ਕਰੋ।
• ਰਿਟਰਨ ਵੈਲਯੂਜ਼ (return values) ਦੀ ਜਾਂਚ ਕਰੋ।
• ਸਾਰੇ ਯੂਜ਼ਰ ਇਨਪੁਟ ਨੂੰ ਸੈਨੀਟਾਈਜ਼ (sanitize) ਕਰੋ।
ਸਰੋਤ: https://dev.to/bikkisingh/top-10-php-bugs-every-beginner-makes-and-how-to-fix-them-1anh