ThinkPHP实战
上QQ阅读APP看书,第一时间看更新

4.9 HTTP请求方法

很多情况下,需要判断当前HTTP请求方法是否为GET、POST、PUT或DELETE,以此对同一个URL地址针对不同的请求方法来实现不同的响应。ThinkPHP内置了一些常量用来判断请求方法,如表4-1所示。

表4-1

编辑Application/Home/Controller/IndexController.class.php方法,代码如下:

        <? php
        namespace Home\Controller;
        use Think\Controller;
        class IndexController extends Controller
        {
        public function index()
        {
            $this->redirect('login', 'role=admin', 3, ’请登录’);
        }
        public function bind($id = 1)
        {
            echo U('Blog/view', array('id' => 1), 'shtml');
        }
        public function login()
        {
            if (IS_POST)
            {
                echo ’当前为POST请求方法,需要处理登录逻辑’;
            }
            else if (IS_GET)
            {
                echo ’当前为空GET请求方法,需要显示登录页面’;
            }
            else
            {
                echo ’非法请求’;
            }
        }
        }

打开浏览器访问http://localhost/chapter-4/Home/Index/login,输出“当前为空GET请求方法,需要显示登录页面”。

如何测试POST请求呢?这里使用表单来进行处理,在chapter-4的根目录下新建post.html,代码如下:

        <! DOCTYPE html>
        <html lang="en">
        <head>
        <meta charset="UTF-8">
        <title>Post</title>
        </head>
        <body>
        <form action="http://localhost/thinkphp-inaction/chapter-4/Home/Index/login" method="post">
        <button>提交</button>
        </form>
        </body>
        </html>

打开浏览器访问http://localhost/chapter-4/post.html,点击“提交”按钮,输出“当前为POST请求方法,需要处理登录逻辑”,如此便实现了“相同URL根据不同请求方法实现不同响应”的功能。