<code> //启动hooks |
//app/config/config.php |
$config [ 'enable_hooks' ] = TRUE; |
//hooks配置 |
///app/config/hooks.php |
$hook [ 'post_controller_constructor' ][] = array ( |
'function' => 'check_ssl' , |
'filename' => 'ssl.php' , |
'filepath' => 'hooks' , |
); |
//插件编写 |
//app/hooks/ssl.php |
function check_ssl(){ |
$CI =& get_instance(); |
$class = $CI ->router->fetch_class(); |
$method = $CI ->router->fetch_method(); |
$ssl = $CI ->config->item( 'ssl_class_method' ); |
$partial = $CI ->config->item( 'no_ssl_class_method' ); |
if (in_array( $class . '/' . $method , $ssl )){ |
//force_ssl(); |
$CI =&get_instance(); |
$CI ->config->config[ 'base_url' ] = str_replace ( 'http://' , 'https://' , $CI ->config->config[ 'base_url' ]); |
if ( $_SERVER [ 'SERVER_PORT' ] != 443) redirect( $CI ->uri->uri_string()); |
} |
else if (in_array( $class . '/' . $method , $partial )) |
{ |
return ; |
} |
else { |
//unforce_ssl |
$CI =&get_instance(); |
$CI ->config->config[ 'base_url' ] = str_replace ( 'https://' , 'http://' , $CI ->config->config[ 'base_url' ]); |
if ( $_SERVER [ 'SERVER_PORT' ] == 443) redirect( $CI ->uri->uri_string()); |
} |
} |
//config 配置需要使用https的 class method |
//app/config/config.php |
$config [ 'ssl_class_method' ] = array ( |
'U_class/A_method' , |
'V_class/B_method' , |
'W_class/C_method' , |
'X_class/D_method' , |
); //强制使用ssl |
$config [ 'no_ssl_class_method' ] = array (); //强制不使用ssl |
</code> |