jquery - how to use php $_GET variable with unicode characters? -


 <कोड> & lt; div class = "linkL" & gt; STRAŠNI MIKROSKOP & lt; / div & gt; & Lt;? Php $ अध्याय = "अध्याय /" $ _GET ["ch"] ".php"; $ अध्याय शामिल करें; ? & Gt;  

जेएस

  $ ("। LinkL")। क्लिक करें (फ़ंक्शन () {var a = $ (this) .html (); var b = A.split ('') .जोइंड ('-'); var c = b.toLowerCase (); location.href = "index.php? सी =" + c;});  

पता बार में क्लिक करने के बाद मेरे पास index.php? Ch = strašni-mikroskop है। यही कारण है कि ठीक है, लेकिन फ़ाइल अध्यायों / strašni-mikroskop शामिल नहीं है?

अगर मैं बदलने के लिए s के साथ रों - सब कुछ काम करता है

तो, कैसे मैं का उपयोग करके उपरोक्त कोड का उपयोग कर सकते s यूनिकोड चरित्र

सभी फाइलें UTF8 के रूप में इनकोड

।?।

<पूर्व> location.href = "index.php? Ch =" + c;

आपको एनकोडुरआईकॉन्पेंट (c) की आवश्यकता है अन्यथा, यूआरएल में विशेष रूप से कोई भी अक्षर, जैसे कि % या & amp; , यूआरएल को तोड़ देगा। इसके अलावा यह सुनिश्चित करता है कि यूआरएल में उपयोग एन्कोडिंग यूटीएफ -8 है; स्पष्ट एन्कोडिंग के बिना यह क्या होता है और आप असंगत परिणाम प्राप्त कर सकते हैं।

  $ अध्याय = "अध्याय /" $ _GET ["ch"] ".php"; $ अध्याय शामिल करें;  

समस्या 1: फ़ाइल नाम की एन्कोडिंग को URL में एन्कोडिंग के समान होना चाहिए। इसका मतलब है कि आपको यूटीएफ -8 का उपयोग करने के लिए अपना फ़ाइल ट्रांसफर टूल कॉन्फ़िगर करने की ज़रूरत है (आप यह कैसे करते हैं यह टूल पर निर्भर करता है)। यदि आपका सर्वर विंडोज है तो आप यूटीएफ -8 का उपयोग नहीं कर सकते हैं, इसलिए आपको जानबूझकर अपने फाइलनामों को गलत-सांकेतिक शब्दों में बदलना होगा। (एक पश्चिमी यूरोपीय सर्वर यह कोड पेज 1252 का प्रयोग करेंगे, जिस स्थिति में आप करने के लिए होगा के लिए उदाहरण के लिए अपनी फ़ाइल straÅ¡ni-mikroskop.php गलत वर्तनी।)

संभवत: ऐसा करने की कोशिश करने के योग्य नहीं है क्योंकि यह कमजोर है और जब आप अलग-अलग उपकरण और सर्वर पर जाते हैं तो टूट जाएगा। समस्या 2: यह सुरक्षा छेद है एक हमलावर आपके द्वारा अपेक्षा की जाने वाली फ़ाइलों को निष्पादित करने के लिए मनमानी रिश्तेदार पथनामों जैसे ../ someotherdirectory / x की आपूर्ति कर सकता है। यह अन्य सुविधाओं के साथ संयोजित हो सकता है जैसे एक फ़ाइल अपलोड करने के लिए हमलावर को आपके सर्वर पर मनमाना कोड निष्पादित करने की क्षमता। या किसी में से केवल एक index.php को असीमित लूप और डूएस सर्वर प्राप्त करने में शामिल हो सकता है।

आप इन दोनों समस्याओं से सुरक्षित एन्कोडिंग स्कीम से बच सकते हैं साथ उदाहरण के लिए BIN2HEX (ग) आप अपनी फ़ाइल 73747261c5a16e692d6d696b726f736b6f70.php कह सकते हैं जो कहीं भी / की तरह काम करते हैं और लीक से विशेष वर्ण से बच जाएंगे। < / P>

लेकिन यह आम तौर पर सबसे अच्छा है कि उपयोगकर्ता को एक मनमाना PHP फ़ाइल चुनने की अनुमति न दें। स्क्रिप्ट में संभावनाओं की एक स्थिर सूची के लिए आमतौर पर बेहतर; तो आप अपनी फ़ाइलों को आप क्या पसंद कर सकते हैं। जैसे

  स्विच ($ _GET [ 'ch']) {case 'strašni-mikroskop': 'अध्यायों / strasni-mikroskop.php' शामिल हैं; टूटना; मामले '☃': शामिल 'अध्याय / snowman.php'; टूटना; ...}  

समस्या 3. एक & lt; div & gt; के साथ लिंक को चिह्नित करना, पहुंच, उपयोगिता और एसईओ के लिए बहुत बुरा है क्यों न केवल सामान्य & lt; a & gt; लिंक का उपयोग करें?


Comments

Popular posts from this blog

c# - SignalR: "Protocol error: Unknown transport." when navigating to hub -

c# - WPF Expander overlay used in ItemsControl -

class - Kivy: how to instantiate a dynamic classes in python -