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'));
} }
报以下错误需要这样处理



laravel 登录+中间件拦截+红柚小说网小说采集+图片本地化的更多相关文章
- 后盾网lavarel视频项目---lavarel中间件(使用中间件拦截没登录的用户)
后盾网lavarel视频项目---lavarel中间件(使用中间件拦截没登录的用户) 一.总结 一句话总结: 1.中间件中验证用户是否登录:if(!Auth::guard('admin')->c ...
- Django中间件拦截未登录url
1.利用装饰器在视图中拦截未登录的url @login_required(login_url='/user/login/') def homepage(request): pass 这种方法适合于程序 ...
- Laravel 登录后跳转回登录前浏览的页面
一.经过 Auth 中间件检查后跳转至登录页面 也就是没有通过 auth 中间件的认证检查,被 auth 中间件拦截后跳转至登录页面.这种情况下,Laravel 默认会在用户登录成功后自动跳转回登录前 ...
- Python的scrapy之爬取6毛小说网的圣墟
闲来无事想看个小说,打算下载到电脑上看,找了半天,没找到可以下载的网站,于是就想自己爬取一下小说内容并保存到本地 圣墟 第一章 沙漠中的彼岸花 - 辰东 - 6毛小说网 http://www.6ma ...
- 基于Springmvc的登录权限拦截器
1.什么是拦截器 拦截器是指通过统一拦截从浏览器发往服务端的请求来完成功能的增强. 使用场景:解决请求的共性问题(如:乱码问题,权限验证问题等) 2.拦截器的基本工作原理 springmvc可以通过配 ...
- MVC - 单点登录中间件
本章将要和大家分享的是一个单点登录中间件,中间件听起来高深其实这里只是吧单点登录要用到的逻辑和处理流程封装成了几个方法而已,默认支持采用redis服务保存session的方式,也可以使用参数Func& ...
- 使用scrapy爬虫,爬取17k小说网的案例-方法一
无意间看到17小说网里面有一些小说小故事,于是决定用爬虫爬取下来自己看着玩,下图这个页面就是要爬取的来源. a 这个页面一共有125个标题,每个标题里面对应一个内容,如下图所示 下面直接看最核心spi ...
- SpringBoot整合Mybatis完整详细版二:注册、登录、拦截器配置
接着上个章节来,上章节搭建好框架,并且测试也在页面取到数据.接下来实现web端,实现前后端交互,在前台进行注册登录以及后端拦截器配置.实现简单的未登录拦截跳转到登录页面 上一节传送门:SpringBo ...
- SpringBoot日记——登录与拦截器篇
之前的文章我们把登录页写了出来,但是想要让登录现实他的基本功能,要如何做呢?本篇文章就来帮你实现第一步,让登录页对账号密码做校验,并且完成登录跳转. LoginController 1. 要实现登录, ...
随机推荐
- errorC2471:cannot update program database vc90.pdb
解决办法: C/C++ | General | Debug Information format | C7 Compatible (/Z7) C/C++ | Code Generation | Ena ...
- 短信发送器小案例 smsManager
总结实现步骤 (1)画 mainActivity页面 <LinearLayout xmlns:android="http://schemas.android.com/apk/r ...
- 设置程序启动时加载的storyboard
这个设置表明:程序启动时会加载Main.storyboard
- HOOK API(二) —— HOOK自己程序的 MessageBox
转载来源:https://www.cnblogs.com/hookjc/ 0x00 前言 以下将给出一个简单的例子,作为HOOK API的入门.这里是HOOK 自己程序的MessageBox,即将自己 ...
- nodejs process uncaughtException
用过Node一段时间之后,发现那些在事件主循环里碰到的异常会导致Node进程退出.在许多应用场景下,特别是对那些希望永不当机的服务器程序来说,这都是不接受的.uncaughtException事件会提 ...
- 需求: 使用LinkedList存储一副扑克牌,然后实现洗牌功能。
import java.util.LinkedList; import java.util.Random; /* 需求: 使用LinkedList存储一副扑克牌,然后实现洗牌功能. */ //扑克类 ...
- ELK、ELFK企业级日志分析系统
ELK.ELFK企业级日志分析系统 目录 ELK.ELFK企业级日志分析系统 一.ELK日志分析系统 1. ELK简介 1.2 ElasticSearch 1.3 Logstash 1.4 Kiban ...
- 有手就行5——jenkins项目构建类型(pipeline流水线项目构建推荐)
有手就行5--jenkins项目构建类型(pipeline流水线项目构建推荐) Pipeline简介 1) 概念 Pipeline,简单来说,就是一套运行在 Jenkins 上的工作流框架,将原来独立 ...
- 线性结构和非线性结构、稀疏数组、队列、链表(LinkedList)
一.线性结构和非线性结构 线性结构: 1)线性绪构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系 2)线性结构有两种不同的存储结构,即顺序存储结构和链式存储结构.顺序存储的线性表称为顺 ...
- HTML笔记整理--上节
一.认识WEB 「网页」主要是由文字.图像和超链接等元素构成,当然除了这些元素,网页中还可以包括音频.视频以及Flash等. 「浏览器」是网页显示.运行的平台. 「浏览器内核」(排版引擎.解释引擎.渲 ...