Bagaimana cara mendapatkan semua parameter dari url di php?

Mittineague

Anda bisa menggunakan array_diff_key

Luar biasa, saya sangat suka naskah Anda

Saya tertarik dan menambahkan yang berikut dan bertanya-tanya apakah ini bisa disederhanakan?

<?php declare(strict_types=1); // PHP 7 specific error_reporting(-1); ini_set('display_messages', 'true'); function fred($val,$title='Nothing set') { echo '<pre>' .$title .' = '; print_r($val); echo '</pre>'; }// $title = 'casbboy'; $test = '//localhost/aQQQ/kill/index-005.php?x=1&y=2&z=3&two=two&four=four'; // CAN THIS BE SIMPLIFIED??? $ok_keys ['one'] = isset($_GET['one']) ? $_GET['one'] : NULL; $ok_keys ['two'] = isset($_GET['two']) ? $_GET['two'] : NULL; $ok_keys ['three'] = isset($_GET['three']) ? $_GET['three'] : NULL; $ok_keys ['four'] = isset($_GET['four']) ? $_GET['four'] : NULL; $ok_keys ['five'] = isset($_GET['five']) ? $_GET['five'] : NULL; foreach( $ok_keys as $val => $get): if( NULL===$get): unset( $ok_keys[$val] ); endif; endforeach; // CAN THIS BE SIMPLIFIED??? $extras = 'No GET array'; if ($_GET) { $extras = array_diff_key($_GET, $ok_keys); } ?> <!DOCTYPE HTML> <html lang="en"> <head> <title> <?= $title ?> </title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width,initial-scale=1"> </head> <body> <h1> <?= $title ?> </h1> <h4> <a href="<?= $test ?> "> <?= $test ?> </a> </h4> <h5> Results </h5> <?php fred($extras, '$extras'); fred($ok_keys, '$ok_keys '); ?> </body> </html>

Keluaran

casbboy

http. //localhost/aQQQ/kill/index-005. php?x=1&y=2&z=3&dua=dua&empat=empat

Hasil

$ekstra = Larik
(
=> 1
[y] => 2
[z] => 3
)
$ok_keys = Larik
(
[dua] => dua
[empat] => empat
)

Dalam tutorial PHP pemula ini, kami akan menunjukkan cara mengambil parameter string kueri dari URL. Kami juga akan memberi tahu Anda tentang beberapa jebakan yang paling umum

Ambil URL berikut sebagai contoh, yang berisi dua parameter GET

halaman. php?id=23&halaman=34

Di URL di atas, kami memiliki dua parameter GET. id, yang berisi nilai 23, dan halaman, yang berisi nilai 34

Katakanlah kita ingin mengambil nilai-nilai itu sehingga kita dapat menggunakannya dalam skrip PHP kita

Jika kita ingin mengambil nilai dari kedua parameter tersebut, kita dapat mengakses array superglobal $_GET seperti itu

//Get our two GET parameters. $id = $_GET['id']; $page = $_GET['page'];_

Meskipun kode PHP akan berfungsi, itu salah mengasumsikan bahwa parameter GET yang dimaksud akan selalu ada

Akibatnya, ada kemungkinan skrip kami akan menampilkan pemberitahuan indeks tidak terdefinisi yang jelek jika pengguna menghapus salah satu parameter dari URL

Ini akan mengakibatkan PHP memuntahkan pesan berikut

Memperhatikan. Indeks yang tak terdefinisi. id di /path/ke/file. php pada baris 4

Untuk menghindari masalah seperti ini, Anda perlu memeriksa apakah variabel GET ada sebelum Anda mencoba menggunakannya

$id = false; if(isset($_GET['id'])){ $id = $_GET['id']; } $page = false; if(isset($_GET['page'])){ $page = $_GET['page']; }

Pada contoh di atas, kami menggunakan fungsi isset PHP untuk memeriksa apakah parameter yang dimaksud benar-benar ada atau tidak

Jika memang ada, kami menugaskannya ke salah satu variabel kami. Jika tidak, maka variabel kita akan mempertahankan nilai FALSE defaultnya

Jangan pernah mempercayai parameter GET. Selalu validasi mereka

Parameter GET harus selalu diperlakukan dengan sangat hati-hati

  1. Anda tidak dapat berasumsi bahwa mereka akan selalu ada
  2. Jika memang ada, Anda tidak dapat mengabaikan kemungkinan bahwa pengguna telah merusaknya

Dengan kata lain, jika Anda mengharapkan id menjadi nilai integer dan pengguna memutuskan untuk mengubahnya secara manual menjadi "blahblahblah", skrip PHP Anda harus dapat menangani skenario itu

Parameter URL adalah variabel eksternal, dan variabel eksternal tidak pernah bisa dipercaya

Jangan pernah langsung mencetak parameter GET ke halaman

Mencetak parameter GET tanpa membersihkannya adalah resep bencana, karena ini akan membuat aplikasi web Anda terbuka lebar untuk serangan XSS

Ambil contoh berikut

$page = false; if(isset($_GET['page'])){ $page = $_GET['page']; } if($page !== false){ echo '<h1>Page: ' . $page . '</h1>'; }

Di sini, kami telah melakukan segalanya dengan benar kecuali langkah terakhir

  1. Kami memeriksa untuk melihat apakah parameter GET ada sebelum kami mengakses nilainya
  2. Kami tidak mencetak nomor halaman jika tidak ada

Namun, kami tidak membersihkan variabel sebelum mencetaknya. Ini berarti penyerang dapat dengan mudah mengganti variabel GET kami dengan HTML atau JavaScript dan menjalankannya saat halaman dimuat

Mereka kemudian dapat mengarahkan pengguna lain ke tautan "tercemar" ini

Untuk melindungi diri dari XSS, kita dapat menggunakan fungsi PHP htmlentities

//Guarding against XSS if($page !== false){ echo '<h1>Page: ' . htmlentities($page) . '</h1>'; }_

The htmlentities function will guard against XSS by converting all special characters into their relevant HTML entities. For example, will become

Bagaimana Anda bisa mendapatkan URL saat ini dengan semua parameter?

Untuk mendapatkan parameter URL, ada 2 cara. .
Dengan menggunakan Objek URLSearchParams
Dengan menggunakan Memisahkan dan mengakses setiap pasangan parameter

Bagaimana Anda menanyakan parameter dalam URL?

Parameter kueri adalah kumpulan parameter yang ditentukan yang dilampirkan di akhir url. Itu adalah ekstensi dari URL yang digunakan untuk membantu menentukan konten atau tindakan tertentu berdasarkan data yang diteruskan. Untuk menambahkan parameter kueri ke akhir URL, a '? ' ditambahkan diikuti langsung oleh parameter kueri .

Bagaimana cara mendapatkan URL lengkap di PHP?

Variabel superglobal yang diperlukan seperti $_SERVER['HTTPS'], $_SERVER['REQUEST_URI'], $_SERVER['SERVER_PORT'] are used to get full URL in PHP. The variable HTTPS can easily retrieve the protocol in the URL of a webpage. If it returns a value “on”, then the protocol is HTTPS.

Bagaimana cara mendapatkan string dari URL di PHP?

Menggunakan fungsi parse_url() dan parse_str . Sintaks fungsi ini seperti itu. parse_str($string, $array);

Postingan terbaru

LIHAT SEMUA