[php]代码库
<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>