Http dapatkan parameter. POST, GET: perbedaan permintaan satu sama lain

Postingan ini dimaksudkan untuk menjelaskan prinsip transmisi data di Internet menggunakan dua metode utama: GET dan POST. Saya menulisnya sebagai tambahan pada instruksi generator jadwal shift bagi mereka yang mungkin tidak tertarik dengan detailnya ☺.

Kunjungi alamat berikut (ini untuk penjelasan visual): http://calendarin.net/calendar.php?year=2016 Perhatikan bilah alamat browser: calendarin.net/calendar.php?year=2016 Utama file dipanggil, diikuti oleh seharusnya tanda tanya(?) dan parameter “tahun” dengan nilai “2016”. Jadi, semua yang mengikuti tanda tanya adalah permintaan GET. Sederhana saja. Untuk meneruskan lebih dari satu parameter, parameter tersebut harus dipisahkan dengan tanda ampersand (&). Contoh: kalenderin.net/calendar.php?year=2016&display=hari-kerja-dan-hari-libur

File utama masih diberi nama, diikuti tanda tanya (?), lalu parameter “tahun” dengan nilai “2016”, lalu tanda ampersand (&), lalu parameter “display” dengan nilai “hari kerja- dan-hari” -libur".

Parameter GET dapat diubah secara langsung bilah alamat peramban. Misalnya, mengubah nilai "2016" menjadi "2017" dan menekan tombol akan membawa Anda ke kalender tahun 2017.

Ini adalah transfer data secara tersembunyi(alamat halaman tidak berubah); artinya, Anda hanya dapat melihat apa yang ditransfer menggunakan suatu program (skrip). Misalnya, pada alat penghitungan karakter dalam teks berikut, data asli dikirimkan menggunakan metode POST: http://usefulonlinetools.com/free/character-counter.php

Jika Anda memiliki pertanyaan, komentar, dan email saya siap melayani Anda.

Selain metode GET yang telah kita bahas pada postingan sebelumnya, ada metode lain untuk mengirim request melalui protokol HTTP yaitu metode POST. Metode POST juga sangat sering digunakan dalam praktek.

Jika untuk menghubungi server menggunakan metode GET, kita hanya perlu mengetikkan permintaan ke dalam URL, maka dalam metode POST semuanya bekerja dengan prinsip yang berbeda.

Untuk menjalankan permintaan jenis ini, kita perlu mengklik tombol dengan atribut type="submit" yang terletak di halaman web. Perhatikan bahwa tombol ini terletak pada elemen yang atribut metodenya disetel ke post.

Pertimbangkan kode HTML ini:

Masukkan teks:

Jika pengguna memasukkan beberapa teks ke dalam kolom teks dan mengklik tombol “Kirim”, variabel teks akan dikirim ke server dengan nilai konten yang dimasukkan pengguna.

Permintaan POST dan DAPATKAN dengan kata-kata sederhana

Variabel ini akan dikirim menggunakan metode POST.

Jika Anda menulis ini dalam bentuk:

Kemudian data akan dikirim menggunakan metode GET.

Jika, dalam kasus permintaan GET, jumlah data yang dapat kami transfer dibatasi oleh panjang bilah alamat browser, maka dalam kasus permintaan POST, tidak ada batasan seperti itu, dan kami dapat mentransfer jumlah yang signifikan. informasi.

Perbedaan lain antara metode POST dan metode GET adalah metode POST menyembunyikan semua variabel yang dilewatinya dan nilainya di dalam tubuhnya (Entity-Body). Dalam kasus metode GET, mereka disimpan dalam string permintaan (Request-URI).

Berikut adalah contoh permintaan yang dibuat menggunakan metode POST:

POST / HTTP/1.0\r\n
Tuan rumah: www.site.ru\r\n
Referensi: http://www.site.ru/index.html\r\n
Kue: pendapatan=1\r\n
Tipe Konten: application/x-www-form-urlencoded\r\n
Panjang Konten: 35\r\n
\r\n
login=Dima&kata sandi=12345

Jadi, dengan mengirimkan data menggunakan metode POST, akan lebih sulit bagi penyerang untuk mencegatnya, karena mereka tersembunyi dari pandangan langsung, sehingga metode transmisi data POST dianggap sebagai metode yang lebih aman.

