javascript - history.replaceState and $_GET -


मेरे पास एक कोड है जो localhost / index.php
जावास्क्रिप्ट में मैं उपयोग करता हूं एक इतिहास एपीआई: history.replaceState ({}, null, "? Uid =" + uid); मेरे पृष्ठ का यूआरएल बदलने के लिए ( uid बेतरतीब ढंग से एक चर है उत्पन्न मूल्य) इसके बाद इस जोड़तोप के पते को स्थानीयहोस्ट / इंडेक्स.एफ़पी? यूआईडी = डीक्यू 12312 / एड्स कोड में अपडेट किया गया था।
तब मैं सर्वर कोड पर uid वेरिएबल प्राप्त करने का प्रयास करता हूं : console.log ('& lt;? Php गूंज "$ _GET [uid]";? & Gt;'); । लेकिन मुझे एक अप्रत्याशित मूल्य मिलता है।
localhost / index.php? Uid = dqw12312av - $ _ GET [uid] के लिए मेरी पहली अनुरोध एक खाली स्ट्रिंग होगी।
लेकिन मेरा पहला अनुरोध localhost / index.php? Uid = qwtgas23123 उदाहरण के लिए - $ GET [uid] मेरी पहली अनुरोध का मान होगा और बराबर होगा dqw12312aws और इतने पर। ऐसा क्यों हो रहा है?

आप console.log ('& lt;? Php echo $ _GET ["uid"];? & Gt; '); जावास्क्रिप्ट में, सही है ?. जावास्क्रिप्ट सर्वर साइड पर नहीं है ब्राउज़र द्वारा जावास्क्रिप्ट की व्याख्या की जाती है PHP को सर्वर द्वारा व्याख्या की जाती है, आईई। PHP सर्वर साइड है सर्वर साइड का मतलब है कि केवल कोड को सर्वर साइड-फाईल सर्वर द्वारा चलाया जाता है। (आईई। जब पृष्ठ भरी हुई है)।

जब आप PHP फाइल को लोड करते हैं, तो आप मूल रूप से सर्वर से फाइल में जाने के लिए पूछते हैं, कोई भी PHP पा सकते हैं और इसे निष्पादित कर सकते हैं।

इसका मतलब है, इस में मामले में, कि $ _ GET ['uid'] में uid url-param शामिल होगा जो पृष्ठ लोड हो जाने पर सेट किया गया था। तो

$ _ GET ['uid'] बदल नहीं होगा जब यूआरएल जावास्क्रिप्ट के माध्यम से गतिशील रूप से परिवर्तित हो जाएगा। क्योंकि:
पृष्ठ रिफ्रेश नहीं है & rarr; PHP फ़ाइल नहीं चलती & rarr; PHP कोड को फिर से मूल्यांकन नहीं किया जाता है।


आप जावास्क्रिप्ट का उपयोग करके यूआरएल-क्वेरी स्ट्रिंग को पुनः प्राप्त कर सकते हैं।
EG < / P> <पूर्व> फ़ंक्शन getUrlVar (अनुरोधित की) {var हैश; Var hashes = window.location.href.slice (window.location.href.indexOf ('?') + 1) .split ('& amp;'); के लिए (var i = 0; i & lt; hashes.length; i ++) {हैश = हैश [i] .split ('='); Var कुंजी = हैश [0], वैल = हैश [1]; अगर (कुंजी === अनुरोधित की) {वापसी val; } } विवरण झूठा है; } Var uid = getUrlVar ("uid");

अगर आपको ब्राउज़र में यह यूआरएल है: http: //localhost/index.php? Uid = 1234 तब यूआईडी ऊपर दिए गए कोड में वैरिएबल में 1234


नीचे दिए गए एक टिप्पणी में आपने मुझसे पूछा कि कैसे एक get variable को PHP में भेजना है।

पेज को रीफ़्रेश किए बिना एक PHP- स्क्रिप्ट चलाने के लिए, आप गतिशील अनुरोधों का उपयोग कर सकते हैं। E.G. अजाक्स। - अगर आप वेब-पटकथा और जावास्क्रिप्ट के लिए नए हैं, तो मैं आपको सलाह देता हूं

तो आप अपने index.php में jQuery को शामिल कर सकते हैं और इस जेएस कोड को चला सकते हैं:

<पूर्व> फ़ंक्शन getUrlVar (अनुरोधित की) {var हैश; Var hashes = window.location.href.slice (window.location.href.indexOf ('?') + 1) .split ('& amp;'); के लिए (var i = 0; i & lt; hashes.length; i ++) {हैश = हैश [i] .split ('='); Var कुंजी = हैश [0], वैल = हैश [1]; अगर (कुंजी === अनुरोधित की) {वापसी val; } } विवरण झूठा है; } फ़ंक्शन sendUidToPHP () {$ .post ("receiver.php", {uid: getUrlVar ("uid")}, फ़ंक्शन (डेटा) {// डेटा तर्क में अब php // से प्रतिक्रिया होती है इस बारे में अधिक जानने के लिए Http://api.jquery.com/jquery.ajax // और http://api.jquery.com/jquery.post} देखें); }

रिसीवर.php uid से $ _ POST ['uid'] पढ़ सकता है।


एक और बात यदि uid यूआरएल-परम एक अन्य उपयोगकर्ता के लिए लॉग इन करने के लिए आवश्यक चीज है, तो आपकी स्क्रिप्ट में विशाल सुरक्षा दोष है पर एक नज़र डालें और


Comments

Popular posts from this blog

import - Python ImportError: No module named wmi -

Editing Python Class in Shell and SQLAlchemy -

c# - MySQL Parameterized Select Query joining tables issue -