① 在ci的模板中如何使用自定义的函数
所有的入口都从根目录下的index.php进入,确定应用所在目录后,加载 codeigniter/CodeIgniter.php 文件,该文件会顺序加载以下文件执行整个流程。
index.php:检测文件路径,加载codeigniter.php文件
codeigniter.php: 加载 Common/constants....文件。获取文件模式、设置计时器、实例化类(错误类、扩展类、钩子类、系统扩展、配置类、编码类、路由类、过程类、输出类、安全类、语言类、控制器)、加载请求方法、渲染输出view。
CodeIgniter的一个类会保存为一个php文件,类名与文件名同名,它的核心应用类会在类名前加"CI_"。
system/core/common.php:包含检测php版本、文件权限、加载核心类、获取配置参数、加载异常/错误类、获取http请求状态等公共函数
application/config/constants.php:设置文件权限常量、应用程序宏定义文件
system/core/Benchmark.php:用来记录执行时间
system/core/Hooks.php:检测是否有钩子对象调用
system/core/Config.php:为管理配置文件提供方法,检测application/config/config.php参数
application/config/config.php:配置全局参数
system/core/URI.php:解析url参数
system/core/Router.php:检测路由配置,解析 HTTP 请求,以确定谁来处理
system/core/Output.php:检查是否有缓存文件,如果存在则直接输出内容。
system/core/Input.php:过滤 HTTP 请求和任何用户提交的数据
system/core/Long.php:初始化提示语言变量
② PHP CodeIgniter框架中怎么获取当前页面的URL
<?php
/**
* 获取当前页面完整URL地址
*/
function get_url() {
$sys_protocal = isset($_SERVER['SERVER_PORT']) && $_SERVER['SERVER_PORT'] == '443' ? 'https://' : 'http://';
$php_self = $_SERVER['PHP_SELF'] ? $_SERVER['PHP_SELF'] : $_SERVER['SCRIPT_NAME'];
$path_info = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : '';
$relate_url = isset($_SERVER['REQUEST_URI']) ? $_SERVER['REQUEST_URI'] : $php_self.(isset($_SERVER['QUERY_STRING']) ? '?'.$_SERVER['QUERY_STRING'] : $path_info);
return $sys_protocal.(isset($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : '').$relate_url;
}
echo get_url();
?>
③ php codeigniter 访问控制器某方法,报错404 经查
控制器错了~大小写问题?服务器重写~还是你配置base_url???php codeigniter 访问控制器某方法,报错404 经查
④ CI框架如何删除URL中index.php的终极解决方案
默认情况下,index.php 文件将被包含在你的 URL 中:
example.com/index.php/news/article/my_article
你可以很容易的通过 .htaccess 文件来设置一些简单的规则删除它。下面是一个例子,使用“negative”方法将非指定内容进行重定向:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
注意:如果你的项目不在根目录请把上面这一句改为:RewriteRule ^(.*)$ index.php/$1 [L]
在上面的例子中,可以实现任何非 index.php、images 和 robots.txt 的 HTTP 请求都被指向 index.php。
我的终极解决方案
但在实践中,以上方案仅适用于与运行于Apache环境下的服务器且并不具有充分的普遍适用性!当CI程序位于非根目录或位于某些虚拟主机上时,以上解决方案会引起”404错误”或”no input file specified”等错误.网络参考过相关问题的解放方案后,找到了一种具有通用性的有效删除URL路径中index.php的方法,代码参考如下:
index位于根目录时,你可以在index.php所在的根目录里新建.htaccess文件并使用以下代码:
RewriteEngine on
RewriteCond $1 !^(index\.php|robots\.txt)
RewriteRule ^(.*)$ /index.php?/$1 [L]
当index.php不在根目录时,你可以在index.php所在目录里新建.htaccess文件并使用以下代码:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txtl)
RewriteRule ^(.*)$ /path_to_app/index.php?/$1 [L]
注意把path_to_app换成你的index.php所在文件的目录.假设你的index.php放在根目录的tool子文件夹下,你可以这样写:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txtl)
RewriteRule ^(.*)$ /tool/index.php?/$1 [L]
以上方案应该可以解决Apache环境下如何有效删除URL中index.php的问题,
⑤ CodeIgniter框架如何去掉url中的index.php
CodeIgniter框架,PHP开发中的一款MVC模式框架。去掉url中的index.php,需要对url进行重写。这个重写功能是由Apache服务器提供的,实际上不知框架的url可以从重写,任何一个项目的url都可以被重写。只要利用Apache服务器的重写规则。
下面就针对CodeIgniter框架去掉url中的index.php来具体说说步骤:
加载mod_rewrite.so模块,在httpd.conf中,将“LoadMole rewrite_mole moles/mod_rewrite.so”前面的“#”去掉
开启url重写功能。在httpd.conf文件中加上:
<Directory "D:/phpserver/www/CodeIgniter">
Options Indexes FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
这个是为了让Apache支持D:/phpserver/www/CodeIgniter文件夹下的.htaccess文件(具体目录要换成实际项目中的根目录)
在D:/phpserver/www/CodeIgniter文件夹下加入.htaccess文件(注意前面的小数点),文件内容如下:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|js|css|robots\.txt) //上面的代码意思是排除某些目录或文件,使得这些目录不会 rewrite 到 index.php 上,这一般用在图片、js、css 等外部资源上。也就是说非 PHP 代码都要排除出去。
RewriteRule ^(.*)$ /CodeIgniter/index.php/$1 [L]
修改还要修改 config.php 这个文件中的下列内容:
$config['index_page'] = 'index.php'
改为
$config['index_page'] = ''
这样就可以在url中直接写Controller和Function名,而不用加上index.php了
⑥ 在PHP的CI框架中,kindeditor自动过滤尖括号,怎么办
你看抄看application/config/config.php 文件启用了 XSS 过滤
$config['global_xss_filtering'] = TRUE;
或者您 $this->input->post( 'c', TRUE );
都会自动过滤一些特殊附号的。
⑦ php CI框架中的 $this->uri->segment(); 是什么意思啊
获得URL上的参数
比如:...index.php/controller/index/3
$this->uri->segment(3);就是url上从index.php开始往后数,/划分,例子上就是得到的3
⑧ 在PHPci框架中怎样控制不能直接访问控制器中的某个方法
很简单,在结果页面加一个判断就可以..
比如:
结果页面需要输入回页面的返回值,也在结果页面去判断这答个值是不是为null的,如果是null 就 return 一下就可以 ,在写一些代码让它返回输入页面
⑨ 在nginx下如何去除ci框架url中的index.php
apache环境下:
通过 .htaccess 文件来设置一些简单的规则删除它。下面是一个例子,使用“内negative”方法将非指定内容进行容重定向:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
如果你的项目不在根目录请把上面这一句改为:RewriteRule ^(.*)$ index.php/$1 [L]
在上面的例子中,可以实现任何非 index.php、images 和 robots.txt 的 HTTP 请求都被指向 index.php。
Nginx环境下:
修改nginx配置文件,在SERVER段中添加如下代码:
location /{
if (-f $request_filename) {
expires max;
break;
}
if (!-e $request_filename) {
rewrite ^/(.*)$ /index.php/$1 last;
}
}
⑩ php ci怎么取出加在url后面的变量
一种方法是在控制器的方法中加参数,第二种是用uri_segment取参数,个人觉得第一种方便