Selain itu, dengan menggunakan metode POST Anda tidak hanya dapat mentransfer teks, tetapi juga data multimedia (gambar, audio, video). Ada parameter khusus Tipe Konten, yang menentukan jenis informasi yang akan dikirimkan.

Dan terakhir, untuk menerima data yang dikirimkan dengan metode ini di server, digunakan variabel POST.

Berikut ini contoh pemrosesan di PHP:

Di postingan terakhir, kami memutuskan apa yang dikirimkan oleh browser (klien). server HTTP permintaan, dan server mengirimkan respons HTTP ke klien. Permintaan dan tanggapan ini diformat menurut aturan tertentu. Ada sesuatu seperti sintaksis, bagaimana dan dalam urutan apa itu harus ditulis. Harus ada struktur yang jelas.

Mari kita lihat lebih dekat struktur yang digunakan untuk membangun permintaan dan respons dalam protokol HTTP.

Permintaan HTTP terdiri dari tiga bagian utama, yang muncul dalam urutan di bawah. Di antara header dan isi pesan ada string kosong(sebagai pembatas), ini mewakili karakter baris baru.

String kosong (pembatas)

Permintaan Posting dan Dapatkan, apa perbedaan antara keduanya dan mana yang lebih baik dan untuk tujuan apa?

isi pesan (Badan Entitas) – parameter opsional

String kueri – menentukan metode transfer, URL yang akan diakses, dan versinya protokol HTTP.

Header - menggambarkan isi pesan, menyampaikan berbagai parameter dan informasi dan informasi lainnya.

Badan pesan adalah data itu sendiri yang dikirim dalam permintaan. Isi pesan adalah parameter opsional dan mungkin hilang.

Saat kami menerima permintaan respons dari server, isi pesan paling sering merupakan konten halaman web. Tapi saat melakukan request ke server terkadang juga bisa muncul, misalnya saat kita mentransfer data yang kita isi di form. masukan ke server.

Kami akan melihat setiap elemen permintaan secara lebih rinci dalam catatan berikut.

Misalnya, pertimbangkan satu permintaan nyata ke server. Saya telah menyorot setiap bagian permintaan dengan warna berbeda: baris permintaan berwarna hijau, header berwarna oranye, dan isi pesan berwarna biru.

Permintaan peramban:

Tuan rumah: webgyry.info

Cookie: pengaturan wp

Koneksi: tetap hidup

Dalam contoh berikut, isi pesan sudah ada.

Tanggapan server:

Tipe Konten: teks/html; rangkaian karakter=UTF-8

Transfer-Encoding: dipotong

Koneksi: tetap hidup

Tetap Hidup: batas waktu=5

X-Pingback: //webgyry.info/xmlrpc.php

Dokumen tanpa judul

Ini adalah pesan yang dipertukarkan antara klien dan server melalui HTTP.

Ngomong-ngomong, apakah Anda ingin mengetahui apakah ada gunanya beberapa elemen di situs web Anda menggunakan “sasaran” Metrik Yandex dan Google Analytics?

Hapus apa yang tidak berhasil, tambahkan apa yang berhasil, dan gandakan pendapatan Anda.

Kursus menyiapkan sasaran Yandex Metrica..

Kursus tentang menyiapkan sasaran Google Analytics..

Klien HTTP mengirimkan permintaan ke server dalam bentuk pesan permintaan, yang memiliki format sebagai berikut:

  • String kueri (wajib)
  • Judul (elemen opsional)
  • String kosong (wajib)
  • Isi pesan (elemen opsional)

Mari kita lihat masing-masing elemen ini secara terpisah.

String kueri

Baris permintaan dimulai dengan token metode, diikuti dengan URI permintaan dan versi protokol. Elemen dipisahkan satu sama lain dengan spasi:

Mari kita pertimbangkan elemen ini secara lebih rinci

Metode permintaan

Elemen ini menentukan metode yang harus dipanggil di sisi server pada URI yang ditentukan.

Ada delapan metode dalam HTTP:

  • KEPALA
    Digunakan untuk mendapatkan status dan string header dari server dengan URI. Tidak mengubah data.
  • MENDAPATKAN
    Digunakan untuk menerima data dari server pada URI yang ditentukan. Tidak mengubah data.
  • POS
    Digunakan untuk mengirim data ke server (seperti informasi pengembang, dll) menggunakan formulir HTML.
  • MELETAKKAN
    Menggantikan semua data sebelumnya pada sumber daya dengan data baru yang dimuat.
  • MENGHAPUS
    Menghapus semua data terkini pada sumber daya yang ditentukan oleh URI.
  • MENGHUBUNGKAN
    Membuat koneksi terowongan ke server pada URI yang ditentukan.
  • OPSI
    Menjelaskan properti koneksi untuk sumber daya yang ditentukan.
  • JEJAK
    Memberikan pesan yang berisi jejak kembalinya lokasi sumber daya yang ditentukan dalam URI.

