Saya sedang mengerjakan situs web keranjang belanja dan saya ingin mengarahkan pengguna ke halaman HTTPS saat dia memasukkan detail penagihannya dan mempertahankan koneksi HTTPS untuk halaman berikutnya sampai dia keluar.
Apa yang harus saya instal di server (saya menggunakan Apache) untuk melakukan ini, dan bagaimana pengalihan ini dilakukan dari PHP?
if( $_SERVER['HTTPS'] == "off")
agar kode ini berfungsi. Saya pikir itu karena saya menggunakan IIS, bukan Apache seperti OP.Ini adalah cara yang baik untuk melakukannya:
sumber
!(isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] == 'on'
akan selalu salah, karena jika bagian terakhir benar, bagian pertama akan salah.Mengalihkan dari HTTP ke HTTPS dengan PHP di IIS
Saya mengalami kesulitan mendapatkan pengalihan ke HTTPS untuk bekerja di server Windows yang menjalankan versi 6 dari MS Internet Information Services (IIS) . Saya lebih terbiasa bekerja dengan Apache di host Linux jadi saya beralih ke Internet untuk meminta bantuan dan ini adalah pertanyaan Stack Overflow dengan peringkat tertinggi saat saya mencari "php redirect http ke https" . Namun, jawaban yang dipilih tidak berhasil untuk saya.
Setelah beberapa kali coba-coba, saya menemukan bahwa dengan IIS,
$_SERVER['HTTPS']
disetel keoff
untuk koneksi non-TLS. Saya pikir kode berikut akan membantu pengguna IIS lain yang datang ke pertanyaan ini melalui mesin pencari.Sunting : Dari jawaban Stack Overflow lain , solusi yang lebih sederhana adalah memeriksa
if($_SERVER["HTTPS"] != "on")
.sumber
apache
, saya memposting jawaban ini untuk kepentingan pengguna IIS lain (mirip dengan situasi saya) yang mungkin menemukan halaman ini melalui mesin pencari. Saya menganut pandangan bahwa jawaban adalah untuk kepentingan komunitas secara keseluruhan dan bukan hanya OP.Anda selalu bisa menggunakan
untuk mengalihkan ke URL penyimpanan.
Tetapi saya akan merekomendasikan untuk melakukannya dengan .htaccess dan aturan penulisan ulang Apache.
sumber
Di server AWS beanstalk saya, saya tidak melihat variabel $ _SERVER ['HTTPS']. Saya melihat $ _SERVER ['HTTP_X_FORWARDED_PROTO'] yang bisa berupa 'http' atau 'https' jadi jika Anda menghosting di AWS, gunakan ini:
sumber