Php 如何防止用户直接访问post路由,以及如何在laravel 5中检查请求是否为空?

Php 如何防止用户直接访问post路由,以及如何在laravel 5中检查请求是否为空?,php,post,laravel-5,request,Php,Post,Laravel 5,Request,以下是我在laravel 5应用程序中的路线 路线::发布“演示结果”HomeController@demo_result'; 在我的第一个路由视图中,我有一个from,操作为{url'demo_result'},如果用户提交表单,它将发布到我的第二个路由,并且一切正常,在这里提交表单后,我的路由将更改为demo_result,这是一个发布路由。 现在的问题是,如果任何用户直接试图访问演示结果,它将显示以下错误。 那么如何处理这个问题呢。我试图检查请求是否为空,但没有用。我正在使用use\Htt

以下是我在laravel 5应用程序中的路线

路线::发布“演示结果”HomeController@demo_result'; 在我的第一个路由视图中,我有一个from,操作为{url'demo_result'},如果用户提交表单,它将发布到我的第二个路由,并且一切正常,在这里提交表单后,我的路由将更改为demo_result,这是一个发布路由。 现在的问题是,如果任何用户直接试图访问演示结果,它将显示以下错误。
那么如何处理这个问题呢。我试图检查请求是否为空,但没有用。我正在使用use\Http\Request;处理请求

方法不允许表示您尚未为演示结果URL声明GET方法

我想你能做的就是创建一条新路线

Route::get(demo_result', ...);
指向控制器中的自定义方法,该方法将用户重定向到表单,如

public function getResult(){ return redirect('demo_form');
当您没有发布数据,只是从浏览器访问页面时,您询问的是另一种方法,而不是您声明的方法


另一种方法是设置404处理程序…

使用any而不是get或post,然后通过使用isset,您可以编写自己的登录名。试试这条路线:任何

您可以在中编辑渲染函数

app\Exceptions\handler.php

比如:


路线::任何“演示结果”HomeController@demo_result';.. 在演示结果中使用了任意和isset函数function@BilalAhmed谢谢,我用Route::any解决了我的问题。欢迎你……谢谢你的回答,即使是先处理404,我也需要知道请求是否有效,或者至少POST数据是空的,我尝试过,但显示了我上面提到的错误。无论如何,我通过使用Route::any解决了我的问题。
public function getResult(){ return redirect('demo_form');
public function render($request, Exception $exception)
    {   
         if($exception instanceof \Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException){
             return redirect('/');
         }

        return parent::render($request, $exception);
    }