、、、、、、、、、、、、、、、、、、、、、、、登录界面


<!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 登录+中间件拦截+红柚小说网小说采集+图片本地化的更多相关文章

  1. 后盾网lavarel视频项目---lavarel中间件(使用中间件拦截没登录的用户)

    后盾网lavarel视频项目---lavarel中间件(使用中间件拦截没登录的用户) 一.总结 一句话总结: 1.中间件中验证用户是否登录:if(!Auth::guard('admin')->c ...

  2. Django中间件拦截未登录url

    1.利用装饰器在视图中拦截未登录的url @login_required(login_url='/user/login/') def homepage(request): pass 这种方法适合于程序 ...

  3. Laravel 登录后跳转回登录前浏览的页面

    一.经过 Auth 中间件检查后跳转至登录页面 也就是没有通过 auth 中间件的认证检查,被 auth 中间件拦截后跳转至登录页面.这种情况下,Laravel 默认会在用户登录成功后自动跳转回登录前 ...

  4. Python的scrapy之爬取6毛小说网的圣墟

    闲来无事想看个小说,打算下载到电脑上看,找了半天,没找到可以下载的网站,于是就想自己爬取一下小说内容并保存到本地 圣墟 第一章 沙漠中的彼岸花 - 辰东 - 6毛小说网  http://www.6ma ...

  5. 基于Springmvc的登录权限拦截器

    1.什么是拦截器 拦截器是指通过统一拦截从浏览器发往服务端的请求来完成功能的增强. 使用场景:解决请求的共性问题(如:乱码问题,权限验证问题等) 2.拦截器的基本工作原理 springmvc可以通过配 ...

  6. MVC - 单点登录中间件

    本章将要和大家分享的是一个单点登录中间件,中间件听起来高深其实这里只是吧单点登录要用到的逻辑和处理流程封装成了几个方法而已,默认支持采用redis服务保存session的方式,也可以使用参数Func& ...

  7. 使用scrapy爬虫,爬取17k小说网的案例-方法一

    无意间看到17小说网里面有一些小说小故事,于是决定用爬虫爬取下来自己看着玩,下图这个页面就是要爬取的来源. a 这个页面一共有125个标题,每个标题里面对应一个内容,如下图所示 下面直接看最核心spi ...

  8. SpringBoot整合Mybatis完整详细版二:注册、登录、拦截器配置

    接着上个章节来,上章节搭建好框架,并且测试也在页面取到数据.接下来实现web端,实现前后端交互,在前台进行注册登录以及后端拦截器配置.实现简单的未登录拦截跳转到登录页面 上一节传送门:SpringBo ...

  9. SpringBoot日记——登录与拦截器篇

    之前的文章我们把登录页写了出来,但是想要让登录现实他的基本功能,要如何做呢?本篇文章就来帮你实现第一步,让登录页对账号密码做校验,并且完成登录跳转. LoginController 1. 要实现登录, ...

随机推荐

  1. Nacos极简教程

    简介 Nacos是服务发现与注册,服务配置中心. Nacos 具有如下特性: 服务发现和服务健康监测:支持基于DNS和基于RPC的服务发现,支持对服务的实时的健康检查,阻止向不健康的主机或服务实例发送 ...

  2. 学习jsp篇:jsp简单实例之二登录

    编程环境:IDEA,Tomcat,JavaEE 一.实例二登录 1.在自己建的工程下的web目录下建一个文件夹为login,在login中编写登录代码(其实就是和实例一同一个项目) 2.先建登录页面j ...

  3. High ASCII字符从bat文件到dos控制台的转化问题

    背景是这样的,由于项目需要,需要用silent install的方式安装一些程序,而安装参数中有一些High ASCII字符,如ùé.通过代码,使用默认编码(ANSI,说明下,我用的是法语的系统)创建 ...

  4. 导航控制器跳转时隐藏底部tabbar

    - (void)setting { // 跳转到设置界面 XMGSettingViewController *settingVc = [[XMGSettingViewController alloc] ...

  5. IE,FF等浏览器兼容性问题

    _1:改变选中时候的背景色处理: ::selection { color:#fff; background-color: #5CB85C ;} ::-moz-selection { color:#ff ...

  6. gpg 使用入门

    1. 生成秘钥 gpg --full-generate-key 等价于 gpg --full-gen-key Real name: yellowconvict为该秘钥的名字,也称为 USER-ID 在 ...

  7. Solution -「多校联训」假人

    \(\mathcal{Description}\)   Link.   一种物品有 长度 和 权值 两种属性,现给定 \(n\) 组物品,第 \(i\) 组有 \(k_i\) 个,分别为 \((1,a ...

  8. Office RTF远程模板注入

    远程模板插入   ProofPoin最近写了一篇文章,报告中提到近年来RTF模板注入进行office钓鱼攻击的数量增加.之前还没怎么了解过RTF模板注入的,现在和小编一起去看看吧(笑hhh).   相 ...

  9. python 2048游戏控制器

    2048游戏控制器 1 evaluate 要用程序来处理就得对现实的问题进行量化,用数字来表示.在2048游戏中,我们的输入是一个棋局,让我们输出一个移动方向,这样我们需要对棋局进行量化,即我们要评估 ...

  10. 天啦,从Mongo到ClickHouse我到底经历了什么?

    前言: 在实现前端监控系统的最初,使用了 Mongo 作为日志数据存储库.文档型存储,在日志字段扩展和收缩上都能非常方便.天生的 JSON 格式和 NodeJs 配合也非常贴合.就这样度过了几个月的蜜 ...