[Codeigniter-users] アプリでSSL通信を行う場合

Back to archive index

kunitsuji tsuji****@m-s*****
2008年 6月 7日 (土) 16:43:05 JST


 kunitsujiです。

安藤さん。どもです。

メールで書くのはながくなるのでどうかとおもうんですけどね。。。
はてなダイアリーにアップして、リンクつけておいたほうがいいかな。



>安藤です。
>
>kunitsujiさん、お疲れ様です。
>どんどんライブラリが増えていきますね!
>
>2008/06/07 16:27 kunitsuji <tsuji****@m-s*****>:
>>  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と同じはず)を記述すれば大丈夫かなと。
>>
>> ファイル添付がいいのかメールに書いたらいいのかわからずとりあえず。
>>
>> _______________________________________________
>> Codeigniter-users mailing list
>> Codei****@lists*****
>> http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users
>>
>
>_______________________________________________
>Codeigniter-users mailing list
>Codei****@lists*****
>http://lists.sourceforge.jp/mailman/listinfo/codeigniter-users




Codeigniter-users メーリングリストの案内
Back to archive index