2011-11-18 9 views
8

Come forzare HTTPS per alcune parti di un sito, ad es. una pagina di accesso o una pagina di registrazione e utilizzare HTTP per il resto del sito?CakePHP - SSL selettivo

+0

possibile duplicato del [selettivamente Abilitazione di SSL per determinate azioni in CakePHP] (http://stackoverflow.com/questions/751.338/selettivamente abilitazione-ssl-per-determinate-actions-in-cakephp) – sarnold

risposta

0

Ho fatto la cosa esatta con CodeIgniter. Non conosco completamente CakePHP, ma sono sicuro che il processo sia simile.

  1. Ho impostato apache per puntare il traffico SSL e non SSL alla stessa directory.
  2. Quindi ho creato un array nella configurazione che elencava i controller necessari per SSL (registro, accesso, ecc.)
  3. Quindi ha creato una funzione in un helper caricato automaticamente che ha verificato se il controller corrente si trovava in quell'array e quindi ripristinerebbe base_url con https:// anziché http://. Se il controller non era nell'array, forza lo base_url a http://.

Ha funzionato perfettamente per me. Fammi sapere se gli esempi di codice dal mio progetto CodeIgniter sarebbero utili.

Similar post that may help.

0

Si può caricare il componente RequestHandler e utilizzare la funzione isSsl() per determinare se si proviene da un HTTP o HTTPS, se! IsSsl quindi reindirizzare ad una pagina https :) altro che fare qualsiasi altra cosa vuoi

Informazioni sul libro della funzione isSsl here

0

Una soluzione migliore potrebbe fare questo con mod_rewrite con .htaccess per alcuni URL di e lasciando il codice da esso tutti insieme.

È possibile impostare le regole di riscrittura solo per determinati URL.

Ecco un vantaggio su come farlo per un intero sito:

http://www.besthostratings.com/articles/force-ssl-htaccess.html

1

Il mio preferito convertire in https metodo di forzatura è quello di mettere questa come la prima cosa nello script php. Funziona in Joomla e potrebbe funzionare molto bene in CakePHP.

if($_SERVER['SERVER_PORT'] == 80) {   
header('Location:https://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/'.basename($_SERVER['PHP_SELF'])); 
die(); 
} 

Questo snippet forza l'https su qualsiasi pagina visualizzata. Se si desidera isolare le pagine certian, è sufficiente inserire alcune condizioni in base alle informazioni nella variabile "$ _SERVER ['PHP_SELF']".

In caso contrario, modificare il file .htaccess, supponendo che il vostro ospite vi permette di accedere a questo:

RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteCond %{REQUEST_URI} somefolder 
RewriteRule ^(.*)$ https://www.domain.com/somefolder/$1 [R,L] 
Problemi correlati