url辅助函数
使用URL辅助函数前应先加载:
$this->load->helper('url');
url辅助函数在3.0版本中没太多变动,函数数目没变化
site_url()
base_url()
current_url()
uri_string()
index_page()
anchor()
anchor_popup()
mailto()
safe_mailto()
auto_link()
url_title()
prep_url()
url_title()
redirect()
site_url()
官方手册这么写的:
无论什么时候需要生成 URL ,都鼓励您使用该函数, 这样当您的根 URL 改变的时候更具有可移植性。
例如:
echo site_url('welcome/hello');
//本机显示,http://localhost/index.php/welcome/hello
本人觉得基本form表单action可用到此函数,例如在views/login.php中
<form action=<?=site_url('welcome/login')?> method="post">
<input type="text" name="user" value="jane">
</form>
对应controllers/welcome.php中就得有login方法去接受表单数据
public function login(){
$this->input->post('user');
//接到值就是jane
}
base_url()
可以用它来指定js、css或imgae路径,此时也应注意这三个文件夹路径放置问题,前人推荐将其放着网站根目录与application,system文件夹同级。例如,css文件可这样链接
<link rel="stylesheet" href="<?=base_url()?>css/bootstrap.min.css">
current_url()
返回当前正在查看的页面的完整URL(包括段)
url_string()
返回任何包含了此函数的页面的URI段
//URL为:http://localhost/index.php/welcome/login
echo url_string();
//显示welcome/login
其他的使用方法可自行查看官方文档
输入类
输入类有两个目的:
为了安全,预处理输入数据。
提供helper的一些方法,取得输入数据,并预处理输入数据。
说明: 系统自动加载此类,不用手动加载。
$this->input->get()
定义见/system/core/Input.php,234行
public function get($index = NULL, $xss_clean = NULL)
{
return $this->_fetch_from_array($_GET, $index, $xss_clean);
}
接受两个参数,第二个参数为true时,数据经过跨站脚本过滤器过滤(本文最后会对XSS名词解释,具体可参见链接)
不设置任何参数,该方法将以一个数组的形式返回全部GET过来的数据。
把第一个参数设置为NULL,第二个参数设置为 TRUE (boolean),该方法将经过跨站脚本过滤,返回一个包含全部GET数据的数组。
当找不到值时,返回NULL,之前版本是返回false,见官方更新文档
Changed methods get(), post(), get_post(), cookie(), server(), user_agent() to return NULL instead of FALSE when no value is found.
$this->input->post(),$this->input->server(),$this->input->cookie()
这三个方法同get方法,都是接受两个参数,第二个参数有关XSS。
$this->input->set_cookie()
作用是设置一个 Cookie 的值,参见/system/core/Input.php,356行开始,贴出部分源码
public function set_cookie($name, $value = '', $expire = '', $domain = '', $path = '/', $prefix = '', $secure = FALSE, $httponly = FALSE)
{
if (is_array($name))
{
// always leave 'name' in last place, as the loop will break otherwise, due to $$item
foreach (array('value', 'expire', 'domain', 'path', 'prefix', 'secure', 'httponly', 'name') as $item)
{
if (isset($name[$item]))
{
$$item = $name[$item];
}
}
}
...
...
setcookie($prefix.$name, $value, $expire, $path, $domain, $secure, $httponly);
$name处可传入字符串或者是数组,如果是数组他将进行foreach循环
其他还有以下方法,就不一一说明
get_post()
post_get()
input_stream()---新增方法
ip_address()
valid_ip()
user_agent()
request_headers()
get_request_header()
is_ajax_request()
is_cli_request()
XSS
跨站脚本攻击(Cross Site Scripting),为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。
这里引用freebuf的一篇文章,比我想表达的清楚很多,讲的很详细XSS的原理分析与解剖
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。