Autumn中文文档3:接收客户端数据
2017-04-25 10:58
330 查看
项目地址:https://github.com/bit128/autumn
core\http\Request模块封装了客户端的请求,在控制器中我们用它来获取来自客户端的请求参数。
通过isPostRequest()方法来判定这是一个POST请求,通过getPost()可以获取对应的参数。
判断是否是POST请求
getQuery(key,default = ”) 名称,默认值 mixed 获取GET参数
getPost(key,default = ”) 名称,默认值 mixed 获取POST请求参数
getParam(key,default = ”) 名称,默认值 mixed 获取GET\POST请求参数
setParam(key,value) 名称,值 - 设置一个参数到GET参数列表中
setSession(key,value) 名称,值 - 设置一个session键值对
getSession(key,default = ”) 名称,默认值 mixed 获取一个session值
destorySession() - - 销毁全部session
setCookie(key,value, limit=0)键,值,有效时间−设置一个cookie键值对getCookir(key, default=”)名称,默认值mixed获取一个cookie值deleteCookie(key) 名称 - 删除一个cookie
createToken() -
string
生成表单令牌
checkToken() - string 验证表单令牌
getAgent() - string 获取客户端浏览器名称
getIp() - string 获取客户端IP地址
getTime() - string 获取客户端请求时间
http://127.0.0.1/user/find/?user_name=hongbo&user_gender=1
Autumn虽然也支持这种方式,但我们更建议你使用这样友好的目录形式参数:
http://127.0.0.1/user/find/user_name/hongbo/user/gender/1
以上的url中,user/是请求的控制器,find是执行的action。后面被Autumn理解为查询参数,必须成对出现。
要获取这些查询参数,可以使用HttpRequest中的getQuery()方法。和getPost()一样,它还提供一个默认的参数,当url中的查询参数不存在的时候,使用默认参数来代替。
我们在浏览器中输入:http://127.0.0.1/user/find 的时候用,会输出’hongbo’。因为url中这个参数不存在,所以输出了默认参数’hongbo’。
另外控制器中的action也支持参数绑定。具体我们看例子:
通过浏览器这样访问:http://127.0.0.1/user/find/user_age/18/user_name/hongbo
页面会输出:name: hongbo age:18
你会发现action中的参数顺序和url中的参数不必一致。
表单令牌
Request提供了表单令牌功能,我们可以在form表单中生成一令牌:
然后在控制器中这样来校验令牌:
需要注意的是autumn提供的令牌机制不支持并发的表单提交。开发者需要保证生成的令牌和校验的令牌是同一个。举个例子,开发者先创建了一个令牌A,在没有提交表单并校验之前,又重复创建了一个令牌B。这时候令牌A就失效了,框架在校验开发者的令牌时,只接受令牌B。
core\http\Request模块封装了客户端的请求,在控制器中我们用它来获取来自客户端的请求参数。
接收POST和GET参数
有一个注册的action,需要接受客户端发来的账号和密码:namespace app\controllers; use core\Autumn; class MyController extends \core\web\Controller { public function actionRegister() { if (Autumn::app()->request->isPostRequest()) { $account = Autumn::app()->request->getPost('account'); $password = Autumn::app()->request->getPost('password'); //具体注册业务逻辑... } } }
通过isPostRequest()方法来判定这是一个POST请求,通过getPost()可以获取对应的参数。
HttpRequest提供的方法
isPostRequest() - true | false判断是否是POST请求
getQuery(key,default = ”) 名称,默认值 mixed 获取GET参数
getPost(key,default = ”) 名称,默认值 mixed 获取POST请求参数
getParam(key,default = ”) 名称,默认值 mixed 获取GET\POST请求参数
setParam(key,value) 名称,值 - 设置一个参数到GET参数列表中
setSession(key,value) 名称,值 - 设置一个session键值对
getSession(key,default = ”) 名称,默认值 mixed 获取一个session值
destorySession() - - 销毁全部session
setCookie(key,value, limit=0)键,值,有效时间−设置一个cookie键值对getCookir(key, default=”)名称,默认值mixed获取一个cookie值deleteCookie(key) 名称 - 删除一个cookie
createToken() -
string
生成表单令牌
checkToken() - string 验证表单令牌
getAgent() - string 获取客户端浏览器名称
getIp() - string 获取客户端IP地址
getTime() - string 获取客户端请求时间
Url请求参数和action参数绑定
传统的url请求参数可能是这样子的:http://127.0.0.1/user/find/?user_name=hongbo&user_gender=1
Autumn虽然也支持这种方式,但我们更建议你使用这样友好的目录形式参数:
http://127.0.0.1/user/find/user_name/hongbo/user/gender/1
以上的url中,user/是请求的控制器,find是执行的action。后面被Autumn理解为查询参数,必须成对出现。
要获取这些查询参数,可以使用HttpRequest中的getQuery()方法。和getPost()一样,它还提供一个默认的参数,当url中的查询参数不存在的时候,使用默认参数来代替。
<?php namespace app\controllers; use core\Autumn; class UserController extends \core\web\Controller { public function actionFind() { echo Autumn::app()->request->getQuery('user_name', 'hongbo'); } }
我们在浏览器中输入:http://127.0.0.1/user/find 的时候用,会输出’hongbo’。因为url中这个参数不存在,所以输出了默认参数’hongbo’。
另外控制器中的action也支持参数绑定。具体我们看例子:
<?php namespace app\controllers; use core\Autumn; class UserController extends \core\web\Controller { public function actionFind($user_name, $user_age) { echo 'name: ', $user_name, ' age: ', $user_age; } }
通过浏览器这样访问:http://127.0.0.1/user/find/user_age/18/user_name/hongbo
页面会输出:name: hongbo age:18
你会发现action中的参数顺序和url中的参数不必一致。
表单令牌
Request提供了表单令牌功能,我们可以在form表单中生成一令牌:
<form action="/site/test" method="post"> <input type="text" name="user_name"> <?php echo \core\Autumn::app()->request->createToken(); ?> <button type="submit">提交</button> </form>
然后在控制器中这样来校验令牌:
public function actionTest() { if (Autumn::app()->request->isPostRequest()) { if (Autumn::app()->request->checkToken()) { echo '令牌正确'; } else { echo '令牌错误'; } } }
需要注意的是autumn提供的令牌机制不支持并发的表单提交。开发者需要保证生成的令牌和校验的令牌是同一个。举个例子,开发者先创建了一个令牌A,在没有提交表单并校验之前,又重复创建了一个令牌B。这时候令牌A就失效了,框架在校验开发者的令牌时,只接受令牌B。
相关文章推荐
- Autumn中文文档4:响应客户端结果
- ProMesh.net试用(4)-接收客户端数据
- 文档共享:罗斯文2007 (Northwind 2007),数据库文件,中文版本、英文版、英文表结构中文数据版
- Tcp: 从客户端传数据,服务端接收后,转成大写,客户端接收(自编)
- jQuery EasyUI API 中文文档 - 数据表格(DataGrid)
- 服务器获得客户端提交的数据及中文乱码问题
- 智能客户端(Smart Client )中文文档及案例(转贴)
- jQuery EasyUI API 中文文档 - 数据表格(DataGrid)
- 基于异步socket客户端接收数据基础类。
- vs 串口接收数据时 如果数据中含有中文 有时出现乱码的 解决
- 用response向客户端输出中文数据
- ext异步请求一个aspx/ashx/web service取得数据,服务端返回一个json.然后客户端接收并显示.
- FusionCharts动态接收中文XML数据的问题
- Enterprise Library 4.0中文文档-数据访问应用程序块【2】数据访问应用程序块简介
- FusionCharts动态接收中文XML数据的问题
- Asp.net Socket 客户端(发送和接收数据
- Enterprise Library 4.0中文文档-数据访问应用程序块【1】数据访问应用程序块简介
- 编码为GB2312网站让AJAX接收的数据显示支持中文
- jQuery EasyUI API 中文文档 - 数据表格(DataGrid)
- jQuery EasyUI API 中文文档 - DataGrid 数据表格