请教 CI 如何针对同一个 uri 的 get 和 post 请求做不同处理

2016-01-16 16:51:24 +08:00
 sensui7
比如说 auth/login 这个 uri, 如果是 get 则显示登录表单, 如果 post 则发送登录信息.

之前我是 post 到另一个 uri 上, 比如 form action = "auth/post_login", 但是这样的话, 当验证没通过, 需要重新填充表单时, url 就变成 post_login 了, 如果重定向回去, 那么 set_value 又用不了.

我用的 CI 2.x, 这个问题请问一般如何处理的.
4101 次点击
所在节点    PHP
18 条回复
XianZaiZhuCe
2016-01-16 17:00:26 +08:00
判断是 get 还是 post ,然后输出不同的 view ?
abelyao
2016-01-16 17:10:56 +08:00
CI 3.x 有个 $this->input->method() 函数,可以获得当前请求的类型,在 2.x 中好像没有…
minuux
2016-01-16 17:23:11 +08:00
不知道 CI2.X 是否有这个配置, 3.0 的话你可以在 config/router.php 中设置

$route['auth/login']['get'] = 'auth/login';
$route['auth/login']['post'] = 'auth/post_login';
lmfx89
2016-01-16 17:34:02 +08:00
if (empyt($this->input->post()) {
} else {
}
Raidal
2016-01-16 18:15:18 +08:00
sensui7
2016-01-16 18:20:54 +08:00
@Raidal 这个要求是 ci 3, 话说要是 ci 3 的话, 直接用
@minuux 的方法就行了.

我现在直接保存变量,再往 views 传变量了. 也好使.
chaegumi
2016-01-16 19:02:56 +08:00
if(strtolower($_SERVER['REQUEST_METHOD'])==='post'){
// post
}else{
// get
}
sensui7
2016-01-16 19:12:38 +08:00
@chaegumi 这类变量我都不碰, 感觉坑多...
stellar
2016-01-16 19:53:58 +08:00
realpg
2016-01-16 22:57:46 +08:00
route 里面可以配
在 controller 里也可以读取 method
甚至可以用 post 取值判断是否有值来判定当前是不是 post
Jaylee
2016-01-16 23:02:49 +08:00
可以在_remap()中判断呀
db520
2016-01-16 23:14:22 +08:00
@sensui7 php 内置变量怎么就坑了?为什么要拘泥于框架
sensui7
2016-01-16 23:34:00 +08:00
@db520 我没有说这个变量不好,完全没有那个意思。我是说这个变量中很多属性不是服务端控制的,使用时需要考虑的完善一点。
有简单的方法时,我倾向不用他,省去很多麻烦。
realpg
2016-01-17 01:46:45 +08:00
@db520
因为有些框架会 unset 、 rewrite 系统全局变量什么的。
比如, CI 就可以配置成自动销毁$_GET , PHP 并不阻止任何针对映射进来的全局变量的顶层二次操作
依托框架写的程序,只要框架没移除支持,用框架的方法才能保证兼容性
sensui7
2016-01-17 01:53:00 +08:00
@realpg 您考虑的很周全, 多谢了。
chaegumi
2016-01-17 07:44:00 +08:00
@realpg
@sensui7

趋势懂吗, codeigniter 很多以前的函数,虽然保留了,但是新版的都改写成直接调用 php 内置的函数了。学习了框架后连 php 本身的东西都不会了,算什么
db520
2016-01-17 16:50:33 +08:00
@sensui7 框架应该也是读的这个内置变量啊,我就怕你框架用多了,忘记了 php 自身基本的东西。
db520
2016-01-17 16:52:59 +08:00
@realpg 如果是为了兼容性可以理解。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/251205

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX