PHP में URL पैरामीटर प्राप्त करें


190

मैं php में एक URL को url पैरामीटर के रूप में पास करने की कोशिश कर रहा हूं, लेकिन जब मैं इस पैरामीटर को प्राप्त करने की कोशिश करता हूं तो मुझे कुछ भी नहीं मिलता है

मैं निम्नलिखित url फ़ॉर्म का उपयोग कर रहा हूं:

http://localhost/dispatch.php?link=www.google.com

मैं इसे पाने की कोशिश कर रहा हूं:

$_GET['link'];

लेकिन कुछ भी नहीं लौटाया। समस्या क्या है?


15
अपना पूरा कोड दिखाएँ
Pekka

3
कर var_dumpकी $_GETपरम, यह होना चाहिए
Naftali उर्फ नील

1
$_REQUEST['link']काम करता है ? यह भी ध्यान रखें कि इंडेक्स कुंजी linkकेस-संवेदी है जो url में है।
डचै 432

आप वास्तव में कोशिश नहीं कर रहे हैं $_GETलेकिन पोस्टिंग हो रही है क्या आप हैं?
जेम्स

और इसका हल क्या था? समान समस्या होने पर
Ixx

जवाबों:


282

$_GETकोई फ़ंक्शन या भाषा निर्माण नहीं है - यह सिर्फ एक चर (एक सरणी) है। प्रयत्न:

<?php
echo $_GET['link'];

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

चूँकि चर मौजूद नहीं हो सकता है, आप यह सुनिश्चित कर सकते हैं (और कि आपका कोड इसके साथ नोटिस ट्रिगर न करे):

<?php
if (isset($_GET['link'])) {
    echo $_GET['link'];
} else {
    // Fallback behaviour goes here
}

वैकल्पिक रूप से, यदि आप मैन्युअल अनुक्रमणिका जाँच को छोड़ना चाहते हैं और शायद आगे मान्यताएँ जोड़ते हैं तो आप फ़िल्टर एक्सटेंशन का उपयोग कर सकते हैं :

<?php
echo filter_input(INPUT_GET, 'link', FILTER_SANITIZE_URL);

अंतिम लेकिन कम से कम, आप गायब पैरामीटर को संभालने के लिए अशक्त सहवर्ती ऑपरेटर ( PHP / 7.0 के बाद से उपलब्ध ) का उपयोग कर सकते हैं :

echo $_GET['link'] ?? 'Fallback value';

14
यदि आपको मेरे जैसा कुछ नहीं मिला, तो आपको पता होना चाहिए कि 'लिंक' URL पते में परिवर्तनशील नाम है! तो $ _GET ['लिंक'] के साथ; आपको URL इस तरह दर्ज करने की आवश्यकता है: लोकलहोस्ट /? लिंक = टेस्ट
फिरोजान

मैं WAMP का उपयोग कर रहा हूं localhostऔर यह समाधान काम नहीं कर रहा है। http://localhost/station?type=2 echo $_GET['type'];हैnull
NineCattoRules

अंत में मैंने उपयोग किया parse_str(parse_url($actual_link)['query'], $params);। अधिक जानकारी stackoverflow.com/a/11480852/4458531
NineCattoRules

आप कहते हैं "$ _GET एक फ़ंक्शन या भाषा निर्माण नहीं है - यह सिर्फ एक चर (एक सरणी) है" लेकिन हम सूचकांक के माध्यम से मूल्यों तक नहीं पहुंचते हैं, इसके बजाय आप स्ट्रिंग के माध्यम से मूल्यों तक पहुंच रहे हैं। क्या यह एक सरणी से एक शब्दकोश का अधिक है?
स्कॉट्टीब्लाड्स

1
@ScottyBlades मैं PHP डेटा संरचनाओं के संदर्भ में बोल रहा हूं। PHP में, एक सरणी कुंजी / मूल्य संयोजनों की एक क्रमबद्ध सूची है। यह अन्य भाषाओं (जैसे C या JavaScript) से भिन्न है, जिसे "सरणी" कहा जाता है।
अलवारो गोंजालेज

27

कृपया अपना कोड पोस्ट करें,

<?php
    echo $_GET['link'];
?>

या

<?php
    echo $_REQUEST['link'];
?>

ऐसा काम ...


19

यह सुनिश्चित करने के लिए कि आप हमेशा सुरक्षित पक्ष पर हों, सभी प्रकार के अवांछित कोड प्रविष्टि का उपयोग किए बिना

echo filter_input(INPUT_GET,"link",FILTER_SANITIZE_STRING);

Php.net फ़ंक्शन filter_input पर अधिक पढ़ना , या विभिन्न फ़िल्टरों का विवरण देखें



10

स्वीकृत उत्तर अच्छा है। लेकिन अगर आपके पास इस तरह का एक परिदृश्य है:

http://www.mydomain.me/index.php?state=California.php#Berkeley

आप नामित एंकर को इस तरह एक क्वेरी स्ट्रिंग के रूप में मान सकते हैं:

http://www.mydomain.me/index.php?state=California.php&city=Berkeley

फिर, इसे इस तरह एक्सेस करें:

$Url = $_GET['state']."#".$_GET['city'];

3

मैं किसी के लिए कुछ भी नहीं प्राप्त कर रहा था $_GET["..."](जैसे print_r($_GET)एक खाली सरणी दिया गया) फिर भी $_SERVER['REQUEST_URI']दिखाया गया कि सामान होना चाहिए। अंत में यह पता चला कि मैं केवल वेब पेज पर आ रहा था क्योंकि मेरा .htaccess इसे वहां रीडायरेक्ट कर रहा था (मेरा 404 हैंडलर वही .php फ़ाइल था, और मैंने परीक्षण करते समय ब्राउज़र में एक टाइपो बनाया था)।

बस नाम बदलने का मतलब वही php कोड था जो एक बार काम करने के बाद 404 पुनर्निर्देशन में किक नहीं कर रहा था!

तो ऐसे तरीके $_GET हैं जो php कोड सही होने के बावजूद कुछ भी नहीं लौटा सकते हैं।



0

जिसे कुछ भी वापस नहीं मिलता है, मुझे लगता है कि उसे सिर्फ HTML टैग में परिणाम को शामिल करना है,

ऐशे ही:

<html>
<head></head>
<body>
<?php
echo $_GET['link'];
?>
<body>
</html>

5
नहीं, html टैग गैर जरूरी हैं। सादा पाठ सभी ब्राउज़रों द्वारा प्रदान किया जाता है ।
मार्कोस

-1

जैसा कि अल्वारो ने कहा, $ _GET एक फ़ंक्शन नहीं है, लेकिन एक सरणी है जिसमें पैरामीटर होते हैं इसलिए आप उस सरणी से एक तत्व का उपयोग करके पुनः प्राप्त कर सकते हैं

<?php
$link = $_GET['link'];
echo $link;
?>

अपेक्षित ओपी:

www.google.com
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.