2009-12-24 13 views
5

एसओ में किसी ने मुझे बताया कि यूआरएल में हैश (#) को php function parse_url द्वारा पुनर्प्राप्त किया जा सकता है? क्या ये सच है?PHP के साथ url में हैश पुनर्प्राप्त करें?

मेरी वेबसाइट को बहुत सारे AJAX प्रभाव मिल गए हैं और मैं index.php पर हैश के साथ एक यूआरएल पास करने में सक्षम होना चाहता हूं ताकि यह हैश मानों के आधार पर जानकारी प्रदर्शित कर सके।

उदाहरण के लिए। यदि कोई उपयोगकर्ता मेरी वेबसाइट पर क्लिक करता है और नेविगेट करता है और उसे वह चीज़ मिलती है जिसे वह साझा करना चाहता है, तो वह पता कॉपी कर सकता है और उसे अपने दोस्त को भेज सकता है और जब यह व्यक्ति प्रवेश करता है तो वह वही चीज़ देखता है।

मैंने कुकीज़ में हैश मानों को सहेजने के लिए जावास्क्रिप्ट का उपयोग करने का प्रयास किया है, लेकिन यह फ़ायरफ़ॉक्स के साथ काम नहीं कर रहा है और सफारी में इसकी धीमी गति है (एचटीएमएल पहले दिखाएगा, इसलिए किसी को सही सामग्री के लिए दूसरी बार पेज रीफ्रेश करना होगा दिखाया गया)। im बहुत confused..if मैं parse_url मैं php में यूआरएल अपने आप टाइप करने के लिए हैश प्राप्त करने के लिए उपयोग करें:

किसी अन्य समाधान स्वागत

संपादित है? तब बिंदु क्या है ... मेरा सवाल है कि क्या मेरा दोस्त # मानों के साथ यूआरएल दर्ज कर सकता है और php इसे संसाधित कर सकता है? ऐसा लगता है कि नहीं, क्या मैं सही हूँ?

+1

के कुछ उदाहरण कोड क्या आपका मतलब सहायक होगा। – Myles

+0

यदि आप सर्वर पर स्ट्रिंग भेजते हैं तो PHP इसे संसाधित कर सकता है। आप इसे AJAX, एक फॉर्म पोस्ट इत्यादि के माध्यम से कर सकते हैं। – Sampson

+0

लेकिन जब उपयोगकर्ता इसे सही दर्ज करता है तो वेबब्रोसर को थोरूग नहीं करता है? – ajsie

उत्तर

5

parse_url() एक यूआरएल स्ट्रिंग से हैश प्राप्त कर सकते हैं। हस्ताक्षर नोट करें:

mixed parse_url (string $url [, int $component = -1 ]) 

आपको स्ट्रिंग को पहले ही पता होना चाहिए। उदाहरण के लिए, डॉक्स से लिए:

<?php 

    $url = 'http://username:[email protected]/path?arg=value#anchor'; 
    print_r(parse_url($url)); 
    echo parse_url($url, PHP_URL_PATH); 

?> 

आउटपुट

Array 
(
    [scheme] => http 
    [host] => hostname 
    [user] => username 
    [pass] => password 
    [path] => /path 
    [query] => arg=value 
    [fragment] => anchor 
) 
/path 

नोट कुंजी के अंतर्गत "टुकड़ा" प्रविष्टि।

+0

तो इसका मतलब है नहीं? – ajsie

+0

जरूरी नहीं है। आप स्ट्रिंग को सर्वर पर पास कर सकते हैं, और फिर parse_url का उपयोग कर सकते हैं। – Sampson

+1

आप जावास्क्रिप्ट में 'window.location.hash' के साथ उस हैश मान तक पहुंच सकते हैं – Sampson

11

यूआरएल में हैश भी सर्वर पर प्राप्त नहीं करता है। सर्वर पक्ष पर किसी भी प्रोग्रामिंग भाषा से आप इसे एक्सेस नहीं कर सकते हैं।

0

किसी अतः यहाँ मुझे बताया कि URL में हैश (#) php समारोह parse_url द्वारा पुनः प्राप्त किया जा सकता है? क्या यह सच है?

हाँ:

parse_url('http://stackoverflow.com/questions/1957030/retrieve-the-hash-in-the-url-with-php/1957040#1957040', PHP_URL_FRAGMENT); // 1957040 

लेकिन आप पूर्ण URL जानने à प्रायोरी, यकीन नहीं करता है, तो HTTP_REFERER इस हैश रखती है (नहीं लगता) के बिना सर्वर साइड पर हैश निर्धारित नहीं कर सकता।

0

एक बार जब आप जावास्क्रिप्ट का उपयोग कर #VALUE मिलता है, ajax या .... यूआरएल का उपयोग कर सर्वर से वापस भेज दें: http://example.in/?paramvalue=PKDVS4G#access_token=463d3d40-bdbb-04f3-ddb2-c35e2bd9ffa8

<script>  
alert(window.location.hash); 
var myhashvalue = window.location.hash; 
//hash value like : #access_token=463d3d40-bdbb-04f3-ddb2-c35e2bd9ffa8 
//ajax call to send myhashvalue to server 
</script> 
संबंधित मुद्दे