对于想了解php–如何在CodeIgniter中将动态基本URL设置为https?的读者,本文将是一篇不可错过的文章,我们将详细介绍phpcurl取动态网页源码,并且为您提供关于CodeIgniter
对于想了解php – 如何在CodeIgniter中将动态基本URL设置为https?的读者,本文将是一篇不可错过的文章,我们将详细介绍phpcurl取动态网页源码,并且为您提供关于CodeIgniter 如何解决URL含有中文字符串 codeigniter thinkphp codeigniter 3.0 codeigniter session、CodeIgniter 如何解决URL含有中文字符串,codeigniterurl_PHP教程、CodeIgniter 完美解决URL含有中文字符串,codeigniterurl_PHP教程、CodeIgniter针对lighttpd服务器URL重写的方法,codeigniter的有价值信息。
本文目录一览:- php – 如何在CodeIgniter中将动态基本URL设置为https?(phpcurl取动态网页源码)
- CodeIgniter 如何解决URL含有中文字符串 codeigniter thinkphp codeigniter 3.0 codeigniter session
- CodeIgniter 如何解决URL含有中文字符串,codeigniterurl_PHP教程
- CodeIgniter 完美解决URL含有中文字符串,codeigniterurl_PHP教程
- CodeIgniter针对lighttpd服务器URL重写的方法,codeigniter
php – 如何在CodeIgniter中将动态基本URL设置为https?(phpcurl取动态网页源码)
我在这篇文章中尝试使用动态基本URL:
Set Dynamic Base Url in CodeIgniter
但我曾经使用http,但现在,我想改为https,我怎么能这样做?谢谢.
解决方法:
在你的config / config.PHP中,试试这个:
$root=(isset($_SERVER['HTTPS']) ? "https://" : "http://").$_SERVER['HTTP_HOST'];
$root.= str_replace(basename($_SERVER['SCRIPT_NAME']), '', $_SERVER['SCRIPT_NAME']);
$config['base_url'] = $root;
CodeIgniter 如何解决URL含有中文字符串 codeigniter thinkphp codeigniter 3.0 codeigniter session
CodeIgniter 如何解决URL含有中文字符串,codeigniterurl_PHP教程
codeigniter 如何解决url含有中文字符串,codeigniterurl
codeigniter默认的配置下是不允许url中包含非ascii字符的,如果url中含非ascii字符,那么ci会毫不客气的抛出错误。本文章向码农介绍codeigniter 如何解决url含有中文字符串。
你 可能会说,那我把这个URL使用函数urlencode一下呢?不行。因为Web Server会在接收到一个被urlencode的URL后自动将其decode,然后在PHP里得到的这些字符串转换成他原来所代表的含义,并使用 Web Server自己的URL编码字符集(IIS6 中文版是GBK,Apache 2.2是UTF-8)传送给应用程序,这就使得CI得到的URL已经是一个解码过的,无论你有没有对URL进行urlencode,浏览器在发出请求时会 自动检测,若没有,则会自动进行编码。所以,手动的进行urlencode并不能解决问题。那么我们应该怎么做来解决这个问题呢?
对于CI这种框架,用到现在,我的观点是尽量不要去修改它,而是去扩展他,CI提供了很好的扩展机制,我们只需要在application/core/下(2.0版本以前的为application/libraries/)增加一个文件MY_URI.php,其内容为:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
|
我覆盖了原来CI_URI中的_filter_uri方法,这样就可以使得中文的URL通过检测。但是,如果URL里有空格, 也不行了,怎么办呢?原来,urlencode会将空格转换成+,而CI的默认配置中是不允许+出现在URL里的,OK,把
1 |
|
改成
立即学习“PHP免费学习笔记(深入)”;
点击下载“修复打印机驱动工具”;
1 |
|
就可以了。
或者
第一步把config.php 中的
1 |
|
替换成
1 |
|
面所有的操作我们都做完了,但是接下来你可能又遇到了新的问题,那就是url中得到的中文信息是乱码,不知道在你的服务器上会不会遇到该问题,但是我遇到了(IIS)。但是在本地是正常的,本地用的是apache。
好,我在程序中,把$_SERVER[''REQUEST_URI'']打印出来,发现它就是乱码的,苦思冥想,这是怎么回事?这就说明在我得到uri中的参数之前,就已经被编码了,好,我们使用iconv解码:
1 |
|
现在打印出来看看,好了,原来的中文参数打印出来了,是正确的。
这个问题解决了,但是还是有一个疑问,url为什么是gb2312编码的呢,如果在我的程序中使用(我采用的是utf-8编码),还需要转换为utf-8编码,是不是和web服务器是有关系的呢,希望大家能够帮忙解答。
原文地址:http://www.manongjc.com/article/808.html
codeIgniter相关阅读:
- CodeIgniter URL
- CodeIgniter 控制器
- CodeIgniter 保留名称
- CodeIgniter 视图
- CodeIgniter 模型
- CodeIgniter 辅助函数
- CodeIgniter 类库
- CodeIgniter 创建类库
- CodeIgniter 驱动器
- CodeIgniter 创建驱动器
- CodeIgniter 核心类
- CodeIgniter 附属类
- CodeIgniter 钩子
- CodeIgniter 自动加载
- CodeIgniter 公共函数
- CodeIgniter 兼容性函数
- CodeIgniter URI 路由
- CodeIgniter 错误处理
- CodeIgniter 网页缓存
- CodeIgniter 分析器类
- CodeIgniter CLI 方式运行
- CodeIgniter 管理应用程序
- CodeIgniter 处理多环境
- CodeIgniter 替代语法
- CodeIgniter 安全
- CodeIgniter 开发规范
- codeigniter 路由(URL) 优化分析与讲解
- CodeIgniter框架如何去掉url中的index.php
CodeIgniter 完美解决URL含有中文字符串,codeigniterurl_PHP教程
codeigniter 完美解决url含有中文字符串,codeigniterurl
codeigniter默认的配置下是不允许url中包含非ascii字符的,如果url中含非ascii字符,那么ci会毫不客气的抛出错误。本文章向码农介绍codeigniter 如何解决url含有中文字符串。
你 可能会说,那我把这个URL使用函数urlencode一下呢?不行。因为Web Server会在接收到一个被urlencode的URL后自动将其decode,然后在PHP里得到的这些字符串转换成他原来所代表的含义,并使用 Web Server自己的URL编码字符集(IIS6 中文版是GBK,Apache 2.2是UTF-8)传送给应用程序,这就使得CI得到的URL已经是一个解码过的,无论你有没有对URL进行urlencode,浏览器在发出请求时会 自动检测,若没有,则会自动进行编码。所以,手动的进行urlencode并不能解决问题。那么我们应该怎么做来解决这个问题呢?
对于CI这种框架,用到现在,我的观点是尽量不要去修改它,而是去扩展他,CI提供了很好的扩展机制,我们只需要在application/core/下(2.0版本以前的为application/libraries/)增加一个文件MY_URI.php,其内容为:
<?php if ( ! defined(''BASEPATH'')) exit(''No direct script access allowed''); class MY_URI extends CI_URI { /** * 自定义的url过滤函数 * * @access private * @param string * @return string */ function _filter_uri($str) { if ($str != '''' AND $this->config->item(''permitted_uri_chars'') != '''') { $str = urlencode($str); if ( ! preg_match("|^[".preg_quote($this->config->item(''permitted_uri_chars''))."]+$|i", $str)) { exit(''The URI you submitted has disallowed characters.''); } $str = urldecode($str); } return $str; } }
我覆盖了原来CI_URI中的_filter_uri方法,这样就可以使得中文的URL通过检测。但是,如果URL里有空格, 也不行了,怎么办呢?原来,urlencode会将空格转换成+,而CI的默认配置中是不允许+出现在URL里的,OK,把
$config [''permitted_uri_chars''] = ''a-z 0-9~%.:_\-'';
改成
立即学习“PHP免费学习笔记(深入)”;
点击下载“修复打印机驱动工具”;
$config[''permitted_uri_chars''] = ''a-z 0-9~%.:_\+\-'';
就可以了。
或者
第一步把config.php 中的
$config[''permitted_uri_chars''] = ''a-z 0-9~%.:_\-'';
替换成
$config[''permitted_uri_chars''] =''a-z 0-9~%.:_-u4e00-u9fa5'';
面所有的操作我们都做完了,但是接下来你可能又遇到了新的问题,那就是url中得到的中文信息是乱码,不知道在你的服务器上会不会遇到该问题,但是我遇到了(IIS)。但是在本地是正常的,本地用的是apache。
好,我在程序中,把$_SERVER[''REQUEST_URI'']打印出来,发现它就是乱码的,苦思冥想,这是怎么回事?这就说明在我得到uri中的参数之前,就已经被编码了,好,我们使用iconv解码:
iconv("gb2312","UTF-8",$uri);
现在打印出来看看,好了,原来的中文参数打印出来了,是正确的。
这个问题解决了,但是还是有一个疑问,url为什么是gb2312编码的呢,如果在我的程序中使用(我采用的是utf-8编码),还需要转换为utf-8编码,是不是和web服务器是有关系的呢,希望大家能够帮忙解答。
以上这篇CodeIgniter 完美解决URL含有中文字符串就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持帮客之家。
CodeIgniter针对lighttpd服务器URL重写的方法,codeigniter
codeigniter针对lighttpd服务器url重写的方法,codeigniter
本文实例讲述了codeigniter针对lighttpd服务器url重写的方法。分享给大家供大家参考。具体实现方法如下:
由于开发环境使用的是lighttpd服务器,我本机环境使用的是Apache配置,导致部署到开发机后,所有的链接地址全部跳转到首页。
分析了下,index.php/controller/function ,controller没有生效,应该是路由分发的缘故。
配置lighttpd配置的url重写规则:
url.rewrite-once = ( "/(.*)\.(.*)" => "$0", "/(css|files|img|js|stats)/" => "$0", "^/([^.]+)$" => "/index.php/$1" )
另附Apache url重写规则:
<VirtualHost *:80> ProxyPreserveHost On DocumentRoot "D:/Program Files/xampp/htdocs/xxx" ServerName xxx.baidu.com DirectoryIndex index.php <Directory "D:/Program Files/xampp/htdocs/xxx"> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all </Directory> </VirtualHost>
重启lighttpd服务,ok!
希望本文所述对大家基于CodeIgniter的php程序设计有所帮助。
关于php – 如何在CodeIgniter中将动态基本URL设置为https?和phpcurl取动态网页源码的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于CodeIgniter 如何解决URL含有中文字符串 codeigniter thinkphp codeigniter 3.0 codeigniter session、CodeIgniter 如何解决URL含有中文字符串,codeigniterurl_PHP教程、CodeIgniter 完美解决URL含有中文字符串,codeigniterurl_PHP教程、CodeIgniter针对lighttpd服务器URL重写的方法,codeigniter的相关知识,请在本站寻找。
本文标签: