आपका प्रश्न भ्रम का जुर्माना संग्रह है। आप सब कुछ भ्रमित करने में कामयाब रहे।
की यह सुलझाने के लिए कोशिश करते हैं।
PHP का उपयोग, इंजेक्शन से बचने के लिए, एमएसक्यूएल डेटाबेस में विशेष वर्णों (जैसे निम्न) को स्टोर करने का सबसे अच्छा तरीका क्या है।
इन अतुलनीय मामला नहीं है। विशेष वर्ण भंडारण एक मामला है और इंजेक्शन से परहेज करना एक और है। पूरी तरह से अलग एक।
$book_text=htmlentities($book_text, "ENT_QUOTES");
यह सबसे मजेदार हिस्सा है। हालांकि यह आपके प्रश्नों की रक्षा करने का इरादा है, यह वास्तव में कुछ भी नहीं करता है। क्योंकि निरंतर ENT_QUOTES की मान 3 है जो आप स्ट्रिंग ENT_QUOTES का उपयोग कर रहे हैं जो संख्यात्मक मान 0 है, इसलिए, आप कोई ध्वज सेट नहीं कर रहे हैं।
लेकिन यदि आप इस ध्वज को सही ढंग से सेट करते हैं, तो यह स्वचालित रूप से आपकी सुरक्षा नहीं करेगा। क्योंकि इंजेक्शन कोड में कोई विशेष वर्ण नहीं हो सकता है।
इंजेक्शन से बचने के लिए, आपको नियमों का सेट का पालन करना होगा, एक साधारण कार्य "make_my_data_safe()" नहीं। कोई जादू की छड़ी नहीं है। विवरण के लिए
this my answer देखें।
विशेष के लिए, यह आसान है। एकमात्र समस्या है कि कोई ठोस विशेष वर्ण सेट नहीं है। विभिन्न वातावरण के लिए विभिन्न विशेष वर्ण हैं।
- 'डेटाबेस और HTML
- < लिए मायने रखने> HTML केवल
- é एक यू केवल HTML लिए मायने रखने के लिए अर्थ है, एन्कोडिंग पर निर्भर करता है।
आपने प्रत्येक मामले के लिए अलग-अलग स्वरूपण नियमों का उपयोग किया है। अलग, सभी के लिए एक भी नहीं।
एचटीएमएल के साथ वर्णों का उपयोग करने के लिए आपको उचित HTTP शीर्षलेख सेट करना होगा। डेटाबेस के साथ उपयोग करने के लिए आपको utf8 पर अपना टेबल एन्कोडिंग सेट करना होगा और यूटीएफ 8 के लिए कनेक्शन एन्कोडिंग सेट करना होगा।
स्रोत
2012-04-12 05:23:11
utf8 आपका मित्र –
'" ENT_QUOTES "को' ENT_QUOTES "होना चाहिए (उद्धरण के बिना) क्योंकि यह एक PHP पूर्वनिर्धारित निरंतर है। और मैंने सोचा कि आप इसे डीबी में कच्चे रख सकते हैं और जब आप इसे गूंजना चाहते हैं तो आप डेटाबेस collation में 'htmlentities' –