laravel 4.1验证url输入

时间:2014-04-11 17:05:31

标签: php laravel

好的,几乎每件事都在我的代码中工作

和它相当不错

我需要有关如何验证用户网址输入

的帮助

如果他确实插入了非Url如何将其引导到404页面

这是我的路线文件

Route::get('/', function()
{
    return  View::make('hello');    
}); 

Route::post('/', function()
{
$url = Input::get('url');
$record = Url::where('urls', '=', $url)->first();
if ($record) {
    return View::make('result')
    ->with('shortend', $record->shortend);
}

function get_uniqe_short_url()
{

    $shortend = base_convert(rand(1000,99999), 10, 36);
    if (Url::where('shortend', '=' ,$shortend)->first() ){
        get_uniqe_short_url();
    }
    return $shortend;
}
$shortend = get_uniqe_short_url();

// otherwise add new row and return shortned url 
 $row = new URl;
    $row->urls = $url;
    $row->shortend = $shortend;
    $row->save();

 // create a results view and present the short url to the usr 

 if ($row){
    return View::make('result')->with('shortend',$shortend);
 } 
});


Route::get('{shortend}', function($shortend) 
    {
     // query the DB For the row with that short url 
        $row = Url::where('shortend', '=', $shortend)->first();
     // if not found redirect to home page 
        if (is_null($row) ) return Redirect::to('/');
     // else grab the url and redirect 
        return Redirect::to($row->urls);

    });

请原谅我的许多问题,但我对laravel来说是全新的

1 个答案:

答案 0 :(得分:0)

首先,作为提示,您在routes.php中有这样的逻辑。 URL路由器用于接收HTTP请求和"路由"他们到正确的控制器和方法。请参阅the documentation以开始使用控制器。

我从来都不喜欢"重定向到404页面"而是我相信如果找不到页面,它应该在那里显示404页面。要使用laravel执行此操作,您可以调用App::abort(404);来杀死应用程序并将404状态返回给浏览器。你可以通过" listen"进一步采取这一步骤。到404错误并返回您自己的自定义视图:

App::missing(function()
{
    return View::make('errors/404');
});

如果您需要更多帮助来验证URL,请告诉我,但我认为您应该首先使用控制器重构代码。您可以查看this question正则表达式以匹配网址。这是你在PHP中使用正则表达式的方法:

if(!preg_match('/expression/', $url)) {
    App::abort(404);
}