DAPATKAN parameter URL dalam PHP


190

Saya mencoba meneruskan URL sebagai parameter url di php tetapi ketika saya mencoba untuk mendapatkan parameter ini saya tidak mendapatkan apa-apa

Saya menggunakan formulir url berikut:

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

Saya mencoba melewatinya:

$_GET['link'];

Tapi tidak ada yang kembali. Apa masalahnya?


15
Tunjukkan kode lengkap Anda
Pekka

3
melakukan var_dumpdari $_GETparam, harus ada
Naftali alias Neal

1
apakah $_REQUEST['link']bekerja? Perlu diingat juga bahwa kunci indeks linkpeka terhadap apa yang ada di url.
Dutchie432

Anda tidak benar-benar mencoba $_GETtetapi kebetulan memposting, bukan?
James

Dan apa solusinya? Memiliki masalah yang sama
Ixx

Jawaban:


283

$_GETbukan fungsi atau konstruksi bahasa — itu hanya variabel (array). Mencoba:

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

Secara khusus, ini adalah superglobal : variabel bawaan yang diisi oleh PHP dan tersedia di semua lingkup (Anda dapat menggunakannya dari dalam suatu fungsi tanpa kata kunci global ).

Karena variabel mungkin tidak ada, Anda dapat (dan harus) memastikan kode Anda tidak memicu pemberitahuan dengan:

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

Atau, jika Anda ingin melewati pemeriksaan indeks manual dan mungkin menambahkan validasi lebih lanjut Anda dapat menggunakan ekstensi filter :

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

Terakhir, Anda dapat menggunakan operator penggabungan nol (tersedia sejak PHP / 7.0 ) untuk menangani parameter yang hilang:

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

14
Jika Anda tidak mendapatkan apa-apa dengan ini, seperti saya, daripada yang seharusnya Anda ketahui, 'tautan' itu adalah nama variabel di alamat URL! Jadi dengan $ _GET ['tautan']; Anda perlu memasukkan URL seperti ini: localhost /? link = test
Firzen

Saya menggunakan WAMP localhostdan solusi ini tidak berfungsi. http://localhost/station?type=2 echo $_GET['type'];adalahnull
NineCattoRules

Akhirnya saya pakai parse_str(parse_url($actual_link)['query'], $params);. Info lebih lanjut stackoverflow.com/a/11480852/4458531
NineCattoRules

Anda mengatakan "$ _GET bukan membangun fungsi atau bahasa — itu hanya variabel (array)" tetapi kami tidak mengakses nilai melalui indeks, sebaliknya Anda mengakses nilai melalui string. Apakah ini lebih dari sebuah kamus daripada sebuah array?
ScottyBlades

1
@ScottyBlades Saya berbicara dalam konteks struktur data PHP. Dalam PHP, array adalah daftar kombinasi kunci / nilai yang diurutkan. Itu berbeda dari bahasa lain (misalnya C atau JavaScript) yang disebut "array".
Álvaro González

27

Silakan kirim kode Anda,

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

atau

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

lakukan pekerjaan ...



18

Gunakan ini:

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

Atau cukup gunakan:

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

10

Jawaban yang diterima bagus. Tetapi jika Anda memiliki skenario seperti ini:

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

Anda dapat memperlakukan jangkar bernama sebagai string kueri seperti ini:

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

Lalu, akses seperti ini:

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

3

Saya belum mendapatkan apa-apa untuk apa pun $_GET["..."](misalnya print_r($_GET)memberi array kosong)$_SERVER['REQUEST_URI'] menunjukkan hal-hal yang harus ada. Pada akhirnya ternyata saya hanya sampai di halaman web karena .htaccess saya mengarahkan ulang di sana (404 handler saya adalah file .php yang sama, dan saya telah membuat kesalahan ketik di browser saat pengujian).

Cukup mengubah nama berarti kode php yang sama berfungsi setelah pengalihan 404 tidak berhasil!

Jadi ada cara yang $_GET bisa mengembalikan apa-apa meskipun kode php mungkin benar.


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

Array ([0] => tautan = www.google.com)


0

Siapa pun yang tidak mendapatkan apa-apa, saya pikir dia hanya harus menyertakan hasilnya dalam tag html,

Seperti ini:

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

5
Tidak, tag html tidak diperlukan. Teks biasa diterjemahkan oleh semua browser.
MarcoS

-1

Seperti yang dikatakan Alvaro, $ _GET bukan fungsi tetapi array yang mengandung parameter Jadi Anda dapat mengambil satu elemen dari array itu menggunakan

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

OP yang diharapkan:

www.google.com
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.