① 在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取參數,個人覺得第一種方便