2011-11-17 41 views
0

PHP的,我需要永遠是安全的,所以我發現這一點:強迫頁面HTTPS,然後是其他任何再次

<?php if($_SERVER['SERVER_PORT'] != '443') { header('Location: https://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); exit(); }?> 

其重定向到使用https網頁。

但是當他們從那個安全頁面瀏覽到y.php時,我需要回到http。

我已經使用:

<?php if($_SERVER['SERVER_PORT'] != '80') { header('Location: http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); exit(); }?> 

編輯生病解釋liitle多不好意思。

我有一個WordPress網站,我需要1頁強制使用HTTPS和所有其他不使用HTTPs。

該頁面本身被稱爲/ help並且wordpress安裝使用永久鏈接。

如果用戶是瀏覽到任何其他頁面在HTTPS例如:/招呼它需要迫使他們返回到http

希望這有助於

+1

但你是什麼? –

+1

不要通過端口檢查,使用$ _SERVER ['HTTPS'] =='' –

+0

我不認爲我理解你的問題。 –

回答

2

我想我明白你問,這會做出什麼確定/幫助常是HTTPS和所有其他路徑下的http protocal

PHP

$request = strtolower(trim($_SERVER['REQUEST_URI'])); 

if (0 === strpos($request, '/help')) { // liberal matches 
//if (preg_match('/^\/help\/?$', $request)) { //conservative 
     if ($_SERVER['HTTPS'] != 'on') { 
      header('Location: https://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']); 
      exit; 
     } 
    } else if ($_SERVER['HTTPS'] == 'on') { 
     header('Location: http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); 
     exit; 
    } 

的.htaccess *(啓用了mod_rewrite)*

RewriteEngine On 

RewriteCond %{REQUEST_URI} ^/help\/? #liberal matches /help /helped /helper 
#RewriteCond %{REQUEST_URI} ^/help\/?$ #conservative matches /help and /help/ 
RewriteCond %{HTTPS} !=on 
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R,L] 

RewriteCond %{HTTPS} =on 
RewriteCond %{REQUEST_URI} !^/help  #liberal matches /help /helped /helper 
#RewriteCond %{REQUEST_URI} !^/help\/?$ #conservative matches /help and /help/ 
RewriteRule .* http://%{SERVER_NAME}%{REQUEST_URI} [R,L] 
+0

Perferct,這是一種享受,也可以與worpdress永久鏈接。我已經把這個包含在我的頭文件中,並按預期工作。再次感謝您 – odd

+0

沒問題,很高興它爲你工作Sluap! –

0

使用下面的函數來檢查,如果當前頁面是SSL ,它是在一個廣泛流行的社區PHP庫使用:

/** 
* Check if the current page is SSL 
*/ 
function securepages_is_secure() { 
    return (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? TRUE : FALSE; 
} 

,然後重定向你的用戶,當頁面不具有形式和securepages_is_secure()返回TRUE。

+0

請參閱上面的評論對不起,如果我的解釋不夠清楚 – odd

+0

上述功能將適用於這種情況。當頁面沒有表單時檢查用戶(檢查頁面是否不是form.php)並且securepages_is_secure()返回TRUE。 – vgardner

+0

對不起,我需要安全的頁面沒有它的形式,上面是一個例子 - 解釋一個litte在主後很抱歉 – odd

0

這是否htaccess的解決方案的幫助:

 
<Location /form.php> 
RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule (.*) https://% {HTTP_HOST}%{REQUEST_URI} 
</Location> 
希望它可以幫助

+0

這打破了網站:(,PS這是一個WP網站的永久鏈接打開 – odd

相關問題