2012-02-01 15 views
5

Adding Values to a Query String in a URL की निरंतरता के रूप में, मेरे पास एक खोज बॉक्स है जो वर्तमान यूआरएल में अतिरिक्त तर्क जोड़ देगा।फॉर्म पर वर्तमान यूआरएल पास करें

http://example.com/?s=original+new+arguments&fq=category 

प्रपत्र कोड इस तरह दिखता है:

<form id="FilterSearch" method="get" action="http://example.com/search_result.php"> 

search_result.php मैं कहां से जमा करें और नया URL का उपयोग कर अनुप्रेषित पार्स करने के लिए बनाई गई सिर्फ एक नया पृष्ठ है।

मैं मूल URL को search_result.php पर कैसे पास कर सकता हूं ताकि मैं यूआरएल में हेरफेर कर सकूं?

संपादित करें # 1:

<?php $current_url = $_SERVER["HTTP_HOST"] . $_SERVER["REQUEST_URI"]; ?> 
<input type="hidden" name="current_url" value="<?php $current_url; ?>" /> 
<input name="send" id="send" type="submit" value="Search" /> 

मेरे उत्पादन केवल सबमिशन पृष्ठ (search_result.php) और नहीं इरादा क्वेरी पृष्ठ पर तर्क जोड़ रहा है: मैं एक छिपे हुए इनपुट गयी।

<?php 
if (isset($_GET['send'])){ 
       $searchField = urlencode($_GET['SearchField']); 
       $location = $_GET['current_url']; 
       $location = preg_replace($location, '/([?&]s=)([^&]+)/', '$1$2+'.$searchField); 
       header('Location: '.$location); 
       } 
?> 

मैं या तो कर रहा हूँ उन्हें गलत गुजर या उन्हें गलत या दोनों हो रही!

संपादित करें # 2: आउटपुट यूआरएल की तरह है:

http://example.com/wp-content/themes/child_theme/search_result.php?SearchField=newTerm&current_url=www.example.com%2F%3Fs%3DoldTerm%26searchsubmit%3D&send=Search 

संपादित # 3 मैं उत्पादन यूआरएल गूँजती और यह सही है। मैं preg_match से छुटकारा पा रहा हूं यह देखने के लिए कि क्या मैं प्रपत्र संसाधित करते समय एक ही यूआरएल प्राप्त कर सकता हूं। दिलचस्प बात यह है कि मुझे एक पृष्ठ नहीं मिला। मैं http जोड़ने का निर्णय लिया: // शीर्षक और यह काम किया:

header('Location: http://'.$location); 

तो इसलिए, मुझे विश्वास है कि केवल एक चीज गलत यहाँ preg_replace है।

+0

ऐसा लगता है कि मूल्य क्या करने की जरूरत = ""। dfsq इस विधि के लिए एक विकल्प के रूप में पता चलता है की तरह तुम भी $ _SERVER [ 'HTTP_REFERER'] इस्तेमाल कर सकते हैं, लेकिन यह हमेशा विश्वसनीय नहीं है। –

+0

न तो काम किया:/ – AlxVallejo

+0

क्या आपको अपने $ स्थान चर में कोई मूल्य मिल रहा है? –

उत्तर

8

मुझे लगता है कि आप छिपे हुए इनपुट की तलाश में हैं।

कुछ इस तरह:

<input type="hidden" name="current_url" value="(Current URL here)" /> 

फिर किसी भी अन्य $ _GET या $ _POST पैरामीटर ठीक वैसे ही जैसे उस तक पहुँच।


संपादित करें संपादन के लिए प्रतिक्रिया करने:

सकता है आप echo $location; die; इस लाइन के बाद:

$location = $_GET['current_url']; 

और मुझे पता है कि उत्पादन कौन है? यह हमें बताएगा कि क्या इसे गलत तरीके से पारित किया जा रहा है या गलत तरीके से संसाधित किया जा रहा है।

+0

देखना मेरी उत्पादन यूआरएल – AlxVallejo

+0

निवारण करने के लिए मेरा उत्तर संपादित देखें। –

+0

EDIT # 3 देखें (मैं सभी संपादनों के लिए क्षमा चाहता हूं!) – AlxVallejo

1

बस अपने search_result.php में $_SERVER['HTTP_REFERER'] का उपयोग करें। एक और विकल्प छुपा इनपुट का उपयोग करना है, लेकिन मैं पहले के साथ जाऊंगा।

+0

मैं असहमत हूं, रेफरर कुछ वातावरणों पर स्थिर नहीं हो सकता है। यदि छुपा इनपुट का उपयोग करने के लिए यह छोटा प्रयास है, तो इसके बजाय उस विधि का उपयोग करें। –

0

वर्तमान यूआरएल प्राप्त करने का बेहतर तरीका आप एक छिपी हुई इनपुट बनाते हैं और इसमें आप वर्तमान यूआरएल पास करते हैं और सर्वर अंत में पकड़ते हैं। अर्थात।

<input type="hidden" name="cur_url" value="(your Current URL here)" /> 
संबंधित मुद्दे