Minta URI

URI (Uniform Resource Identifier) ​​​​adalah pengidentifikasi sumber daya yang menjadi tujuan pengiriman permintaan. Berikut ini adalah format URI yang paling umum digunakan:

'*' digunakan ketika permintaan HTTP tidak merujuk ke sumber daya tertentu, tetapi ke server. Hanya digunakan ketika metode tidak perlu diterapkan pada sumber daya. Misalnya,

absoluteURI digunakan ketika permintaan HTTP dibuat ke proxy. Proksi diminta untuk meneruskan permintaan dari cache yang tersedia dan mengembalikan respons. Misalnya:

jalur_mutlak | sumbernya paling sering digunakan.

Belajar bekerja dengan permintaan GET dan POST

Sumber daya tertentu di server tertentu diminta. Misalnya, klien ingin menerima sumber daya dari server melalui port 80. Alamat sumber dayanya adalah “www.proselyte.net” dan mengirimkan permintaan berikut:

Mengkueri bidang header

Bidang header memungkinkan klien untuk lewat informasi tambahan tentang permintaan dan tentang diri Anda ke server. Bidang ini bertindak sebagai pengubah kueri.

Di bawah ini adalah daftar kolom header terpenting yang dapat digunakan:

  • Terima-Charset
  • Terima-Encoding
  • Bahasa Terima
  • Otorisasi
  • Mengharapkan
  • Jika-Cocok
  • Jika-Dimodifikasi-Sejak
  • Jika-Tidak Ada-Cocok
  • Jika-Rentang
  • Jika-Tidak Dimodifikasi-Sejak
  • Jangkauan
  • Perujuk
  • Agen-Pengguna

Jika kita ingin mengimplementasikan klien kita sendiri dan server web kita sendiri, maka kita dapat membuat kolom header kita sendiri.

Contoh permintaan HTTP

Ini menyimpulkan penelitian kami Permintaan HTTP.
Pada artikel berikutnya kita akan melihat tanggapan HTTP.

Salah satu cara mengirim permintaan HTTP ke server adalah dengan metode GET. Metode ini adalah yang paling umum dan permintaan ke server paling sering terjadi saat menggunakannya.

Cara termudah untuk membuat permintaan GET adalah dengan mengetikkan URL ke bilah alamat browser Anda.

Browser akan mengirimkan ke server kira-kira informasi berikut:

