laravel 4.1验证url输入


laravel 4.1 validate url input

好吧,在我的代码中几乎所有的东西都能工作之后

它的非常好

我需要关于如何验证用户url输入的帮助

如果他真的插入了一个非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 完全陌生

首先,作为提示,您的routes.php中有这样的逻辑。URL路由器旨在接受HTTP请求,并将它们"路由"到正确的控制器和方法。请参阅文档以开始使用控制器。

我从不喜欢"重定向到404页面",相反,我相信如果找不到页面,它应该在那里显示404页面。要使用laravel实现这一点,您可以调用App::abort(404);,它将终止应用程序并向浏览器返回404状态。你可以通过"监听"404个错误并返回你自己的自定义视图来更进一步:

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

如果您需要更多的帮助来验证URL,请告诉我,但我认为您应该从使用控制器重新构造代码开始。您可以检查此问题以查找与URL匹配的正则表达式。以下是在PHP中使用正则表达式的方式:

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