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

Back to archive index

Kenichi Ando neo.k****@gmail*****
2008年 6月 7日 (土) 16:39:03 JST


安藤です。

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 メーリングリストの案内
Back to archive index