kunitsuji
tsuji****@m-s*****
2008年 6月 7日 (土) 16:27:57 JST
kunitsujiです。
CIにはアプリでのSSL通信(HTTPS)での処理が無いようです。
独自のHelperとLibraryを作成しました。
MY_url_helper.php
<?php if (!defined('BASEPATH')) exit('No direct script access
allowed');
// ---------------------------------------------------------------------
---
/**
* @author KUNIHARU Tsujioka <kunit****@gmail*****>
* @version 2008-04-22 Ver 0.1.0
*/
//2008-04-21 KUNIHARU Tsujioka update
/**
* Site URL
*
* Create a local URL based on your basepath. Segments can be passed via
the
* first parameter either as a string or an array.
*
* @access public
* @param string
* @param string SSL true/false 2008-04-21 KUNIHARU Tsujioka
* @return string
*/
if (! function_exists('site_url'))
{
function site_url($uri = '', $ssl = FALSE)
{
$CI =& get_instance();
return $CI->config->site_url($uri, $ssl);
}
}
// ---------------------------------------------------------------------
---
//2008-04-21 KUNIHARU Tsujioka update
/**
* Anchor Link
*
* Creates an anchor based on the local URL.
*
* @access public
* @param string the URL
* @param string the link title
* @param mixed any attributes
* @param bool SSL true/false
* @return string
*/
if (! function_exists('anchor'))
{
function anchor($uri = '', $title = '', $attributes = '', $ssl =
FALSE)
{
$title = (string) $title;
if ( ! is_array($uri))
{
if ($ssl)
{
$site_url = ( ! preg_match('!^\w+://!i', $uri)) ?
site_url($uri, TRUE) : $uri;
}
else
{
$site_url = ( ! preg_match('!^\w+://!i', $uri)) ?
site_url($uri) : $uri;
}
}
else
{
if ($ssl)
{
$site_url = site_url($uri, TRUE);
}
else
{
$site_url = site_url($uri);
}
}
if ($title == '')
{
$title = $site_url;
}
if ($attributes == '')
{
$attributes = ' title="'.$title.'"';
}
else
{
$attributes = _parse_attributes($attributes);
}
return '<a href="'.$site_url.'"'.$attributes.'>'.$title.'</a>';
}
}
// ---------------------------------------------------------------------
---
//2008-04-21 KUNIHARU Tsujioka update
/**
* Prep URL
*
* Simply adds the http:// part if missing
*
* @access public
* @param string the URL
* @param bool SSL true/false 2008-04-21 KUNIHARU Tsujioka
* @return string
*/
if (! function_exists('prep_url'))
{
function prep_url($str = '', $ssl = FALSE)
{
if ($str == 'http://' OR $str == '')
{
return '';
}
if (substr($str, 0, 7) != 'http://' && substr($str, 0, 8) !=
'https://')
{
if ($ssl)
{
$str = 'https://'.$str;
}
else
{
$str = 'http://'.$str;
}
}
return $str;
}
}
// ---------------------------------------------------------------------
---
//2008-04-21 KUNIHARU Tsujioka update
/**
* Header Redirect
*
* Header redirect in two flavors
*
* @access public
* @param string the URL
* @param string the method: location or redirect
* @param bool the ssl: true/false
* @return string
*/
if (! function_exists('redirect'))
{
function redirect($uri = '', $method = 'location', $ssl = FALSE)
{
switch($method)
{
case 'refresh':
header("Refresh:0;url=".site_url($uri, $ssl));
break;
default:
header("Location: ".site_url($uri, $ssl));
break;
}
exit;
}
}
//2008-04-21 KUNIHARU Tsujioka update
/**
* Base URL for SSL
*
* Returns the "base_url" item from your config file
*
* @access public
* @return string
*/
if (! function_exists('base_url_ssl'))
{
function base_url_ssl()
{
$CI =& get_instance();
return $CI->config->slash_item('base_url_ssl');
}
}
?>
MY_Config.php
<?php if (!defined('BASEPATH')) exit('No direct script access allowed');
/**
* LICENSE
*
* This source file is subject to the new BSD license that is bundled
* with this package in the file LICENSE.txt.
*
* @category
* @package MYNETS_Config Class
* @author KUNIHARU Tsujioka <kunit****@gmail*****>
* @copyright Copyright (c) 2008 KUNIHARU Tsujioka <kunitsuji @ gmail.
com>
* @copyright Copyright (c) 2006-2008 Usagi Project (URL:http://usagi.
mynets.jp)
* @license New BSD License
*/
class MYNETS_Config extends CI_Config {
private $is_ssl = null;
/**
* Constructor
*
*/
public function __construct()
{
parent::__construct();
//2008-04-21 KUNIHARU Tsujioka
$this->_is_ssl();
}
// -----------------------------------------------------------------
---
/**
* Site URL
*
* @access public
* @param string the URI string
* @param bool SSL true/false 2008-04-21 KUNIHARU Tsujioka updated
* @return string
*/
public function site_url($uri = '', $ssl = FALSE)
{
if (is_array($uri))
{
$uri = implode('/', $uri);
}
if ($uri == '')
{
if ($ssl)
{
return $this->slash_item('base_url_ssl').$this->item
('index_page');
}
else
{
return $this->slash_item('base_url').$this->item
('index_page');
}
}
else
{
$suffix = ($this->item('url_suffix') == FALSE) ? '' : $this
->item('url_suffix');
if ($ssl)
{
return $this->slash_item('base_url_ssl').$this->
slash_item('index_page').preg_replace("|^/*(.+?)/*$|", "\\1", $uri).
$suffix;
}
else
{
return $this->slash_item('base_url').$this->slash_item
('index_page').preg_replace("|^/*(.+?)/*$|", "\\1", $uri).$suffix;
}
}
}
//2008-04-21 KUNIHARU Tsujioka update
/**
* 現在の通信がSSLかどうかを判定する
* @access plivate
*
* @return bool
*
*/
private function _is_ssl()
{
static $is_ssl;
if (!isset($is_ssl)) {
if (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') {
$is_ssl = true;
} else {
$is_ssl = false;
}
}
$this->is_ssl = $is_ssl;
}
public function is_ssl()
{
return $this->is_ssl;
}
}
?>
あとは、application/config/config.phpの頭に
$config['base_url_ssl'] = MYNETS_URL_SSL;
でSSLのURL(基本的にbase_urlと同じはず)を記述すれば大丈夫かなと。
ファイル添付がいいのかメールに書いたらいいのかわからずとりあえず。