首页 > 编程 > PHP > 正文

thinkPHP跳转方法及重定向

2019-11-08 02:57:56
字体:
来源:转载
供稿:网友

在thinkphp中,跳转页面的实现由success和error方法实现,操作成功时用success方法,失败则使用error方法。且他们两者均支持Ajax提交。 使用方法举例:

$User = M('User');//实例化User对象$result = $User->add($data);if($result){ //条件成立时跳转 $this->success('操作成功','/User/index');}else{ //条件不成立时的跳转 $this->error('操作失败');}

success、error方法

他们分别有三个参数,第一个参数代表提示信息,第二个参数表示跳转地址,第三个参数是跳转是件(单位:秒),例:

//操作完成3秒后跳转到/Article/index$this->success('操作成功','/Article/index',3);//操作失败5秒后跳转到/Article/error$this->error('操作失败','/Article/error',5);

注:跳转地址是可选参数,success方法默认的跳转地址是$_SERVER[‘HTTP_REFERER’],error方法的默认跳转地址是javascript:history.back(-1); 跳转时间也是可选的,默认success方法是1s,error方法是3s。

重定向

Controller类的redirect方法可以实现页面的重定向功能。 redirect方法的参数用法和U函数的用法一直,例:

//重定向到New模块的Category操作$this->redirect("New/category',array('cate_id'=>2),5,'页面跳转中...');

说明:上面的用法表示5秒后跳转到New模块的category操作,并且显示‘页面跳转中…’字样,重定向后会改变当前的额URL地址。 如果仅仅是想重定向到一个指定的URL地址而不是到某个模块的操作方法,可以直接时用下面的额redirect函数重定向:

//重定向到指定的URL地址redirect('/New/category/cate_id/2',5,'页面跳转中...');

redirect函数的第一个参数是URL地址。 注:redirect方法和redirct函数的区别在于前者是用URL规则定义跳转,后者是一个纯粹的URL地址。 thinkPHP可以很好的支持AJAX请求,在系统的/Think/Controller提供了ajaxReturn方法泳衣AJAX调用后返回数据给客户端。并且支持JSON、JSONP、xml和EVAL四种方式给客户端接收数据,并且支持配置其他方式的数据格式返回。 ajaxReturn方法调用示例(返回单个数据):

$data = 'ok';$this->ajaxReturn($data);

ajaxReturn返回数组:

$data['status']=1;$data['content']='content';$this->ajaxReturn($data);

ajaxReturn默认配置采用JSON格式返回数据(通过配置DEFAULT_AJAX_RETURN进行设置),我们可以指定格式返回,例:

//指定XML格式返回数据$data['status']=1;$data['content']='content';$this->ajaxReturn($data,'xml');

获取变量

I方法是thinkPHP用于更加方便和安全的获取系统输入变量,可以用于任何地方,格式:

I('变量类型.变量名/修饰符',['默认值' ], ['过滤方法或正则'], ['额外数据源']);

变量类型:指请求方式或者输入类型,包括:

变量类型含义
get获取GET参数
post获取POST参数
param自动判断请求类型获取GET、POST、或者PUT参数
request获取REQUEST参数
put获取PUT参数
session获取$_SESSION参数
cookie获取$_COOKIE参数
server获取$_SERVER参数
globals获取$GLOBALS参数
path获取PATHINFO模式的URL参数
data获取其他类型的参数,需要配合额外数据源参数

注意:变量类型不区分大小写,变量名则严格区分大小写。默认值和过滤方法均属于可选参数。 举例说明:

echo I('get.id'); //相当于$_GET['id']echo I('get.id', 0); //I方法支持的默认值,即当get.id不存在的时候,返回默认值0echo I('get.name', '', 'htmlspecialchars'); //采用htmlspecialchars对$_GET['name']进行过滤,如果不存在则返回空字符串echo I('get.'); //直接获取整个变量类型I('post.name', '', 'htmlspecialchars'); //采用htmlspecialchars方法对$_POST['name']进行过滤,如果不存在则返回空字符串I('session.user_id',0); //获取$_SESSION['user_id'],不存在时返回默认值0I('cookie.'); //获取整个$_COOKIE数组I('server.REQUET_METHOD'); //获取$_SERVER['REQUEST_METHOD']

变量修饰符:

最新版本的I函数支持对变量使用修饰符功能,可以更方便的通过类型过滤变量,例子:

I('get.id/d'); //强制变量为整形I('get.ids/a'); //强制变量为数组类型

可以使用的修饰符包括:

修饰符作用
s强制转换为字符串类型
d强制转换为整型类型
b强制转换为布尔类型
a强制转换为数组类型
f强制转换为浮点类型

过滤方法或正则:

如果没有在调用函数的时候指定过滤算法的话,系统会采用默认的过滤机制(由DEFAULT_FILTER配置),事实上,该参数的默认设置是:

//系统默认的变量过滤机制'DEFAULT_FILTER' =>'htmlspecialchars

也就是说,I方法的所有获取变量如果没有设置变量过滤方法的话都会进行htmlspecialchars进行过滤,那么:

I('get.name'); //等同于htmlspecialchars($_GET['name']);

默认过滤机制也可以有多个值:

'DEFAULT_FILTER' =>'strip_tags,htmlspecialcars'

注:如果在使用I方法的时候指定过滤方法,那么就会忽略DEFAULT_FILTER的设置。 例:

//对$_POST['email']进行格式验证,不符合要求时返回空字符串I('post.email', '', filter_validate_email);

过滤方法名称必须是filter_list方法中的有效值(不同服务器环境可能有所不同),可能支持的值如下:

filter_intfilter_booleanfilter_validate_regexpfilter_validate_emailfilter_validate_ipfilter_stringfilter_strippedfilter_encodedfilter_special_charsfilter_unsafe_rawfilter_emailfilter_urlfilter_number_intfilter_number_floatfilter_magic_quotesfilter_callback

注:在一些特殊情况下,我们不希望进行任何过滤,可以将过滤方法值为空或false,此时系统就不会再进行任何形式的过滤了。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表