𝟭𝟬 PHP બગ્સ જે વાસ્તવિક પ્રોજેક્ટ્સને બગાડે છે

કોડ તમારા કમ્પ્યુટર પર કામ કરે છે. તમે તેને સર્વર પર પુશ કરો છો. બધું બગડી જાય છે. લોગ્સમાં કોઈ એરર દેખાતી નથી. તમને ફક્ત ખોટું આઉટપુટ જ જોવા મળે છે.

આ બગ્સ પાઠ્યપુસ્તકોમાંથી આવતા નથી. તેઓ વાસ્તવિક લોગિન સિસ્ટમ્સ, સ્ટોર્સ અને APIs માંથી આવે છે. કોડ રિવ્યુ દરમિયાન તેઓ બરાબર લાગે છે પરંતુ પ્રોડક્શનમાં નિષ્ફળ જાય છે.

અહીં બગ્સ #11 થી #20 અને તેને કેવી રીતે સુધારવા તે આપેલ છે.

• ઇન્ફિનિટ લૂપ્સ (Infinite Loops) કાઉન્ટર વધારવાનું ભૂલી જવાથી PHP પ્રોસેસ લોક થઈ જાય છે. આ તમારા સમગ્ર સર્વરને ક્રેશ કરી શકે છે. સુધારો: હંમેશા ખાતરી કરો કે તમારા લૂપ કાઉન્ટર્સ વધતા રહે છે.

• કેસ-સેન્સિટિવિટી સમસ્યાઓ (Case-Sensitivity Issues) PHP "Admin" અને "admin" ને અલગ સ્ટ્રિંગ્સ તરીકે જુએ છે. આ એક્સેસ કંટ્રોલને બગાડે છે. સુધારો: સ્ટ્રિંગ્સની સરખામણી કરતા પહેલા strtolower() નો ઉપયોગ કરો.

• ગણિત અને ટ્રંકેશન (Math and Truncation) ડેસિમલ પર (int) નો ઉપયોગ કરવાથી તે રાઉન્ડ (round) થતું નથી. તે તેને કાપી નાખે છે. આના કારણે બિલિંગમાં નાણાકીય ભૂલો થાય છે. સુધારો: round() અથવા number_format() નો ઉપયોગ કરો.

• JSON ભૂલો (JSON Errors) json_decode ડિફોલ્ટ રીતે એક ઓબ્જેક્ટ રિટર્ન કરે છે. જો તમે તેને એરે (array) તરીકે વાપરવાનો પ્રયાસ કરો છો, તો સ્ક્રિપ્ટ નિષ્ફળ જાય છે. સુધારો: એરે મેળવવા માટે બીજા આર્ગ્યુમેન્ટ તરીકે true પાસ કરો.

• XSS સુરક્ષા જોખમો (XSS Security Risks) યુઝર ઇનપુટને સીધું પ્રિન્ટ કરવાથી હુમલાખોરોને સ્ક્રિપ્ટ્સ ઇન્જેક્ટ કરવાની મંજૂરી મળે છે. સુધારો: હંમેશા htmlspecialchars() નો ઉપયોગ કરો.

• પાથ નિષ્ફળતા (Path Failures) રિલેટિવ પાથ લોકલ મશીનો પર કામ કરે છે પરંતુ લાઇવ સર્વર પર નિષ્ફળ જાય છે. સુધારો: એબ્સોલ્યુટ પાથ માટે __DIR__ કોન્સ્ટન્ટનો ઉપયોગ કરો.

• ડુપ્લીકેટ ડેટા (Duplicate Data) યુઝર્સ ઘણીવાર સબમિટ બટનો પર ડબલ-ક્લિક કરે છે. આનાથી ડેટાબેઝમાં ડુપ્લીકેટ એન્ટ્રીઓ બને છે. સુધારો: રેકોર્ડ અસ્તિત્વમાં છે કે નહીં તે પહેલા તપાસો અને તમારા ડેટાબેઝમાં UNIQUE કન્સ્ટ્રેઇન્ટનો ઉપયોગ કરો.

• એરે મર્જિંગ (Merging Arrays) array_merge() ન્યુમેરિક કીઝને શૂન્ય પર રીસેટ કરે છે. આ તમારા ડેટા સ્ટ્રક્ચરને નષ્ટ કરે છે. સુધારો: તમારી કીઝ રાખવા માટે + ઓપરેટર અથવા array_replace() નો ઉપયોગ કરો.

• અદ્રશ્ય ભૂલો (Invisible Errors) પ્રોડક્શનમાં એરર્સ બંધ કરવા સુરક્ષા માટે સારા છે. પરંતુ જો તમે તેને લોગ ન કરો તો તે ડીબગિંગ માટે ખરાબ છે. સુધારો: log_errors ને 1 પર સેટ કરો અને error_log પાથ વ્યાખ્યાયિત કરો.

• લૂપ રેફરન્સ (Loop References) foreach લૂપ ડેટાની નકલ (copy) માં ફેરફાર કરે છે, મૂળ એરેમાં નહીં. સુધારો: રેફરન્સ બનાવવા માટે & સિમ્બોલનો ઉપયોગ કરો, પરંતુ લૂપ પછી હંમેશા વેરિએબલને unset કરો.

આમાંથી મોટાભાગના બગ્સ એરર ફેંકતા નથી. PHP ચાલતું રહે છે, પરંતુ તે ખોટા પરિણામો આપે છે. આ તેમને જોખમી બનાવે છે.

કોડ લખવો સરળ છે. પ્રોડક્શન-રેડી કોડ લખવા માટે વસ્તુઓ કેવી રીતે નિષ્ફળ જાય છે તે સમજવું જરૂરી છે.

સંપૂર્ણ માર્ગદર્શિકા અહીં વાંચો: https://dev.to/bikkisingh/10-php-bugs-that-break-real-projects-and-how-to-fix-them-part-2-7hm