好的,几乎每件事都在我的代码中工作
和它相当不错
我需要有关如何验证用户网址输入
的帮助如果他确实插入了非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来说是全新的
答案 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);
}