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


<!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. AT [ABC176F] Brave CHAIN

    首先可以发现这样一个事实:在每次操作当中,都有三张牌是已经固定的,只有两张牌是不确定的,于是我们可以发下每一次操作的状态可以简单的使用这两张牌来描述,于是可以考虑令 \(dp_{i, j, k}\) ...

  2. mysql获取表中的字段名

    转载请注明来源:https://www.cnblogs.com/hookjc/ SELECT COLUMN_NAME FROM 'information_schema'.'COLUMNS' where ...

  3. 类扩展(Class Extension)

    类扩展(Class Extension) 也有人称为匿名分类 - 作用     - 能为某个类增加额外的属性.成员变量.方法声明     - 一般将类扩展写到.m文件中     - 一般将一些私有的属 ...

  4. Kubernetes实战之部署ELK Stack收集平台日志

    主要内容 1 ELK概念 2 K8S需要收集哪些日志 3 ELK Stack日志方案 4 容器中的日志怎么收集 5 K8S平台中应用日志收集 准备环境 一套正常运行的k8s集群,kubeadm安装部署 ...

  5. Content-Type: multipart/form-data;文件上传利用

    当我们找到一个文件上传接口时,发现他的MIME类型检测为Content-Type: multipart/form-data;时,我们就可以尝试下面几种方法来绕过限制. ---------------- ...

  6. go基础——数值传递与值传递

    package main import "fmt" /* 1.值类型:存储的是数值本身,数据传递给其他变量时传递的是数据的副本. int,float,string,bool,arr ...

  7. Scala中实现break与continue

    Scala是函数式编程语言,因此没有直接的break与continue关键字,要实现break与continue效果,需要绕一下. 需要导入包: import util.control.Breaks. ...

  8. sublime中运行python时编码格式问题

      方案一在程序文件中以下三句 import sys reload(sys) sys.setdefaultencoding('utf8') 方案二在方案一不行的情况下,去除python的问题,subl ...

  9. Spring Security Auth/Acl 实践指南

    目录 导语 Web Api Authentication/Authorization 示例接口 添加 Maven 依赖 实现接口 访问接口 认证/鉴权 配置认证/鉴权 添加 Maven 依赖 创建数据 ...

  10. java中的代码块(初始化块)

    介绍 代码块又叫初始化块,属于类中的成员,类似于方法,将逻辑语句封装在方法体中,通过{ } 包围起来,但和方法不同,没有方法名,没有返回值,没有参数,只有方法体,而且不通过对象或类显示调用,而是加载类 ...