દરેક શિખાઉ વ્યક્તિ દ્વારા કરવામાં આવતી ટોપ 10 PHP ભૂલો (Bugs)
તમે કોડ લખો છો. તમે પેજ રિફ્રેશ કરો છો. તમને એક ખાલી સફેદ સ્ક્રીન દેખાય છે.
આવું એટલા માટે થાય છે કારણ કે PHP ડિફોલ્ટ રીતે ભૂલો (errors) બતાવ્યા વગર અટકી જાય છે. જો તમે ભૂલો જોઈ શકતા નથી, તો તમે તેને સુધારી શકતા નથી.
તમારી ફાઇલના ઉપરના ભાગમાં આ લાઇન ઉમેરીને તમારી ડેવલપમેન્ટ શરૂ કરો:
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
આ PHP ને શું ખોટું છે તે બતાવવા માટે મજબૂર કરે છે. આનો ઉપયોગ પ્રોડક્શન (production) માં કરશો નહીં.
અહીં 10 સામાન્ય ભૂલો અને તેને કેવી રીતે સુધારવી તે આપેલ છે.
સેમીકોલન (Semicolons) ખૂટેલા હોવા સ્ટેટમેન્ટ પૂર્ણ કરવા માટે PHP ને સેમીકોલનની જરૂર હોય છે. જો તમે એક પણ ભૂલી જશો, તો સ્ક્રિપ્ટ અટકી જશે. સુધારો: હંમેશા તમારી લાઇનના અંતે સેમીકોલન મૂકો.
લૂઝ કમ્પેરીઝન (Loose Comparison)
==ઓપરેટર સરખાવતા પહેલા પ્રકારો (types) બદલી નાખે છે. આનાથી ખોટા પરિણામો મળે છે. સુધારો:===નો ઉપયોગ કરો. આ કિંમત (value) અને પ્રકાર (type) બંને તપાસે છે.અંડિફાઈન્ડ વેરિયેબલ્સ (Undefined Variables) તમે બનાવેલા નથી તેવા વેરિયેબલનો ઉપયોગ કરવાથી લોજિકલ ભૂલો થાય છે. સુધારો: null coalescing ઓપરેટરનો ઉપયોગ કરો.
$name = $_GET['name'] ?? 'Guest';ગ્લોબલ વેરિયેબલ સ્કોપ (Global Variable Scope) ફંક્શન્સ તેમની બહારના વેરિયેબલ્સ જોઈ શકતા નથી. સુધારો: વેરિયેબલ્સને પેરામીટર્સ તરીકે ફંક્શન્સમાં પાસ કરો.
SQL ઇન્જેક્શન (SQL Injection) યુઝર ઇનપુટને સીધું ક્વેરીમાં મૂકવું જોખમી છે. હેકર્સ તમારો ડેટા ચોરી શકે છે. સુધારો: પ્લેસહોલ્ડર્સ (placeholders) સાથે prepared statements નો ઉપયોગ કરો.
ક્રોસ-સાઇટ સ્ક્રિપ્ટિંગ (XSS) યુઝરના કાચા ઇનપુટને સ્ક્રીન પર પ્રિન્ટ કરવાથી બ્રાઉઝરમાં હાનિકારક સ્ક્રિપ્ટ્સ ચાલી શકે છે. સુધારો: તમામ આઉટપુટ પર
htmlspecialchars()નો ઉપયોગ કરો.હેડર એરર્સ (Header Errors) બ્રાઉઝરને કોઈપણ ટેક્સ્ટ અથવા સ્પેસ મોકલ્યા પછી તમે હેડર મોકલી શકતા નથી. સુધારો:
header()કોલ્સને સૌથી ઉપર રાખો. રીડાયરેક્ટ (redirect) પછી હંમેશાexit()નો ઉપયોગ કરો.ફોર્મ કીઝ ખૂટેલી હોવી (Missing Form Keys) અસ્તિત્વમાં ન હોય તેવી ફોર્મ કીને એક્સેસ કરવાથી ભૂલો થાય છે. સુધારો: ડિફોલ્ટ કિંમત આપવા માટે null coalescing ઓપરેટરનો ઉપયોગ કરો.
Include વિરુદ્ધ Require જો ફાઇલ ખૂટતી હોય તો
includeકમાન્ડ ફક્ત ચેતવણી (warning) આપે છે. સ્ક્રિપ્ટ ચાલતી રહે છે અને પછીથી ક્રેશ થાય છે. સુધારો: ડેટાબેઝ કનેક્શન જેવી મહત્વપૂર્ણ ફાઇલો માટેrequire_onceનો ઉપયોગ કરો.અનચેક્ડ રિટર્ન વેલ્યુઝ (Unchecked Return Values) ઘણી PHP ફંક્શન્સ જો નિષ્ફળ જાય તો
falseરિટર્ન કરે છે. પછીના સ્ટેપમાં તેfalseવેલ્યુનો ઉપયોગ કરવાથી ક્રેશ થાય છે. સુધારો: પરિણામનો ઉપયોગ કરતા પહેલા તપાસો કે ફંક્શનેfalseરિટર્ન કર્યું છે કે નહીં.
વધુ સારા કોડ માટે સારાંશ:
• ડેવલપમેન્ટમાં એરર રિપોર્ટિંગ ચાલુ કરો.
• == ને બદલે === નો ઉપયોગ કરો.
• રિટર્ન વેલ્યુઝ તપાસો.
• તમામ યુઝર ઇનપુટને સેનિટાઇઝ (sanitize) કરો.
સ્ત્રોત: https://dev.to/bikkisingh/top-10-php-bugs-every-beginner-makes-and-how-to-fix-them-1anh