请教 CI 如何针对同一个 uri 的 get 和 post 请求做不同处理 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sensui7
V2EX    PHP

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

  •  
  •   sensui7 2016 年 1 月 16 日 4694 次点击
    这是一个创建于 3752 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如说 auth/login 这个 uri, 如果是 get 则显示登录表单, 如果 post 则发送登录信息.

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

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

    $route['auth/login']['get'] = 'auth/login';
    $route['auth/login']['post'] = 'auth/post_login';
    lmfx89
        4
    lmfx89  
       2016 年 1 月 16 日
    if (empyt($this->input->post()) {
    } else {
    }
    Raidal
        5
    Raidal  
       2016 年 1 月 16 日
    sensui7
        6
    sensui7  
    OP
       2016 年 1 月 16 日
    @Raidal 这个要求是 ci 3, 话说要是 ci 3 的话, 直接用
    @minuux 的方法就行了.

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

    趋势懂吗, codeigniter 很多以前的函数,虽然保留了,但是新版的都改写成直接调用 php 内置的函数了。学习了框架后连 php 本身的东西都不会了,算什么
    db520
        17
    db520  
       2016 年 1 月 17 日 via Android
    @sensui7 框架应该也是读的这个内置变量啊,我就怕你框架用多了,忘记了 php 自身基本的东西。
    db520
        18
    db520  
       2016 年 1 月 17 日 via Android
    @realpg 如果是为了兼容性可以理解。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     863 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 58ms UTC 22:22 PVG 06:22 LAX 15:22 JFK 18:22
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86