जवाबों:
मुख्य समस्या यह है कि ब्राउज़र एक टुकड़ा भाग के साथ एक अनुरोध भी नहीं भेजेगा। ब्राउज़र में टुकड़ा भाग को वहीं हल किया जाता है। तो यह जावास्क्रिप्ट के माध्यम से उपलब्ध है।
वैसे भी, आप एक URL को बिट्स में विभाजित कर सकते हैं, जिसमें अंश भाग सहित, parse_url () का उपयोग कर सकते हैं , लेकिन यह स्पष्ट रूप से आपका मामला नहीं है।
सरल परीक्षण, http तक पहुँच : // localhost: 8000 / hello; foo = bar # यह-नहीं-भेजा गया सर्वर है
python -c "import SimpleHTTPServer;SimpleHTTPServer.test()"
Serving HTTP on 0.0.0.0 port 8000 ...
localhost - - [02/Jun/2009 12:48:47] code 404, message File not found
localhost - - [02/Jun/2009 12:48:47] "GET /hello?foo=bar HTTP/1.1" 404 -
सर्वर #appendage के बिना अनुरोध प्राप्त करता है - हैश टैग के बाद कुछ भी बस क्लाइंट पर एक एंकर लुकअप है।
आप उदाहरण के रूप में जावास्क्रिप्ट का उपयोग करके URL के भीतर उपयोग किए गए एंकर का नाम पा सकते हैं:
<script>alert(window.location.hash);</script>
PHP में parse_url () फ़ंक्शन काम कर सकता है अगर आपके पास पहले से ही आवश्यक URL स्ट्रिंग है जिसमें टुकड़ा ( http://codepad.org/BDqjtXix ) शामिल है:
<?
echo parse_url("http://foo?bar#fizzbuzz",PHP_URL_FRAGMENT);
?>
Output: fizzbuzz
लेकिन मुझे नहीं लगता कि PHP के टुकड़े की जानकारी प्राप्त होती है क्योंकि यह केवल क्लाइंट है।
यह जावास्क्रिप्ट से पुनर्प्राप्ति योग्य है - जैसा कि window.location.hash
। वहां से आप इसे उदाहरण के लिए अजाक्स के साथ सर्वर पर भेज सकते हैं, या इसे एनकोड कर सकते हैं और इसे URL में डाल सकते हैं जिसे तब सर्वर-साइड से गुजारा जा सकता है।
हैश को कभी भी सर्वर पर नहीं भेजा जाता है, इसलिए नहीं।
हां यह सच है, सर्वर को एंकर हिस्सा नहीं मिलता है। हालाँकि कुकीज़ का उपयोग करके एक वर्कअराउंड है। आप इसे यहां देख सकते हैं: http://www.stoimen.com/blog/2009/04/15/read-the-anchor-part-of-the-url-with-php/
जवाब न है।
हैश का मुख्य उद्देश्य उस पृष्ठ के एक निश्चित भाग पर स्क्रॉल करना है जहाँ आपने बुकमार्क परिभाषित किया है। जैसे पेज लोड होने पर इस हिस्से पर स्क्रॉल करें।
ब्राउज़ इस तरह स्क्रॉल करेगा कि यह लाइन पृष्ठ की पहली दृश्यमान सामग्री है, जो इस बात पर निर्भर करती है कि लाइन के नीचे कितनी सामग्री है।
हाँ जावास्क्रिप्ट यह आरोप लगा सकता है, और फिर एक साधारण अजाक्स कॉल जादू करेगा
व्हाट अबाउट:
डायनामिक रूप से #hash पकड़ो
<script>
var urlhash = window.location.hash, //get the hash from url
txthash = urlhash.replace("#", ""); //remove the #
//alert(txthash);
</script>
<?php
$hash = "<script>document.writeln(txthash);</script>";
echo $hash;
?>
इसे और धाराप्रवाह बनाने के लिए:
सिर्फ जावास्क्रिप्ट और PHP का उपयोग करके पूर्ण उदाहरण
<script>
var urlhash = window.location.hash, //get the hash from url
txthash = urlhash.replace("#", ""); //remove the #
function changehash(a,b){
window.location.hash = b; //add hash to url
//alert(b); //alert to test
location.reload(); //reload page to show the current hash
}
</script>
<?php $hash = "<script>document.writeln(txthash);</script>";?>
<a onclick="changehash(this,'#hash1')" style="text-decoration: underline;cursor: pointer;" >Change to #hash1</a><br/>
<a onclick="changehash(this,'#hash2')" style="text-decoration: underline;cursor: pointer;">Change to #hash2</a><br/>
<?php echo "This is the current hash: " . $hash; ?>
मुझे लगता है कि हैश-मूल्य केवल क्लाइंट-साइड का उपयोग किया जाता है, इसलिए आप इसे php के साथ प्राप्त नहीं कर सकते।
यद्यपि आप इसे जावास्क्रिप्ट के साथ php पर पुनर्निर्देशित कर सकते हैं।
<?php
$url=parse_url("http://domain.com/site/gallery/1?user=12#photo45 ");
echo $url["fragment"]; //This variable contains the fragment
?>
यह काम होना चाहिए
एक की गु हिस्सा यूआरआई के बाद #
/ क्लाइंट पक्ष पर कार्रवाई की है (देखें "टुकड़ा" कहा जाता है और है ही उपलब्ध परिभाषा से है https://en.wikipedia.org/wiki/Fragment_identifier )।
क्लाइंट की ओर से, इसके साथ javaScript का उपयोग करके एक्सेस किया जा सकता है window.location.hash
।
हाँ तुम कर सकते हो:
त्रुटियों को रोकने के लिए इस विधि का उपयोग करें:
<script>
query=location.hash;
document.cookie= 'anchor'+query;
</script>
और निश्चित रूप से PHP में, उस पिल्ला को विस्फोट करें और मूल्यों में से एक प्राप्त करें
$split = explode('/', $_COOKIE['anchor']);
print_r($split[1]); //to test it, use print_r. this line will print the value after the anchortag
एक और उपाय है कि php पेज पर एक छिपे हुए इनपुट फील्ड को जोड़ा जाए:
<input type="hidden" id="myHiddenLocationHash" name="myHiddenLocationHash" value="">
जावास्क्रिप्ट / jQuery का उपयोग करके आप इस क्षेत्र का मान पेज लोड या किसी ईवेंट का जवाब दे सकते हैं:
$('#myHiddenLocationHash').val(document.location.hash.replace('#',''));
सर्वर की ओर php में आप $ _POST संग्रह का उपयोग करके इस मान को पढ़ सकते हैं:
$server_location_hash = $_POST['myHiddenLocationHash'];
हम इसे दूसरे दृष्टिकोण से भी कर सकते हैं, जैसे सबसे पहले js से हैश वैल्यू प्राप्त करें और उस पैरामीटर का उपयोग करके ajax को कॉल करें और हम जो चाहें कर सकते हैं
www.example.com/?val=1#part2
आपको इसे सर्वर पर पुनर्निर्देशित करना होगा, इस तरह:www.example.com/?redirectUrl=%2F%3Fval%3D1%23part2
और निश्चित रूप से आपको अपने दूसरे पृष्ठ में उस यूआरएल को पुनर्निर्देशित करने के लिए समर्थन में जोड़ना होगा। कमाल नहीं है, और बेशक सभी मामलों के उपयोग के लिए काम नहीं करता है, लेकिन बुकमार्क के लिए काम करता है। ध्यान दें कि यदि आप ऐसा करते हैं, तो आपको रीडायरेक्ट करने के लिए पूर्ण urls, केवल सापेक्ष url की अनुमति देनी चाहिए, यह सुनिश्चित करने के लिए कि आप अपने आप को असुरक्षित रीडायरेक्ट