আমি কীভাবে আমার ইউআরএল পিএইচপি ব্যবহার করে '#' চিহ্নের পরে খণ্ডটি নির্বাচন করতে পারি?
আমি যে ফলাফলটি চাই তা হ'ল "ফটো 45"।
এটি একটি উদাহরণ ইউআরএল:
http://example.com/site/gallery/1#photo45
আমি কীভাবে আমার ইউআরএল পিএইচপি ব্যবহার করে '#' চিহ্নের পরে খণ্ডটি নির্বাচন করতে পারি?
আমি যে ফলাফলটি চাই তা হ'ল "ফটো 45"।
এটি একটি উদাহরণ ইউআরএল:
http://example.com/site/gallery/1#photo45
উত্তর:
যদি আপনি কোনও ব্যবহারকারীর ব্রাউজারে দেখানো হিসাবে হ্যাশ চিহ্ন বা অ্যাঙ্কারের পরে মান পেতে চান: "মানক" এইচটিটিপি দিয়ে এটি সম্ভব নয় কারণ এই মানটি কখনই সার্ভারে প্রেরণ করা হয় না (সুতরাং এটি উপলব্ধ $_SERVER["REQUEST_URI"]
বা অনুরূপ হবে না) পূর্বনির্ধারিত পরিবর্তনশীল)) আপনার ক্লায়েন্ট পক্ষের কিছু ধরণের জাভাস্ক্রিপ্ট ম্যাজিকের প্রয়োজন হবে, উদাহরণস্বরূপ এই মানটিকে একটি পোস্ট প্যারামিটার হিসাবে অন্তর্ভুক্ত করা উচিত।
যদি এটি কেবল যে কোনও উত্স থেকে কোনও পরিচিত ইউআরএল পার্স করার বিষয়ে থাকে তবে এমকি 89 এর উত্তর যদিও পুরোপুরি ঠিক আছে।
alert(window.location.hash);
window.location.hash
করে পুরো টুকরোটি পেয়েছে #
... এবং এটি অবশ্যই জাভাস্ক্রিপ্টে :)
var forms = document.getElementsByTagName('form'); for(var i=0; i<forms.length;i++) forms[i].addEventListener('submit',function(){ var hidden = document.createElement("input"); hidden.setAttribute('type','hidden'); hidden.setAttribute('name','fragment'); hidden.setAttribute('value',window.location.hash); this.appendChild(hidden); });
... আপনার ফর্মের "পদ্ধতি" এর উপর নির্ভর করে আপনি হ্যাশ $_POST['fragment']
বা $_GET['fragment']
.... ম্যাজিকের মাধ্যমে পেয়েছেন!
এই অংশটিকে "খণ্ড" বলা হয় এবং আপনি এটি এইভাবে পেতে পারেন:
$url=parse_url("http://domain.com/site/gallery/1#photo45 ");
echo $url["fragment"]; //This variable contains the fragment
$fragment = parse_url("http://example.com/site/gallery/1#photo45", PHP_URL_FRAGMENT);
if( strpos( $url, "#" ) === false ) echo "NO HASH !";
else echo "HASH IS: #".explode( "#", $url )[1]; // arrays are indexed from 0
বা "পুরাতন" পিএইচপি-তে আপনাকে অ্যারে অ্যাক্সেস করতে বিস্ফোরণে প্রাক-সঞ্চয় করতে হবে:
$exploded_url = explode( "#", $url ); $exploded_url[1];
var forms = document.getElementsByTagName('form'); //get all forms on the site
for(var i=0; i<forms.length;i++) forms[i].addEventListener('submit', //to each form...
function(){ //add a submit pre-processing function that will:
var hidden = document.createElement("input"); //create an extra input element
hidden.setAttribute('type','hidden'); //set it to hidden so it doesn't break view
hidden.setAttribute('name','fragment'); //set a name to get by it in PHP
hidden.setAttribute('value',window.location.hash); //set a value of #HASH
this.appendChild(hidden); //append it to the current form
});
আপনার উপর নির্ভর করে form
এর method
বৈশিষ্ট্যাবলী আপনি পিএইচপি এই হ্যাশ পাবেন:
$_GET['fragment']
বা$_POST['fragment']
সম্ভাব্য আয়: 1. ""
[ফাঁকা স্ট্রিং] (কোনও হ্যাশ নেই) 2. পুরো হ্যাশটি #
[হ্যাশ] চিহ্নটি অন্তর্ভুক্ত করছে (কারণ আমরা window.location.hash
জাভাস্ক্রিপ্টটিতে ব্যবহার করেছি যা ঠিক সেভাবে কাজ করে :))
... (নিয়মিত HTTP অনুরোধ বিবেচনা করার সময় নয়) ...
... আশা করি এটি সাহায্য করেছে :)
আমি এটির জন্য কিছুটা কাজের জন্য অনুসন্ধান করেছি - এবং আমি খুঁজে পেয়েছি কেবলমাত্র "অ্যাঙ্কর" পড়ার জন্য ইউআরএল পুনর্লিখনগুলি ব্যবহার করা। আমি এখানে অ্যাপাচি ডক্সে পেয়েছি http://httpd.apache.org/docs/2.2/rewrite/advanced.html নিম্নলিখিত ...
ডিফল্টরূপে, এইচটিএমএল অ্যাঙ্কারে পুনঃনির্দেশ কাজ করে না, কারণ মোড_আরউইরট # অক্ষর থেকে অব্যাহতি পেয়ে এটিকে% 23 এ পরিণত করে। এটি পরিবর্তে পুনঃনির্দেশটি ভেঙে দেয়।
সমাধান: পুনর্লিখনের উপর [এনই] পতাকা ব্যবহার করুন। এনই মানে নো এস্কেপ।
আলোচনা: এই কৌশলটি অবশ্যই অন্যান্য বিশেষ অক্ষরের সাথেও কাজ করবে যা ডিফল্টরূপে, ইউআরএল-এনকোডগুলি মোড_উইরাইট করে।
এটিতে অন্যান্য সতর্কতা থাকতে পারে এবং কী না ... তবে আমি মনে করি যে সার্ভারে কমপক্ষে # দিয়ে কিছু করা সম্ভব।
হ্যাশ চিহ্নের পরে আপনি পাঠ্যটি পেতে পারেন না । এটি একটি অনুরোধে সার্ভারে প্রেরণ করা হয় না।
আপনি পিএইচপি দিয়ে মান চাইলে আমি এই কৌশলটি পেয়েছি। অ্যাঙ্কর ( #
) মানটি বিভক্ত করুন এবং এটি জাভাস্ক্রিপ্টের সাহায্যে পাবেন, তারপরে কুকি হিসাবে সংরক্ষণ করুন, তারপরে পিএইচপি দিয়ে কুকি মান পান
আপনি এটি জাভাস্ক্রিপ্ট এবং পিএইচপি এর সংমিশ্রণ দ্বারা করতে পারেন:
<div id="cont"></div>
এবং অন্যদিকে;
<script>
var h = window.location.hash;
var h1 = (win.substr(1));//string with no #
var q1 = '<input type="text" id="hash" name="hash" value="'+h1+'">';
setInterval(function(){
if(win1!="")
{
document.querySelector('#cont').innerHTML = q1;
} else alert("Something went wrong")
},1000);
</script>
তারপরে, ফর্ম জমা দেওয়ার সময় আপনি $ _POST ['হ্যাশ'] এর মাধ্যমে মানটি পুনরুদ্ধার করতে পারেন (ফর্মটি সেট করুন)
আপনি যদি ইউআরএল থেকে গতিশীলভাবে হ্যাশটি ধরতে চান তবে এটি কাজ করা উচিত: https://stackoverflow.com/a/57368072/2062851
<script>
var hash = window.location.hash, //get the hash from url
cleanhash = hash.replace("#", ""); //remove the #
//alert(cleanhash);
</script>
<?php
$hash = "<script>document.writeln(cleanhash);</script>";
echo $hash;
?>
আপনাকে প্রথমে ইউআরএল পার্স করতে হবে, সুতরাং এটি এরকম হয়:
$url = "https://www.example.com/profile#picture";
$fragment = parse_url($url,PHP_URL_FRAGMENT); //this variable holds the value - 'picture'
আপনার যদি বর্তমান ব্রাউজারটির প্রকৃত url বিশ্লেষণ করতে হয় তবে আপনাকে সার্ভারে কল করার জন্য অনুরোধ করতে হবে।
$url = $_SERVER["REQUEST_URI"];
$fragment = parse_url($url,PHP_URL_FRAGMENT); //this variable holds the value - 'picture'
$_SERVER['REQUEST_URI']
নেই না #fragment অন্তর্ভুক্ত
ক্যোরি স্ট্রিংয়ে হ্যাশমার্কের পরে ডেটা পাওয়া সহজ। এখানে যখন একটি ক্লায়েন্ট কোনও বই থেকে শব্দের একটি শব্দকোষ অ্যাক্সেস করে তার জন্য ব্যবহৃত একটি উদাহরণ। এটি নাম নোঙ্গর সরবরাহ করা (#tesla) লাগে এবং ক্লায়েন্টকে সেই পদে সরবরাহ করে এবং শব্দটি এবং এর বর্ণকে নীল বর্ণিত করে যাতে এটি সহজে দেখা যায়।
উ: ডিভিডি আইডির সাহায্যে আপনার স্ট্রিংগুলি সেটআপ করুন, তাই নাম অ্যাঙ্করটি যেখানে চলেছে সেখানে যেতে হবে এবং জাভাস্ক্রিপ্টটি পাঠ্যের রঙ পরিবর্তন করতে পারে
<div id="tesla">Tesla</div>
<div id="tesla1">An energy company</div>
বি। আপনার পিএইচপি পৃষ্ঠাতে বা যেখানেই inোকানো হয়েছে সার্ভারের দিকে ভারী কাজ করতে জাভাস্ক্রিপ্ট ব্যবহার করুন ..
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
সি। পৃষ্ঠাটি লোড হওয়ার পরে আমি স্বয়ংক্রিয়ভাবে জাভা ফাংশন চালু করব।
<script>
$( document ).ready(function() {
ডি সার্ভারের প্রাপ্ত ইউআরএল থেকে অ্যাঙ্কর (#tesla) পান
var myhash1 = $(location).attr('hash'); //myhash1 == #tesla
E এর হ্যাশ সাইন অফটি ছাঁটাই করুন
myhash1 = myhash1.substr(1) //myhash1 == tesla
এফ। আমার পদটি এবং বর্ণনাটি হাইলাইট করতে হবে যাতে আমি একটি নতুন ভার তৈরি করি
var myhash2 = '1';
myhash2 = myhash1.concat(myhash2); //myhash2 == tesla1
জি। এখন আমি শব্দটি এবং বর্ণনার জন্য পাঠ্যের রঙটি ব্যবহার করতে পারি
var elem = document.getElementById(myhash1);
elem.style.color = 'blue';
elem = document.getElementById(myhash2);
elem.style.color = 'blue';
});
</script>
এইচ। এটি কাজ করে। ক্লায়েন্ট ক্লায়েন্টের পাশে লিঙ্ক ক্লিক করে (xyz.com # টেসলা) এবং পদটিতে ডানদিকে যায়। শব্দটি এবং বিবরণটি দ্রুত পড়ার জন্য জাভাস্ক্রিপ্ট দ্বারা নীলভাবে হাইলাইট করা হয়েছে .. অন্যান্য সমস্ত এন্ট্রি কালো রেখে দেওয়া হয়েছে ..