DAPATKAN / HTTP/1.1
Tuan rumah: webgyry.info
Agen Pengguna: Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0
Terima: teks/html,aplikasi/xhtml+xml,aplikasi/xml;q=0.9,*/*;q=0.8
Bahasa yang Diterima: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3
Terima-Encoding: gzip, mengempis
Cookie: pengaturan wp
Koneksi: tetap hidup

Permintaan tersebut terdiri dari dua bagian:

1. Jalur Permintaan

2. Header Pesan

Perhatikan bahwa permintaan GET tidak memiliki isi pesan. Namun ini tidak berarti bahwa dengan bantuannya kami tidak dapat mengirimkan informasi apa pun ke server.

Perbedaan antara metode GET dan POST

Ini dapat dilakukan dengan menggunakan parameter GET khusus.

Untuk menambahkan parameter GET ke permintaan, Anda perlu menambahkan tanda “?” di akhir URL. dan setelah itu mulailah menanyakannya sesuai aturan berikut:

parameter_nama1=nilai_parameter1& nama_parameter2=nilai_parameter2&…

Pemisah antar parameter adalah tanda “&”.

Misalnya jika kita ingin meneruskan dua nilai ke server, yaitu nama pengguna dan umurnya, maka ini dapat dilakukan dengan baris berikut:

http://site.ru/page.php?name=dima&age=27

Ketika permintaan ini dijalankan, data masuk ke dalam apa yang disebut variabel lingkungan QUERY_STRING yang dapat diambil di server menggunakan bahasa pemrograman web sisi server.

Berikut adalah contoh bagaimana hal ini dapat dilakukan di PHP.

Konstruksi $_GET[“parameter_name”] memungkinkan Anda menampilkan nilai parameter yang diteruskan.

Sebagai hasil dari mengeksekusi kode ini di browser, yang berikut ini akan ditampilkan:

Namamu: dima
Usia Anda: 27

Kami juga membuat permintaan ke server menggunakan metode GET.

Hari ini saya ingin membahas sedikit tentang hal-hal primitif dan menjelaskan apa yang dapat ditemukan di dalamnya jaringan di seluruh dunia dalam jumlah banyak dan tanpa banyak usaha. Kita akan berbicara secara praktis tentang protokol HTTP yang paling suci: permintaan POST dan GET.

Banyak yang akan bertanya kenapa? Saya akan menjawab dengan singkat dan jelas: tidak semua orang tahu apa itu dan mengapa itu diperlukan, dan mereka yang ingin mempelajarinya (sementara pemahamannya sedikit di bidang IT) seringkali tidak dapat memahami apa yang tertulis di banyak sekali artikel yang membahas hal ini. topik. Saya akan mencoba menjelaskan dengan jari saya apa itu permintaan POST dan GET dan kegunaannya.
Jadi, mari kita mulai perjalanan kita ke dalam dongeng...
Jika Anda sedang membaca pesan ini, maka Anda setidaknya tahu seperti apa Internet itu dan apa itu situs Internet. Menghilangkan semua seluk-beluk pekerjaan web di seluruh dunia, kami akan beroperasi dengan konsep seperti pengguna dan situs. Apa pun yang dikatakan orang, kedua entitas ini entah bagaimana harus berinteraksi satu sama lain. Misalnya, manusia berkomunikasi satu sama lain melalui gerak tubuh, emosi, dan ucapan, hewan mengeluarkan suara, tetapi apa yang terjadi jika seseorang dan sumber daya Internet “berkomunikasi”? Di sini kita mempunyai kasus pertukaran informasi, yang dapat ditransfer ke percakapan “Tanya-Jawab” manusia. Selain itu, baik pengguna maupun situs dapat mengajukan pertanyaan dan jawaban. Ketika kita berbicara tentang sebuah situs web, pertanyaan dan jawabannya biasanya selalu diungkapkan dalam bentuk halaman Internet dengan teks tertentu. Kapan yang sedang kita bicarakan tentang pengguna, maka semuanya terjadi berkat permintaan GET dan POST (tentu saja tidak hanya, tetapi kita membicarakannya).

Jadi, kami menemukan bahwa objek tema kami diperlukan untuk "berkomunikasi" dengan situs. Selain itu, permintaan GET dan POST dapat digunakan untuk “mengajukan pertanyaan” ke situs dan “menjawabnya”. Apa perbedaannya? Semuanya cukup sederhana. Namun, untuk menjelaskan perbedaannya, kita harus mempertimbangkan sebuah contoh, yang mana kita akan mengambil situs rencana toko online.
Anda mungkin sering memperhatikan ketika Anda sedang mencari sesuatu toko online, bahwa ketika melakukan pencarian menggunakan filter, alamat situs berubah dari “http://magaazin.ru” yang indah menjadi “http://magaazin.ru/?category=shoes&size=38” yang mengerikan. Jadi, semua yang muncul setelah simbol '?' adalah permintaan GET Anda ke situs tersebut, dan lebih tepatnya, di dalam hal ini Anda sepertinya bertanya pada situs apa yang ada dalam kategori “Sepatu” dari ukuran “38” ( contoh ini diambil dari kepalaku, pada kenyataannya semuanya mungkin tidak terlihat begitu jelas). Hasilnya, kami dapat mengajukan pertanyaan sendiri dengan menunjukkannya di bilah alamat situs. Tentu saja metode ini mempunyai beberapa kelemahan. Pertama, siapa pun yang berada di sebelah pengguna di komputer dapat dengan mudah memata-matai semua data, jadi gunakanlah tipe ini Permintaan transfer kata sandi sangat tidak disarankan. Kedua, ada batasan panjang string yang dapat ditransfer dari kolom alamat situs, yang berarti tidak mungkin mentransfer banyak data. Namun nilai tambah yang pasti Kegunaan permintaan GET adalah kemudahan penggunaannya dan kemampuan untuk menanyakan situs dengan cepat, yang sangat berguna selama pengembangan, tapi itu cerita lain...
Sekarang mari kita bicara tentang permintaan POST. Pembaca yang cerdas mungkin telah menyadari bahwa perbedaan utamanya adalah dari permintaan ini dari saudaranya - kerahasiaan data yang dikirimkan. Jika kita mempertimbangkan toko online, contoh mencolok di mana permintaan POST digunakan adalah pendaftaran di situs. Situs meminta data Anda, Anda mengisi data ini dan ketika Anda mengklik tombol “Daftar” Anda mengirimkan jawaban Anda. Selain itu, data ini tidak akan ditampilkan secara eksternal dengan cara apa pun. Perlu juga dicatat bahwa mereka dapat meminta cukup banyak jumlah besar informasi - dan signifikan Pembatasan POST permintaan tidak memiliki. Nah, jika Anda menyentuh minusnya, maka permintaan seperti itu tidak dapat dibuat dengan cepat. Anda tidak dapat melakukan ini tanpa keahlian khusus. Meskipun pada kenyataannya semuanya tidak begitu sulit, tapi sekali lagi, itu lain cerita.
Mari kita rangkum. Permintaan POST dan GET diperlukan untuk “komunikasi” antara pengguna dan situs. Mereka pada dasarnya hampir bertolak belakang satu sama lain. Penggunaan jenis kueri tertentu bergantung pada situasi spesifik dan hanya menggunakan satu jenis kueri saja sangatlah merepotkan.

Pembuatan standar jaringan Jaringan Internet 2.0 memungkinkan pengguna tidak hanya menerima informasi, tetapi juga berinteraksi secara aktif dengan pengguna lain dan layanan Internet. Untuk mengatur umpan balik tersebut di bahasa HTML tag tambahan diperkenalkan untuk memungkinkan informasi yang diminta dikirim ke server. Misalnya, ini bisa berupa formulir pendaftaran, atau formulir komentar, atau pengaturan akun pribadi(halaman jaringan sosial) dll. Dalam bab ini, kita akan melihat sekumpulan tag yang memungkinkan Anda mengatur interaksi pengguna dengan situs.

6.1. DAPATKAN dan POST permintaan

Untuk mengatur interaksi pengguna dengan Internet, pengembang situs harus menyediakan transmisi permintaan dari pengguna situs ke server tempat situs tersebut berada. Ada dua jenis permintaan: permintaan GET dan POST.

DAPATKAN permintaan

Pada tahap awal perkembangan Internet, hanya ada permintaan GET. Mereka mewakili transfer data langsung ke bilah alamat browser, memiliki sintaks berikut:

http://domain/halaman?[parameter1=nilai1][¶meter2=nilai2]...

Di sini kumpulan data yang ditransfer ke server dimulai dengan karakter '?' dan dipisahkan oleh karakter '&'. Datanya sendiri berpasangan

parameter=nilai

Misalnya, jika Anda perlu memasukkan nama depan dan belakang pengguna pada halaman pendaftaran (misalnya, register.php) situs mysite.com, maka tampilannya akan seperti ini:

http://situssaya.com/register.php?fname=Ivan&lname=Ivanov

Harap dicatat bahwa browser versi lama mungkin tidak memahami alfabet Sirilik dengan benar dan transmisi huruf Rusia akan dilakukan secara tidak benar. Lebih baik mengirimkan informasi layanan secara eksklusif dalam permintaan GET dalam bentuk angka dan kata dalam bahasa Latin.

Kerugian dari permintaan GET adalah terbatasnya data yang ditransfer. Di sisi server, string kueri dibatasi pada beberapa nilai maksimum. Misalnya, jika ukuran permintaan maksimum dapat mencapai 1024 karakter, maka apa pun yang melebihi nilai ini akan dihapus dan kemudian dipisahkan informasi yang ditransmisikan tidak akan diproses oleh halaman situs yang ditentukan. Keterbatasan signifikan kedua adalah kemampuan untuk menyampaikan rangkaian karakter yang ditentukan secara ketat. Misalnya simbol? dan & sudah dicadangkan dan tidak dapat diteruskan sebagai nilai parameter. Namun, aturan ini dapat dilewati jika string kueri tidak berisi karakter itu sendiri, namun nilai kodenya. Caranya gunakan karakter '%' diikuti dengan kode karakter, contohnya seperti ini:

http://situssaya.com/register.php?fname=%CC%DF%AD%1F%DS&lname=%DD

Di sini nilai kode diberikan dalam heksadesimal untuk menghemat panjang kueri.

Terlepas dari kelemahan ini, membuat situs tanpa permintaan GET akan sangat sulit. Misalnya, mereka sangat diperlukan dalam kasus inisialisasi awal halaman situs untuk pengguna tertentu, ketika permintaan tidak hanya menentukan situs dan halaman saat ini, tetapi juga idnya, seperti yang dilakukan di jejaring sosial VKontakte:

http://vk.com/profile.php?id=12345678

Permintaan GET juga sering digunakan untuk memeriksa kebenaran alamat email saat mendaftarkan pengguna. Dalam hal ini, pengguna menerima email dengan tautan aktivasi di alamat email yang ditentukan, dan tautan ini adalah permintaan GET.

permintaan POSTING

Untuk mengatasi kekurangan permintaan GET ini, permintaan POST ditambahkan, yang memungkinkan sejumlah besar data ditransfer dalam bentuk biner, yaitu. tanpa distorsi atau perubahan pada data yang dikirimkan. Permintaan seperti itu sangat cocok untuk mengunggah file dan gambar ke server. Misalnya, saat pengguna mengunggah gambar ke profil jejaring sosialnya, permintaan POST digunakan untuk ini. Rincian lebih lanjut tentang organisasi permintaan POST akan dibahas di bawah.

Sudah lama sekali saya ingin menulis artikel di mana saya akan berbicara tentang perbedaan antara metode POST dan metode GET, tetapi entah bagaimana topik lain muncul dan saya beralih ke topik tersebut. Dan sekarang, akhirnya, waktunya telah tiba untuk membahas topik ini, karena seringkali orang tidak mengetahui apa perbedaan antara POST dan GET.

Untuk lebih jelas menampilkan perbedaan antara POST dan GET, saya menyediakan tabel yang menunjukkan karakteristik perbedaannya.

Berdasarkan karakteristik tersebut, kita dapat menyimpulkan kapan menggunakan POST dan kapan menggunakan GET. Misalnya, jika pengguna ingin mem-bookmark halaman yang dihasilkan. Maka pembuatannya harus dilakukan melalui permintaan GET, jika tidak, menambahkan halaman ke bookmark tidak akan berfungsi. Contoh lain: saat mengirimkan login dan kata sandi, Anda tidak dapat menggunakan metode GET, karena metode ini didasarkan pada transmisi data melalui bilah alamat. Jika tidak, setelah mengklik tombol "Kirim", sesuatu seperti ini akan muncul di bilah alamat: "http://mysite.ru/login.php?log=User&pass=123456", - dan siapa pun dapat melihat kata sandinya, yang mana, tentu saja tidak boleh dibiarkan. Oleh karena itu, kita harus menggunakan metode POST disini.

Selain itu, jangan lupa bahwa ukuran data yang dapat ditransfer menggunakan metode POST jauh lebih besar dibandingkan saat ditransfer menggunakan metode GET. Secara umum, analisis tabel ini dan buat kesimpulan: metode transfer data mana yang harus digunakan dalam kasus tertentu. Saya akan menambahkan sendiri bahwa dalam 80% kasus Anda harus menggunakan POST, tetapi jangan lupa bahwa ini jauh dari 100%.

Jika Anda memiliki pertanyaan atau ingin mengomentari artikel ini, Anda dapat meninggalkan komentar Anda di bagian bawah halaman.

Komentar (15):

dsmts 05/12/2013 14:00:18

Selamat siang Saya memerlukan sesuatu seperti ini saat mengarahkan ulang: header("Location: test.php"); Nilai $_POST diteruskan ke halaman ini. Halaman dari mana nilai ini harus dikirimkan tidak memiliki bentuk apa pun. Itu. itu hanya memproses data dan menghasilkan permintaan tertentu. Pada saat ini Saya telah melakukan transfer dari menggunakan cookie. Tapi saya tidak yakin apakah itu aman. Atau apakah saya salah? Data yang dikirimkan tidak boleh terlihat oleh pengguna.

Menjawab

Alex_ 23/11/2013 11:56:10 malam

Selamat siang :), Michael! Saya mencoba menulis sebuah plugin dalam PHP dan secara alami menemukan bahwa saya kurang pengetahuan. Oleh karena itu pertanyaannya: jika situs tertentu (sistem pembayaran) setelah tindakan saya di pihak saya mengirim saya ke situs tersebut di halaman tertentu data menggunakan metode POST, apakah saya harus melihatnya jika saya menulisnya di skrip print_r($_POST); ? Hanya dalam kasus saya, misalnya print_r($_SERVER); Anda dapat melihat data apa yang ada dalam array $_SERVER, tetapi $_POST kosong, artinya data tidak sampai atau saya memiliki pandangan tidak senonoh tentang keadaan sebenarnya.

Menjawab

23.11.2013 23:59:31

Halo, Alexander Biasanya sistem pembayaran mengirimkan data ke urutan terbalik dalam bentuk terenkripsi dan menggunakan protokol aman. Jadi itu semua tergantung sistem pembayarannya. Apakah Anda menulis modul pembayaran untuk sistem tertentu? Harap klarifikasi pertanyaan Anda, jika tidak, saya tidak akan dapat membantu Anda.

Menjawab

Alex_ 24/11/2013 02:00:41

Halo Alexander, terima kasih atas tanggapan Anda. Saya sedang menulis sebuah plugin untuk cms Wordpress, saya bekerja dengan sistem Pembayaran interkassa.com. Jika pembelian berhasil, maka akan dialihkan ke halaman pembayaran berhasil http://my_site/success. Menurut dokumentasi, data yang saya lihat ada di halaman ini. Artinya, dalam pengaturan saya memilih metode transfer GET dan url panjang muncul, tautan ini dan di dalamnya parameter http://my_site/success/?&ik_Payment_id=1&ik_paysystem_alias=yandexdengir, semuanya sebagaimana mestinya. Saya coba pilih metode transmisi POST, lalu di script saya tulis, misalnya if (isset($_POST["ik_trans_id"])) echo $_POST["ik_trans_id"]. Dan itu berhasil. Kemudian saya mulai bekerja dengan url STATUS karena ik_sign_hash tiba, yang dihasilkan oleh intercash menggunakan kunci rahasia (yang saya ketahui dan intercash) dan kali ini if ​​(isset($_POST["ik_sign_hash"]) tidak berfungsi karena tidak ada. Di situs saya Ada plugin (tidak melakukan semuanya seperti yang kita inginkan) yang ditulis dalam OOP (Saya masih jauh dari level yang menulis ini, mungkin itu sebabnya tidak jelas bagi saya apa yang digunakan di sana). Plugin ini memproses semuanya dan menghitung hash di sisinya, karena saya sengaja mengubahnya). kunci rahasia(dalam pengaturan plugin) dan email dikirim dengan pemberitahuan tentang data yang ditransfer salah (hash tidak cocok) dan permintaan untuk menghubungi administrator situs. Sesuatu seperti ini.

Menjawab

24.11.2013 02:09:28

Ya, saya belum melihat plugin Anda, jadi saya tidak akan mengatakan sesuatu yang spesifik. Sedangkan untuk implementasi sederhananya...Saya belum mempelajari API interkassa. Anda dapat melihat solusi sederhana di sini: http://goo.gl/rFnpNc Pada dasarnya, ini sama di semua sistem. Saya biasanya bekerja dengan mesin kasir robot atau onpei, jadi permisi. Secara umum, strukturnya kira-kira seperti ini. Anda perlu menulis implementasi sesuai dengan dokumentasi API http://www.interkassa.com/faq.php lihat di sini bagian Interkassa melalui sudut pandang seorang programmer dan administrator + Di sana pada pertanyaan terakhir terdapat dokumentasi teknis untuk mendownload dan hal-hal kecil tentang API secara umum

Menjawab

Alex_ 24/11/2013 02:16:40

Terima kasih Alexander. Saya melihat, saya membaca semua ini, saya telah mencoba selama beberapa hari sekarang dan saya mencari di Google dan saya pikir mungkin saya tidak mengerti sesuatu :). http://goo.gl/rFnpNc - dan ini adalah plugin oleh Andrey Morkovin, tidak sepenuhnya ditulis (mungkin agar tidak mengungkapkan semua rahasia, skripnya sekarang berbayar). Beberapa video pelajaran telah dibuat berdasarkan cara menulis plugin di WP. Plugin ini http://www.icprojects.net/paid-downloads-plugin.html tersedia dalam versi berbayar dan versi gratis. Hanya tersedia dalam versi gratis Pembayaran: Paypal. tetapi semuanya ada di sana dan jika Anda mengubah beberapa nilai, mode Interkassa dalam versi beta akan tersedia.

Menjawab

24.11.2013 02:23:00

Ya, saya mengetahui hal ini. Hanya ada sebuah plugin yang tersedia. Entah itu lengkap atau tidak, mungkin ada versi yang berharga $40. tergeletak di sekitar. Bagaimanapun, saya tidak akan merekomendasikan sesuatu yang spesifik. Baca dokumentasi Interkassa API. Dan algoritmenya sama di mana pun. Tulis penangan yang mengirimkan data dalam bentuk terenkripsi dan yang menerima serta mendekripsinya dalam bentuk yang sama. Anda dapat melihat solusi Levchuk di halaman wpnya ;) Jika saya punya waktu, saya akan melihat topik ini lebih detail

Pembaruan terakhir: 11/1/2015

Tidak seperti permintaan GET, data permintaan POST dikirimkan bukan di baris permintaan, tetapi di badannya. Contoh umum dari permintaan tersebut adalah mengirimkan data formulir ke server.

Metode post digunakan untuk mengirim permintaan POST. Deklarasi dan penggunaannya umumnya mirip dengan metode get. Ia menerima parameter berikut:

    url: parameter wajib yang berisi alamat sumber daya yang akan diakses oleh permintaan

    data: parameter opsional yang berisi objek atau string javascript sederhana yang akan dikirim ke server bersama dengan permintaan

    sukses(data, textStatus, jqXHR) : parameter opsional - fungsi panggilan balik, yang akan dieksekusi jika permintaan berhasil. Ini dapat mengambil tiga parameter: data - data yang diterima dari server, textStatus - status permintaan dan jqXHR - objek jQuery khusus yang mewakili versi diperpanjang dari objek XMLHttpRequest.

    dataType: parameter opsional yang berisi tipe data sebagai string, seperti "xml" atau "json"

Pada output, metode post mengembalikan objek jqXHR.

Contoh penggunaan:

$.post("ajax.php", ("login":"1111", "kata sandi" : "2222"), fungsi(data) ( $("#berita").html(data); ));

Dalam hal ini, kami mengirimkan kata sandi dan login sebagai data. Di server kami dapat menerima data dan mengirimkan respons kepada pengguna:

Karena permintaan posting paling sering digunakan saat mengirim data formulir, kami menggunakan formulir di sisi klien:





$("#loginForm").submit(function(event) ( // Mencegah pengiriman formulir normal event.preventDefault(); $.post("ajax.php", ("login":$("#login"). val(), "kata sandi" : $("#kata sandi").val()), fungsi(data) ( $("#hasil").html(data); ));

Jadi, bagian server, yang akan diakses oleh formulir - file ajax.php - tetap sama. Hanya dalam kasus ini, sekarang untuk parameter data di metode posting Kami mengambil data dari kolom di formulir ini.

Harap perhatikan bahwa kami memblokir pengiriman formulir normal (event.preventDefault();), jika tidak, kami akan melakukan pengalihan.

Serialisasi Formulir

Karena formulir seringkali tidak terbatas pada dua bidang, lebih mudah menggunakan serialisasi formulir. Serialisasi dilakukan menggunakan metode serialisasi dan sebagai hasilnya, objek javascript dibuat, yang propertinya sesuai dengan bidang formulir. Dan nilai yang disimpan oleh properti ini sama dengan nilai pada bidang formulir terkait.

Jadi, mari terapkan serialisasi formulir:





$("#loginForm").submit(function(event) ( // Mencegah pengiriman formulir reguler event.preventDefault(); $.post("ajax.php", $("#loginForm").serialize(), function (data) ( $("#hasil").html(data); ));

Berbeda dengan contoh sebelumnya, kami memiliki dua perbedaan di sini. Pertama, perhatikan bahwa kolom input memiliki atribut nama. Saat menentukan parameter data, kami membuat serialisasi data formulir melalui metode serialisasi: $("#loginForm").serialize() . DI DALAM metode ini Parameter diteruskan ke badan permintaan. Selain itu, nama parameter adalah nilai dari atribut nama kolom input. Dan nilai parameter adalah nilai terkait yang dimasukkan ke dalam kolom teks.

Dan karena itu dengan menggunakan php kita dapat mengekstrak nilai-nilai ini: $login=$_POST["login"] .

  • Sergei Savenkov

    semacam ulasan "pendek"... seolah-olah mereka sedang terburu-buru di suatu tempat