laravel 登录+中间件拦截+红柚小说网小说采集+图片本地化
、、、、、、、、、、、、、、、、、、、、、、、登录界面
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>登录</title> <link rel="stylesheet" href="http://apps.bdimg.com/libs/bootstrap/3.3.0/css/bootstrap.min.css"> </head> <body> <form action="/login/login" method="post" style="width: 300px"> @csrf <div class="form-group"> <label for="name">账号</label> <input type="text" class="form-control" name="name" placeholder="请输入账号"> </div> <div class="form-group"> <label for="name">密码</label> <input type="password" class="form-control" name="password" placeholder="请输入密码"> </div> <input type="submit" value="立即登录"> </form> </body> </html>
<?php namespace App\Http\Controllers; use App\models\hongyouLoginModel; use App\models\hongyouModel; use Illuminate\Http\Request; class hongyouLoginController extends Controller { // //登录 public function login(Request $request){ if ($request->isMethod('post')){ $params=$request->except('_token'); //调用模型 if (empty($params['name'])){ echo '用户名不可以为空'; header('refresh:2,url=/login/login'); die; } if (empty($params['password'])){ echo '密码不可以为空'; header('refresh:2,url=/login/login'); die; } $user=hongyouLoginModel::login($params); if (empty($user)){ echo '账号不存在'; header('refresh:2,url=/login/login'); die; } if ($user['name']!=$params['name']){ echo '您输入的账号有误,请核对后再输入'; header('refresh:2,url=/login/login'); die; } if ($user['name']!=$params['name']){ echo '您输入的密码有误,请核对后再输入'; header('refresh:2,url=/login/login'); die; //记录session } $request->session()->put('name',$user['name']); echo '登录成功'; header('refresh:2,url=/hongyou/list'); }else{ return view('login.login'); } } }
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>展示页面</title> <link rel="stylesheet" href="http://apps.bdimg.com/libs/bootstrap/3.3.0/css/bootstrap.min.css"> </head> <body> <table class="table" border="1"> <tr> <td>标题</td> <td>图片</td> <td>作者</td> <td>分类</td> <td>描述</td> </tr> @foreach($data as $k=>$v) <tr> <td>{{$v['title']}}</td> <td><img src="{{$v['img']}}" alt="" width="100px"height="100px"></td> <td>{{$v['author']}}</td> <td>{{$v['cate']}}</td> <td>{{$v['content']}}</td> </tr> @endforeach </table> {{$data->links()}} </body> </html>
、、、、、、、、、、、、、、、、、、、、、、模型页面
<?php namespace App\models; use Illuminate\Database\Eloquent\Model; class hongyouLoginModel extends Model { // protected $table='testlogin'; public $primaryKey='id'; public $timestamps=false; public static function login($params){ return self::where('name','=',$params['name']) ->first(); } }
、、、、、、、、、、、、、、、、、、中间件页面
<?php namespace App\Http\Middleware; use Closure; class hongyouLogin { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $name = $request->session()->get('name'); if (empty($name)) { echo '请先登录'; header('refresh:2,url=/login/login'); die; } return $next($request); } }
、、、、、、、、、、、、、、、、、、、、、、kernel.php页面
<?php namespace App\Http; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { /** * The application's global HTTP middleware stack. * * These middleware are run during every request to your application. * * @var array */ protected $middleware = [ \App\Http\Middleware\TrustProxies::class, \Fruitcake\Cors\HandleCors::class, \App\Http\Middleware\CheckForMaintenanceMode::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, ]; /** * The application's route middleware groups. * * @var array */ protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, // \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, //增加中间件 \App\Http\Middleware\hongyouLogin::class, ], 'api' => [ 'throttle:60,1', \Illuminate\Routing\Middleware\SubstituteBindings::class, ], ]; /** * The application's route middleware. * * These middleware may be assigned to groups or used individually. * * @var array */ protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, //增加中间件 'hongYouLogin'=>\app\http\middleware\hongyouLogin::class, ]; }
Query:list 采集页面
<?php namespace App\Http\Controllers; use App\models\hongyouModel; use Illuminate\Http\Request; use QL\QueryList; class hongyouController extends Controller { // public function hongyouadd() { //采集的网址 $url = 'https://www.hongxiu.com/free'; $content = file_get_contents($url); //范围 $range = '.book-img-text li'; $rules = [ 'title' => ['h4', 'text'], 'img' => ['img', 'src'], 'author' => ['a[class="default name"]', 'text'], 'cate' => ['a[data-eid="qd_E07"]', 'text'], 'content' => ['.intro', 'text'], ]; $sql = QueryList::html($content)->range($range)->rules($rules)->queryData(); //图片本地化 foreach ($sql as $k=>$v){ $file= 'http:'.($v['img']);//拼接http:// $files=file_get_contents($file);//文件的内容读入到一个字符串中 //创建一个文件夹 $filename='./book/'.md5(time().$k).'.jpg'; //将文件放入在$filename file_put_contents($filename,$files); $sql[$k]['img']=substr($filename,1); } $res=hongyouModel::store($sql); if ($res){ echo '采集成功'; header('refresh:2,url=/hongyou/list'); }else{ echo '采集失败'; } } public function list(){ $data=hongyouModel::list(); return view('hongyou.hongyoulist',compact('data')); } }
报以下错误需要这样处理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现