PHP'de URL parametresini AL


190

Ben php bir url parametresi olarak bir URL geçmek çalışıyorum ama bu parametre almaya çalıştığınızda hiçbir şey almak

Aşağıdaki URL formunu kullanıyorum:

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

Ben halletmeye çalışıyorum:

$_GET['link'];

Ama hiçbir şey geri dönmedi. Sorun nedir?


15
Tam kodunuzu göster
Pekka

3
param yapmak var_dump, $_GETorada olmalı
Naftali aka Neal

1
does $_REQUEST['link']işi? Ayrıca, dizin anahtarının URL'dekilere linkbüyük / küçük harf duyarlı olduğunu unutmayın .
Dutchie432

Aslında denemiyorsunuz $_GETama gönderiyorsunuz.
James

Ve bunun çözümü neydi? Aynı problemi
yaşıyorum

Yanıtlar:


283

$_GETbir işlev veya dil yapısı değildir; yalnızca bir değişkendir (dizi). Deneyin:

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

Özellikle, bir süper küresel : PHP tarafından doldurulmuş ve tüm kapsamlarda bulunan yerleşik bir değişken (bunu global anahtar kelime olmadan bir fonksiyonun içinden kullanabilirsiniz ).

Değişken bulunmayabileceğinden, kodunuzun aşağıdakilerle ilgili bildirimleri tetiklemediğinden emin olabilirsiniz (ve yapmanız gerekir):

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

Alternatif olarak, manuel dizin kontrollerini atlamak ve belki başka doğrulama eklemek istiyorsanız filtre uzantısını kullanabilirsiniz :

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

Son olarak, eksik parametreleri işlemek için null birleştirme operatörünü ( PHP / 7.0'dan beri mevcuttur ) kullanabilirsiniz:

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

14
Benim gibi, bilmenizden daha fazla bir şey yoksa, bu 'link' URL adresindeki değişkenin adıdır! Yani $ _GET ['link'] ile; URL'yi şu şekilde girmeniz gerekir: localhost /? link = test
Firzen

WAMP kullanıyorum localhostve bu çözüm çalışmıyor. http://localhost/station?type=2 echo $_GET['type'];olduğununull
NineCattoRules

Sonunda kullandım parse_str(parse_url($actual_link)['query'], $params);. Daha fazla bilgi stackoverflow.com/a/11480852/4458531
NineCattoRules

"$ _GET bir işlev veya dil yapısı değil - sadece bir değişken (dizi)" diyorsunuz, ancak değerlere dizin aracılığıyla erişmiyoruz, bunun yerine değerlere dize üzerinden erişiyorsunuz. Bu bir diziden daha çok bir sözlük mü?
ScottyBlades

1
@ScottyBlades PHP veri yapıları bağlamında konuşuyorum. PHP'de bir dizi , anahtar / değer kombinasyonlarının sıralı bir listesidir. Bu, diğer dillerin (ör. C veya JavaScript) "dizi" dediği şeyden farklıdır.
Álvaro González

27

Lütfen kodunuzu gönderin,

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

veya

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

do işi ...



18

Bunu kullan:

$parameter = $_SERVER['QUERY_STRING'];
echo $parameter;

Veya sadece şunu kullanın:

$parameter = $_GET['link'];
echo $parameter ;

10

Kabul edilen cevap iyidir. Ancak böyle bir senaryo varsa:

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

Adlandırılan bağlantıya şöyle bir sorgu dizesi gibi davranabilirsiniz:

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

Ardından, şu şekilde erişin:

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

3

Herhangi bir şey alıyordu $_GET["..."](örneğin print_r($_GET)boş bir dizi verdi) henüz $_SERVER['REQUEST_URI']şeyler orada olması gerektiğini gösterdi. Sonunda .htaccess'im orada yeniden yönlendirdiği için sadece web sayfasına ulaştığım ortaya çıktı (404 işleyicim aynı .php dosyasıydı ve test ederken tarayıcıda bir yazım hatası yapmıştım).

Sadece adını değiştirmek aynı php kodu 404 yönlendirme tekme değildi kez çalıştı anlamına geliyordu!

Yani yolu vardır $_GET php kodunun doğru olsa bile hiçbir şey dönebilirsiniz.


3
$Query_String  = explode("&", explode("?", $_SERVER['REQUEST_URI'])[1] );
var_dump($Query_String)

Dizi ([0] => link = www.google.com)


0

Kim bir şey geri almazsa, sanırım sonucu html etiketlerine dahil etmek zorunda,

Bunun gibi:

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

5
Hayır, html etiketleri gerekli değildir. Düz metin tüm tarayıcılar tarafından oluşturulur .
MarcoS

-1

Alvaro'un dediği gibi, $ _GET bir işlev değil, parametreleri içeren bir dizidir. Böylece, bu diziden bir öğeyi

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

Beklenen OP:

www.google.com
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.