目前我的服務器上已包含SSL。希望強制我的用戶通過https登錄頁面進行登錄。如何使用PHP檢測安全連接(https)?
<?php
if (empty($_SERVER['https']) || $_SERVER['https'] != 'on') {
header('location: https://my_login_page');
exit();
}
# rest of code
...
但是這是沒有SSL的問題。
現在我有情況。以下網址
http://domain.com/login.php
這裏的用戶請求,我無法訪問$_SERVER['https']
,並要確保有可能用戶重定向到
https://domain.com/login.php
例如,SSL證書一段時間後到期,並希望保持用戶使用登錄w/out安全連接。
我的目標是這樣的例子:
if (ssl_installed() && (empty($_SERVER['https']) || $_SERVER[] != 'on')) {
header('location: https://domain.com/login.php');
exit();
}
# when there's no SSL it continues using HTTP
是的,想寫的功能(例如:ssl_installed()
)返回true
當使用安全連接是可能的,否則false
。
我試過使用get_headers()
,並意識到它始終返回false對https://
鏈接。
可能的解決辦法:
我已經有工作的解決方案。我的數據庫中的配置表包含行ssl=1
(或0),並且在數據庫連接建立後,我使用此值來決定是否有可能使用SSL,並且上述函數使用此值返回結果。
我的問題是:有沒有簡單的解決方案?
要清除:我在尋找PHP-ONLY SOLUTION(自動檢測)!
任何幫助,將不勝感激。
你有使用所有php文件中的通用配置文件嗎?比如config.php? – sjdaws 2013-02-27 09:21:46
@sjdaws課程是的,我保存了與PDO一起使用的數據庫帳戶信息。 – Wh1T3h4Ck5 2013-02-27 09:23:49
是否存在'$ _SERVER [「HTTPS」](大寫字母)? [PHP文檔](http://www.php.net/manual/en/reserved.variables.server.php) – Passerby 2013-02-27 09:25:06