2010-01-21 9 views
42

जब PHP में यह काम कर रही है, एक मुद्दे के इस प्रकार से मिल सकते हैं:PHP के माध्यम से एचटीएमएल विशेषता सेट करने का सबसे अच्छा अभ्यास क्या है?

<span title="<?php echo $variable;?>">... 

समस्या यह है कि अगर $variable दोहरे उद्धरण चिह्नों में शामिल है, यह \"

में बदल जानी चाहिए और वह अभी तक पूरी कहानी नहीं है :

<span title='<?php echo $variable;?>'>... 

इस मामले में, हम \' को एकल उद्धरण बदलने के लिए, लेकिन छोड़ दोहरे उद्धरण चिह्नों के रूप में की जरूरत है।

तो हम इसे सामान्य संपत्ति तरीके से कैसे कर सकते हैं?

उत्तर

63

तुम हमेशा के अंदर एचटीएमएल विशेषताओं HTML एन्कोड करने के लिए बातें, जो आप htmlspecialchars साथ क्या कर सकते हैं:

<span title="<?php echo htmlspecialchars($variable); ?>"> 

आप शायद ENT_QUOTES को दूसरा पैरामीटर ($quote_style) सेट करना चाहते हैं।

केवल संभावित जोखिम है कि $variable पहले से ही इनकोडिंग जा सकता है, तो आप false करने के लिए पिछले पैरामीटर ($double_encode) सेट कर सकते हैं है।

+2

html5 चश्मा यहाँ से पुष्टि: http://stackoverflow.com/questions/5320177/what-values-can-i-put-in-an-html-attribute-value –

+0

+1 "ENT_QUOTES" का जिक्र करते हुए। मैं पहले से ही इस फ़ंक्शन का उपयोग कर रहा था लेकिन डबल कोट्स HTML को गड़बड़ कर देगा। – danielson317

3

ठीक है, एचटीएमएल में किसी भी पाठ को आउटपुट करने से पहले आपको इसे htmlspecialchars() का उपयोग करके बचाना चाहिए। तो बस सुनिश्चित करें कि (डबल) उद्धरण सही ढंग से बदला गया है।

उस फ़ंक्शन के दूसरे पैरामीटर पर ध्यान दें। [: है कि आप को हटा दिया है इस बीच संपादित करें]:

0

अपने संपादित पता करने के लिए जब आप अपनी साइट पर गतिशील रूप से जावास्क्रिप्ट जगह, आप से पहले काफी अच्छी तरह से पता होना चाहिए, यह कैसा लगेगा। अन्यथा आप एक्सएसएस हमलों के लिए व्यापक रूप से दरवाजा खोलते हैं। इसका मतलब यह नहीं है कि आपको प्रत्येक उद्धरण चिह्न को जानना है, लेकिन आपको यह तय करने के लिए पर्याप्त पता होना चाहिए कि इसे उस रेखा पर कैसे एम्बेड करना है जहां आप इसे अंततः HTML फ़ाइल में आउटपुट करते हैं।

इसके अलावा,

<a onclick="func(&apos;l&apos;)"> 

काम करता है वास्तव में

<a onclick="func('l')"> 
संबंधित मुद्दे

 संबंधित मुद्दे