Saya telah menulis sedikit fungsi untuk membuat protokol url situs saat ini, tetapi saya tidak memiliki SSL dan tidak tahu cara menguji apakah itu berfungsi di bawah https. Bisakah Anda memberi tahu saya jika ini benar?
function siteURL()
{
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$domainName = $_SERVER['HTTP_HOST'].'/';
return $protocol.$domainName;
}
define( 'SITE_URL', siteURL() );
Apakah perlu untuk melakukannya seperti di atas atau dapatkah saya melakukannya saja ?:
function siteURL()
{
$protocol = 'http://';
$domainName = $_SERVER['HTTP_HOST'].'/'
return $protocol.$domainName;
}
define( 'SITE_URL', siteURL() );
Di bawah SSL, bukankah server secara otomatis mengonversi url ke https bahkan jika url tag jangkar menggunakan http? Apakah perlu untuk memeriksa protokolnya?
Terima kasih!
Jawaban:
Ini tidak otomatis. Fungsi teratas Anda terlihat ok.
sumber
//mysqite.com
bukannyahttps://mysitecom
Saya tahu ini sudah terlambat, meskipun ada cara yang jauh lebih mudah untuk menyelesaikan masalah seperti ini! Solusi lain cukup berantakan; ini adalah bagaimana saya akan melakukannya:
... atau bahkan tanpa syarat jika Anda lebih suka:
Lihatlah
$_SERVER["SERVER_PROTOCOL"]
sumber
stripos
bukanstrpos
?$_SERVER['SERVER_PROTOCOL']
dibuat untuk menyimpanHTTP/1.0
atauHTTP/1.1
bergantung pada versi protokol, konfigurasi server HTTP macam apa yang Anda bicarakan, menyimpanhttps
informasi pada string ini yang berasal dari permintaan http?Ini bekerja untuk saya
sumber
Beberapa perubahan:
sumber
jalan pendek
sumber
REQUEST_SCHEME
tidak dapat diandalkanKarena pengujian nomor port bukanlah praktik yang baik menurut saya, solusi saya adalah:
Pengembalian
HTTPS
konstanTRUE
jika$_SERVER['HTTPS']
disetel dan sama dengan "1", "true", "on" atau "yes". Mengembalikan FALSE sebaliknya.sumber
Untuk sistem apa pun kecuali IIS ini cukup untuk mendefinisikan URL sendiri situs:
atau
tergantung pada apa yang Anda inginkan: HTTP_HOST vs. SERVER_NAME
sumber
Dalam hal proxy yang
SERVER_PORT
mungkin tidak memberikan nilai yang benar jadi inilah yang bekerja untuk saya -sumber
Gunakan variabel server ini untuk mendapatkan detail protokol:
Perhatikan bahwa variabel server ini tidak dapat diandalkan. Untuk informasi lebih lanjut, lihat: Apakah $ _SERVER ['REQUEST_SCHEME'] dapat diandalkan?
sumber
Saya tahu ini adalah pertanyaan lama tetapi saya menemukan ini hari ini karena saya perlu menguji ini di situs saya. Tampaknya jawaban di atas tidak perlu rumit. Untuk membuat protokol situs, yang harus Anda lakukan adalah menguji
$_SERVER['HTTPS']
Jika protokol menggunakan HTTPS, maka
$_SERVER['HTTPS']
akan kembali 'on'. Jika tidak, variabel akan tetap kosong. Sebagai contoh:// test if HTTPS is being used. If it is, the echo will return '$SSL_test: on'. If not HTTPS, '$SSL_test' will remain empty.
$SSL_test = $_SERVER['HTTPS'];
Anda dapat menggunakan hal di atas untuk menguji HTTPS dengan mudah dan bersih dan menerapkannya. :)
sumber
membuat fungsi menggunakan jawaban Rid Iculous yang bekerja pada sistem saya.
Semoga ini bisa membantu
sumber
Saya telah menguji answe r yang paling banyak dipilih dan tidak berhasil , saya akhirnya menggunakan:
sumber
$_SERVER["HTTPS"]
dan oleh karena itu kode Anda dapat kembalihttp://
walaupun seharusnyahttps://
https
, mengapa kode masih kembalihttps
?$_SERVER["HTTPS"]
variabelnya tidak pernah ditentukan.sumber
Diambil dari CodeIgniter:
sumber
ini solusi terbaik https atau http gunakan ini:
Tetapi tidak dapat menampilkan https atau http, jadi itu hanya digunakan untuk menautkan konten situs Anda seperti gambar, dll.
jika ingin mengarahkan ulang situs Anda di https, tambahkan kode ini dalam file .htaccess:
Ubah www.domain-anda.com dengan nama mas kawin Anda.
sumber
Inilah cara saya melakukannya ... ini adalah versi singkat
if else
dari jawaban Rid Iculous ...sumber
Saya pikir func lengkap harus terlihat seperti:
Catatan:
sumber
Saya tahu saya agak terlambat ke pesta ini, tetapi jika Anda lebih suka tidak menggunakan $ _SERVER karena sangat tidak disarankan, dan bahkan dinonaktifkan pada beberapa kerangka kerja PHP; dan Anda memiliki server web apache, Anda dapat menggunakannya dengan perintah asli: -
sumber