Mittineague Show
Luar biasa, saya sangat suka naskah Anda Saya tertarik dan menambahkan yang berikut dan bertanya-tanya apakah ini bisa disederhanakan?
Keluaran
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
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
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 merekaParameter GET harus selalu diperlakukan dengan sangat hati-hati
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 halamanMencetak 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
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); |