Bagaimana cara membuat tindakan pada halaman yang sama di php?

PHP_SELF adalah variabel yang mengembalikan skrip saat ini sedang dieksekusi. Variabel ini mengembalikan nama dan jalur file saat ini (dari folder root). Anda dapat menggunakan variabel ini di bidang tindakan FORMULIR. Ada juga eksploitasi tertentu yang perlu Anda waspadai. Kami akan membahas semua poin ini dalam artikel ini. Sekarang kita akan melihat beberapa contoh. echo $_SERVER['PHP_SELF'];

a) Misalkan file php Anda terletak di alamat. http://www.yourserver.com/form-action.php

Dalam hal ini, PHP_SELF akan berisi.

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >
0

b) Misalkan file php Anda terletak di alamat tersebut.

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >
_1

Untuk URL ini, PHP_SELF akan menjadi.

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >
_2

Menggunakan variabel PHP_SELF di bidang tindakan formulir

Penggunaan umum variabel PHP_SELF ada di bidang tindakan dari tag

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >
3. Bidang tindakan FORMULIR menginstruksikan tempat mengirimkan data formulir saat pengguna menekan tombol "kirim". Adalah umum untuk memiliki halaman PHP yang sama dengan handler untuk formulir juga

Namun, jika Anda memberikan nama file di bidang tindakan, jika Anda mengubah nama file, Anda juga perlu memperbarui bidang tindakan;

Menggunakan variabel PHP_SELF Anda dapat menulis lebih banyak kode generik yang dapat digunakan di halaman mana pun dan Anda tidak perlu mengedit bidang tindakan

Pertimbangkan, Anda memiliki file bernama form-action. php dan ingin memuat halaman yang sama setelah formulir dikirimkan. Kode formulir yang biasa adalah


<form  method="post" action="form-action.php" >
_

Kita dapat menggunakan variabel PHP_SELF alih-alih “form-action. php”. Kode menjadi

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >

Kode lengkap “form-action. php”

Berikut adalah kode gabungan, yang berisi form dan skrip PHP


php
if(isset($_POST['submit'])) 
{ 
    $name = $_POST['name'];
    echo "User Has submitted the form and entered this name :  $name ";
    echo "
You can use the following form again to enter a new name."
;
} ?>


_

Kode PHP ini berada di atas bagian HTML dan akan dieksekusi terlebih dahulu. Baris kode pertama memeriksa apakah formulir dikirimkan atau tidak. Nama tombol kirim adalah "kirim". Saat tombol kirim ditekan,

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >
_4 akan disetel dan kondisi JIKA akan menjadi benar. Dalam hal ini, kami menampilkan nama yang dimasukkan oleh pengguna

Jika formulir tidak dikirimkan, kondisi IF akan SALAH karena tidak akan ada nilai dalam

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >
4 dan kode PHP tidak akan dieksekusi. Dalam hal ini, hanya formulir yang akan ditampilkan

Apa itu eksploitasi PHP_SELF dan bagaimana cara menghindarinya

Variabel PHP_SELF digunakan untuk mendapatkan nama dan jalur file saat ini tetapi juga dapat digunakan oleh peretas. Jika PHP_SELF digunakan di halaman Anda, maka pengguna dapat memasukkan garis miring (/) dan kemudian beberapa perintah Cross Site Scripting (XSS) untuk dijalankan

Lihat di bawah untuk contoh


<form name="test" action="$_SERVER['PHP_SELF']; ?>" method="post">
_

Sekarang, jika pengguna telah memasukkan URL biasa di bilah alamat seperti

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >
6 kode di atas akan diterjemahkan sebagai

<form name="test" action="form-action.php" method="post">

Ini adalah kasus normal

Sekarang pertimbangkan bahwa pengguna telah memanggil skrip ini dengan memasukkan URL berikut di bilah alamat browser

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >
_7

Dalam hal ini, setelah PHP memproses kode tersebut menjadi


<form name="test" method="post" action="form-action.php"/>
<script>alert('xss')script><foo"">

Anda dapat melihat bahwa kode ini telah menambahkan tag skrip dan perintah peringatan. Saat halaman ini dimuat, pengguna akan melihat kotak peringatan. Ini hanyalah contoh sederhana bagaimana variabel PHP_SELF dapat dieksploitasi

Kode JavaScript apa pun dapat ditambahkan di antara tag "skrip".

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >
_8. Seorang peretas dapat menautkan ke file JavaScript yang mungkin terletak di server lain. File JavaScript itu dapat menyimpan kode jahat yang dapat mengubah variabel global dan juga dapat mengirimkan formulir ke alamat lain untuk mengambil data pengguna, misalnya

Cara Menghindari Eksploitasi PHP_SELF

Eksploitasi PHP_SELF dapat dihindari dengan menggunakan fungsi htmlentities(). Misalnya, kode formulir harus seperti ini untuk menghindari eksploitasi PHP_SELF

<form name="test" action="$_SERVER['PHP_SELF']); ?>" method="post">

Fungsi htmlentities() mengkodekan entitas HTML. Sekarang jika pengguna mencoba mengeksploitasi variabel PHP_SELF, upaya tersebut akan gagal dan hasil dari memasukkan kode berbahaya di URL akan menghasilkan output berikut

<form name="test" method="post" 
action="form-action.php/"><script>alert('xss')&
lt;/script><foo">

Seperti yang Anda lihat, bagian skrip sekarang 'dibersihkan'

Jadi jangan lupa untuk mengonversi setiap kemunculan

<form name="form1" method="post" action="$_SERVER['PHP_SELF']; ?>" >
9 menjadi

php
if(isset($_POST['submit'])) 
{ 
    $name = $_POST['name'];
    echo "User Has submitted the form and entered this name :  $name ";
    echo "
You can use the following form again to enter a new name."
;
} ?>


0 di seluruh skrip Anda

CATATAN. Beberapa server PHP dikonfigurasi untuk mengatasi masalah ini dan mereka secara otomatis melakukan konversi ini. Tapi, mengapa mengambil risiko?

Bagaimana Anda menampilkan data yang dikirimkan pada halaman yang sama dengan formulir?

Solusi 1 . Jika Anda ingin menambahkan konten ke halaman, Anda harus bekerja dengan DOM. Google "buat div javascript" atau "buat span javascript" misalnya, pada dasarnya Anda perlu membuat elemen yang memiliki teks Anda di dalamnya dan menambahkan elemen itu ke bagian halaman yang Anda inginkan . .

Bagaimana cara menampilkan pesan sukses di halaman yang sama di PHP?

php $nama = $_POST['nama']; . agriindiaexp. com'; . kagi@gmail. com'; . $nama\n Email. $email\dan Pesan. \n $message"; if ($_POST['submit']) { if (mail ($to, $subject, $body, $from)) { $success = "

Bagaimana cara mengarahkan ulang ke halaman yang sama di PHP setelah mengirimkan?

Sekarang di PHP, pengalihan dilakukan dengan menggunakan fungsi header() karena ini dianggap sebagai metode tercepat untuk mengalihkan lalu lintas dari satu . Keuntungan utama dari metode ini adalah dapat bernavigasi dari satu lokasi ke lokasi lain tanpa pengguna harus mengklik tautan atau tombol.

Bisakah formulir memiliki dua tindakan PHP?

Tidak, formulir hanya memiliki satu tindakan .