दिलचस्प पोस्ट
PHP उत्पादन सर्वर – त्रुटि संदेश चालू करें एंड्रॉइड में एसएपी वेब सर्विस में एरेएलआईस्ट डेटा पास करें डेल्फी: आईडीएचटीपी + एसएसएल PHP में $ _POST चर क्यों बच रहे हैं? JAX-RS वेब सेवाओं पर क्रॉस डोमेन अनुरोधों को कैसे सक्षम करें? अजगर में, जब एक शब्दकोश, सूची या सेट का उपयोग करें? यह निर्धारित करने के लिए कि विधि कहां है, एक्शन बार मेनू आइटम टेक्स्ट रंग वापसी प्रकार द्वारा ओवरलोडिंग ओरेकल डाटाबेस लिंक – MySQL समतुल्य? एंड्रॉइड: मैं कैसे जांचूं कि गतिविधि चल रही है? एनएसपीआरडीएक्स का प्रयोग एनएसएआरएआरएस पर आधारित एनएसएआरआरए फ़िल्टर करने के लिए ऑब्जेक्ट-ओरिएंटेड सी ++ कोड के लिए सी रेपर एपीआई का विकास करना क्या PHP में बिगइन्टेगर वर्ग है? अजगर में कुशलता से शब्द आवृत्तियों को गिना

कैसे केवल एकल उद्धरणों से बचने के लिए?

मैं कुछ जावास्क्रिप्ट कोड लिख रहा हूँ जो PHP के साथ रेंगने वाली स्ट्रिंग का उपयोग करता है। मैं अपने PHP स्ट्रिंग में एकल उद्धरण (और केवल एकल उद्धरण) कैसे बच सकता हूं?

<script type="text/javascript"> $('#myElement').html('say hello to <?php echo $mystringWithSingleQuotes ?>'); </script> 

Solutions Collecting From Web of "कैसे केवल एकल उद्धरणों से बचने के लिए?"

काफी सरल: echo str_replace('\'', '\\\'', $myString); हालांकि, मैं JSON और json_encode() फ़ंक्शन का उपयोग करने का सुझाव देता हूं क्योंकि यह अधिक विश्वसनीय होगा (उदाहरण के लिए नई पंक्तियां उद्धरण):

 <?php $data = array('myString' => '...'); ?> <script> var phpData = <?php echo json_encode($data) ?>; alert(phpData.myString); </script> 
 str_replace("'", "\'", $mystringWithSingleQuotes); 

केवल एकल उद्धरणों को बदलने के लिए, इस सरल कथन का उपयोग करें:

 $string = str_replace("'","\\'", $string); 

कुछ मामलों में, मैं इसे केवल एंटिटीज़ में परिवर्तित कर देता हूं:

  //ie $x= ABC\DEFGH'IJKL $x= str_ireplace("'", "&apos;", $x); $x= str_ireplace("\\", "&bsol;", $x); $x= str_ireplace('"', "&quot;", $x); 

HTML पृष्ठ पर, दृश्य आउटपुट एक ही है:

 ABC\DEFGH'IJKL 

हालांकि, स्रोत में यह साफ है

यदि आप वर्णों से बचने के लिए चाहते हैं तो आपके पास addcslashes() उदाहरण के लिए addcslashes() यदि आप केवल सिंगल उद्धरणों से बच सकते हैं जैसे प्रश्न आप कर सकते हैं:

 echo addcslashes($value, "'"); 

और अगर आप ' , " , \ और nul (बाइट नल) से बचने के लिए चाहते हैं तो आप addslashes() उपयोग कर सकते हैं:

 echo addslashes($value); 

लंबे समय से इस समस्या से लड़ने के बाद, मुझे लगता है कि बेहतर समाधान मिला है

दो कार्यों को जोड़ना संभव है HTML के रूप में उपयोग करने के लिए एक स्ट्रिंग से बचें।

यदि आप स्ट्रिंग का उपयोग जावास्क्रिप्ट फंक्शन कॉल में करते हैं, और दूसरे को एक ही उद्धरण से बचने के लिए डबल उद्धरण से बचने के लिए, उन साधारण उद्धरणों से बचने के लिए जो तर्क के चारों ओर जाते हैं।

उपाय:

 mysql_real_escape_string(htmlspecialchars($string)) 

समाधान:

  • जैसे एक जावास्क्रिप्ट समारोह फोन करने के लिए बनाया एक php

गूंज 'onclick = "javascript_function (\'। mysql_real_escape_string (htmlspecialchars ($ स्ट्रिंग))"

सुनिश्चित नहीं है कि आप अपने डेटा के साथ क्या कर रहे हैं, लेकिन आप हमेशा कोशिश कर सकते हैं:

$ string = str_replace ("'", "% 27", $ स्ट्रिंग);

मैं इसका उपयोग तब भी करता हूं जब स्ट्रिंग को संग्रहण के लिए डेटाबेस में भेजा जाता है। % 27 'वर्ण के लिए एन्कोडिंग है, और यह भी GET अनुरोधों के विघटन को रोकने में मदद करता है यदि कोई एकल वर्ण आपके सर्वर पर भेजा गया स्ट्रिंग में शामिल होता है मैं 'जावास्क्रिप्ट और PHP में दोनों के साथ'% 27 'की जगह लेगा, अगर किसी को मैन्युअल रूप से अपने PHP फ़ंक्शन पर कुछ डेटा भेजने की कोशिश करता है। इसे अपने अंतिम उपयोगकर्ता के लिए सुंदर बनाने के लिए, बस अपने सर्वर से वापस आने वाले सभी डेटा के लिए एक प्रतिलोम प्रतिस्थापन फ़ंक्शन चलाएं और सभी% 27 सबस्ट्रिंग को 'के साथ बदलें'।

खुश इंजेक्शन से बचने!

मैंने निम्नलिखित फ़ंक्शन को लिखा था यह निम्नलिखित की जगह लेता है:

एकल बोली ['] स्लेश और एकल उद्धरण [\] के साथ

दो बैकस्लैश [\\] के साथ बैकस्लैश [\]

 function escapePhpString($target) { $replacements = array( "'" => '\\\'', "\\" => '\\\\' ); return strtr($target, $replacements); } 

आप $ प्रतिस्थापन सरणी में वर्ण प्रतिस्थापन जोड़ने या हटाने के लिए इसे संशोधित कर सकते हैं। उदाहरण के लिए, \ r \ n को बदलने के लिए यह "\ r \ n" => "\ r \ n" और "\ n" => "\ n" हो जाता है।

 /** * With new line replacements too */ function escapePhpString($target) { $replacements = array( "'" => '\\\'', "\\" => '\\\\', "\r\n" => "\\r\\n", "\n" => "\\n" ); return strtr($target, $replacements); } 

स्ट्रट्र के बारे में साफ सुवक्ता यह है कि यह लंबे प्रतिस्थापन को पसंद करेगा। उदाहरण, "कूल \ r \ n फ़ेचर" से बचने के बजाय \ n \ n \ n बच जाएगा

यहाँ देखें कि मैंने यह कैसे किया। मूर्ख, लेकिन सरल

 $singlequote = "'"; $picturefile = getProductPicture($id); echo showPicture('.$singlequote.$picturefile.$singlequote.'); 

मैं HTML को आउटपुट करने पर काम कर रहा था जो कि एक तस्वीर दिखाने के लिए जावास्क्रिप्ट कोड कहलाता है …