<head> <meta charset="utf-8"> <title><?php echo e($seoInfo['title']); ?></title> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="keywords" content="<?php echo e($seoInfo['keywords']); ?>"> <meta name="description" content="<?php echo e($seoInfo['description']); ?>"> <link rel="stylesheet" href="/static/home/layui/css/layui.css"> <link rel="stylesheet" href="/static/home/css/global.css"> </head>
"Undefined variable: seoInfo (View: /www/wwwroot/www.h5tpl.com/resources/views/home/components/header.blade.php) (View: /www/wwwroot/www.h5tpl.com/resources/views/home/components/header.blade.php)"
<head> <meta charset="utf-8"> <title><?php echo e($seoInfo['title']); ?></title> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="keywords" content="<?php echo e($seoInfo['keywords']); ?>"> <meta name="description" content="<?php echo e($seoInfo['description']); ?>"> <link rel="stylesheet" href="/static/home/layui/css/layui.css"> <link rel="stylesheet" href="/static/home/css/global.css"> </head>
"Undefined variable: seoInfo (View: /www/wwwroot/www.h5tpl.com/resources/views/home/components/header.blade.php)"
<head> <meta charset="utf-8"> <title><?php echo e($seoInfo['title']); ?></title> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="keywords" content="<?php echo e($seoInfo['keywords']); ?>"> <meta name="description" content="<?php echo e($seoInfo['description']); ?>"> <link rel="stylesheet" href="/static/home/layui/css/layui.css"> <link rel="stylesheet" href="/static/home/css/global.css"> </head>
"Undefined variable: seoInfo"
<head> <meta charset="utf-8"> <title><?php echo e($seoInfo['title']); ?></title> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"> <meta name="keywords" content="<?php echo e($seoInfo['keywords']); ?>"> <meta name="description" content="<?php echo e($seoInfo['description']); ?>"> <link rel="stylesheet" href="/static/home/layui/css/layui.css"> <link rel="stylesheet" href="/static/home/css/global.css"> </head>
8
"Undefined variable: seoInfo"
"/www/wwwroot/www.h5tpl.com/storage/framework/views/8b8f0b8cdbd085e47195e1740e2bddbaf7a47aa2.php"
3
array:8 [ "__path" => "/www/wwwroot/www.h5tpl.com/storage/framework/views/8b8f0b8cdbd085e47195e1740e2bddbaf7a47aa2.php" "__data" => array:6 [ "__env" => Factory {#148} "app" => Application {#2} "UeditorLangFile" => "/laravel-u-editor/lang/zh-cn/zh-cn.js" "errors" => ViewErrorBag {#434} "obLevel" => 1 "info" => array:14 [ "id" => 214 "category_id" => 3 "name" => "PHP与MySQL动态网站开发(第4版) ((美)Larry Ullman) pdf扫描版" "imgurl" => "5bb509377add49db99e4b06cc00f9925.png" "baiduurl" => "https://pan.baidu.com/s/1pL84dkv" "baidupwd" => "32xg" "description" => """ 《PHP与MySQL动态网站开发(第4版)》采用基于任务的方法来讲授PHP和MySQL,使用大量图片指导读者深入学习语言,并向读者展示了如何构造Web站点。用简洁、直观的步骤和讲解提供了学习任务和概念的最快方式。通过《PHP与MySQL动态网站开发(第4版)》,读者可以快速、高效地学习PHP和MySQL,并可以立刻成为一位构建Web站点的高手!\n 《PHP与MySQL动态网站开发(第4版)》适用于Web应用开发人员,适合初、中层次读者。 """ "content" => "<p><strong><span style="font-size: 12px; font-family: 宋体, SimSun;">PHP与MySQL动态网站开发(第4版) ((美)Larry Ullman)书籍目录:</span></strong></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第1章 PHP概述 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.1 基本语法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2 发送数据到Web浏览器 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.3 编写注释 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4 什么是变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.5 介绍字符串 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.6 连接字符串 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.7 数字介绍 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.8 常量介绍 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.9 单引号与双引号 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.10 基本的调试步骤 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.11 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.11.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.11.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第2章 PHP编程 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1 创建HTML表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2 处理HTML表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.3 条件语句和运算符 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.4 验证表单数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5 介绍数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.1 创建数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.2 访问数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.3 多维数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.4 数组排序 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.6 for和while循环 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第3章 创建动态Web站点 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1 包含多个文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.2 再论处理HTML表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3 建立黏性表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4 创建自己的函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4.1 创建带参数的函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4.2 设置默认的参数值 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4.3 从函数返回值 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第4章 MySQL简介 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1 命名数据库元素 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.2 选择列类型 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.3 选择其他的列属性 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4 访问MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.1 使用MySQL客户端 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.2 使用phpMyAdmin </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第5章 SQL简介 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.1 创建数据库和表 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2 插入记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3 选择数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.4 使用条件语句 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.5 使用LIKE和NOT LIKE </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.6 排序查询结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.7 限制查询结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.8 更新数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.9 删除数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10 使用函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.1 文本函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.2 数字函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.3 日期和时间函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.4 格式化日期和时间 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.11 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.11.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.11.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第6章 数据库设计 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1 规范化 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.1 键 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.2 关系 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.3 第一范式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.4 第二范式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.5 第三范式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.6 审查设计 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.2 创建索引 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.3 使用不同的表类型 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.4 语言和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.5 时区和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.6 外键约束 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第7章 高级SQL和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1 执行联结 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1.1 内联结 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1.2 外联结 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1.3 联结三个或更多表 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.2 分组选定的结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.3 高级选择 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4 执行FULLTEXT查找 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4.1 创建FULLTEXT索引 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4.2 执行基本的FULLTEXT查找 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4.3 执行布尔型FULLTEXT查找 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.5 查询优化 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.6 执行事务 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.7 数据库加密 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第8章 错误处理和调试 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1 错误类型与基本调试方法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1.1 基本调试步骤 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1.2 调试HTML </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.2 显示PHP错误 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.3 调整PHP中的错误报告 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.4 创建自定义的错误处理程序 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.5 PHP调试技术 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6 SQL和MySQL调试技术 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6.1 调试SQL问题 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6.2 调试访问问题 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第9章 使用PHP和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.1 修改模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.2 连接到MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.3 执行简单的查询 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.4 检索查询结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.5 确保SQL安全 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.6 统计返回的记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.7 利用PHP更新记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第10章 常用编程技术 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.1 给脚本发送值 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.2 使用隐藏的表单输入框 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.3 编辑现有的记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.4 给查询结果标页码 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.5 建立可排序的显示结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.6 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.6.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.6.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第11章 Web应用程序开发 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.1 发送电子邮件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2 处理文件上传 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2.1 允许文件上传 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2.2 利用PHP上传文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3 PHP和JavaScript </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3.1 创建JavaScript文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3.2 创建PHP脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.4 理解HTTP头部 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.5 日期和时间函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.6 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.6.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.6.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第12章 cookie和会话 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.1 建立登录页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.2 创建登录函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3 使用cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.1 设置cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.2 访问cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.3 设置cookie参数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.4 删除cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4 使用会话 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4.1 设置会话变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4.2 访问会话变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4.3 删除会话变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.5 提高会话安全性 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.6 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.6.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.6.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第13章 安全性方法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.1 阻止垃圾邮件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.2 通过类型验证数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.3 按类型验证文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.4 阻止XSS攻击 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.5 使用过滤器扩展 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.6 预防SQL注入攻击 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第14章 Perl兼容的正则表达式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.1 创建测试脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.2 定义简单的模式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.3 使用量词 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.4 使用字符类别 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.5 查找所有匹配 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.6 使用修饰符 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.7 匹配和替换模式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第15章 jQuery简介 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.1 jQuery是什么 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.2 包含jQuery </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.3 使用jQuery </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.4 选择页面元素 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.5 事件处理 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.6 DOM操作 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7 使用Ajax </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.1 创建表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.2 创建服务器端脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.3 处理Ajax请求 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.4 创建JavaScript </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第16章 面向对象编程入门 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1 基础知识和语法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1.1 面向对象的基础 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1.2 PHP中的OOP语法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2 使用MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.1 创建连接 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.2 执行简单的查询 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.3 获取结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.4 预处理语句 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.3 DateTime类 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.4 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.4.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.4.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第17章 示例——论坛 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.1 建立数据库 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.2 编写模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.3 创建索引页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.4 创建论坛页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.5 创建论点页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.6 发布消息 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.6.1 创建表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.6.2 处理表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第18章 示例——用户注册 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.1 创建模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2 编写配置脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2.1 建立配置文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2.2 建立数据库脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.3 创建主页 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.4 注册 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.5 激活账户 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.6 登录和注销 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.7 密码管理 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.7.1 重置密码 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.7.2 更改密码 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第19章 示例——电子商务 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.1 创建数据库 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2 管理端 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2.1 添加艺术家 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2.2 添加印刷品 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.3 创建公共模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.4 产品目录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.5 购物车 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.5.1 添加项目 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.5.2 查看购物车 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.6 记录订单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.7.2 实践</span></p><p><br/></p>" "frequency" => 1 "click" => 379 "dclick" => 49 "created_at" => "2019-07-30 16:38:11" "updated_at" => "2024-03-28 22:29:45" "category_name" => "php" ] ] "obLevel" => 3 "__env" => Factory {#148} "app" => Application {#2} "UeditorLangFile" => "/laravel-u-editor/lang/zh-cn/zh-cn.js" "errors" => ViewErrorBag {#434} "info" => array:14 [ "id" => 214 "category_id" => 3 "name" => "PHP与MySQL动态网站开发(第4版) ((美)Larry Ullman) pdf扫描版" "imgurl" => "5bb509377add49db99e4b06cc00f9925.png" "baiduurl" => "https://pan.baidu.com/s/1pL84dkv" "baidupwd" => "32xg" "description" => """ 《PHP与MySQL动态网站开发(第4版)》采用基于任务的方法来讲授PHP和MySQL,使用大量图片指导读者深入学习语言,并向读者展示了如何构造Web站点。用简洁、直观的步骤和讲解提供了学习任务和概念的最快方式。通过《PHP与MySQL动态网站开发(第4版)》,读者可以快速、高效地学习PHP和MySQL,并可以立刻成为一位构建Web站点的高手!\n 《PHP与MySQL动态网站开发(第4版)》适用于Web应用开发人员,适合初、中层次读者。 """ "content" => "<p><strong><span style="font-size: 12px; font-family: 宋体, SimSun;">PHP与MySQL动态网站开发(第4版) ((美)Larry Ullman)书籍目录:</span></strong></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第1章 PHP概述 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.1 基本语法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2 发送数据到Web浏览器 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.3 编写注释 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4 什么是变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.5 介绍字符串 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.6 连接字符串 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.7 数字介绍 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.8 常量介绍 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.9 单引号与双引号 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.10 基本的调试步骤 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.11 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.11.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.11.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第2章 PHP编程 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1 创建HTML表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2 处理HTML表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.3 条件语句和运算符 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.4 验证表单数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5 介绍数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.1 创建数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.2 访问数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.3 多维数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.4 数组排序 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.6 for和while循环 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第3章 创建动态Web站点 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1 包含多个文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.2 再论处理HTML表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3 建立黏性表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4 创建自己的函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4.1 创建带参数的函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4.2 设置默认的参数值 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4.3 从函数返回值 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第4章 MySQL简介 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1 命名数据库元素 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.2 选择列类型 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.3 选择其他的列属性 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4 访问MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.1 使用MySQL客户端 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.2 使用phpMyAdmin </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第5章 SQL简介 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.1 创建数据库和表 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2 插入记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3 选择数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.4 使用条件语句 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.5 使用LIKE和NOT LIKE </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.6 排序查询结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.7 限制查询结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.8 更新数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.9 删除数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10 使用函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.1 文本函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.2 数字函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.3 日期和时间函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.4 格式化日期和时间 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.11 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.11.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.11.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第6章 数据库设计 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1 规范化 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.1 键 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.2 关系 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.3 第一范式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.4 第二范式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.5 第三范式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.6 审查设计 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.2 创建索引 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.3 使用不同的表类型 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.4 语言和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.5 时区和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.6 外键约束 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第7章 高级SQL和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1 执行联结 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1.1 内联结 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1.2 外联结 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1.3 联结三个或更多表 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.2 分组选定的结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.3 高级选择 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4 执行FULLTEXT查找 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4.1 创建FULLTEXT索引 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4.2 执行基本的FULLTEXT查找 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4.3 执行布尔型FULLTEXT查找 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.5 查询优化 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.6 执行事务 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.7 数据库加密 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第8章 错误处理和调试 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1 错误类型与基本调试方法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1.1 基本调试步骤 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1.2 调试HTML </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.2 显示PHP错误 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.3 调整PHP中的错误报告 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.4 创建自定义的错误处理程序 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.5 PHP调试技术 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6 SQL和MySQL调试技术 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6.1 调试SQL问题 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6.2 调试访问问题 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第9章 使用PHP和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.1 修改模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.2 连接到MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.3 执行简单的查询 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.4 检索查询结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.5 确保SQL安全 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.6 统计返回的记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.7 利用PHP更新记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第10章 常用编程技术 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.1 给脚本发送值 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.2 使用隐藏的表单输入框 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.3 编辑现有的记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.4 给查询结果标页码 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.5 建立可排序的显示结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.6 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.6.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.6.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第11章 Web应用程序开发 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.1 发送电子邮件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2 处理文件上传 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2.1 允许文件上传 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2.2 利用PHP上传文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3 PHP和JavaScript </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3.1 创建JavaScript文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3.2 创建PHP脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.4 理解HTTP头部 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.5 日期和时间函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.6 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.6.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.6.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第12章 cookie和会话 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.1 建立登录页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.2 创建登录函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3 使用cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.1 设置cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.2 访问cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.3 设置cookie参数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.4 删除cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4 使用会话 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4.1 设置会话变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4.2 访问会话变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4.3 删除会话变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.5 提高会话安全性 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.6 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.6.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.6.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第13章 安全性方法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.1 阻止垃圾邮件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.2 通过类型验证数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.3 按类型验证文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.4 阻止XSS攻击 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.5 使用过滤器扩展 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.6 预防SQL注入攻击 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第14章 Perl兼容的正则表达式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.1 创建测试脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.2 定义简单的模式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.3 使用量词 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.4 使用字符类别 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.5 查找所有匹配 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.6 使用修饰符 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.7 匹配和替换模式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第15章 jQuery简介 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.1 jQuery是什么 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.2 包含jQuery </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.3 使用jQuery </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.4 选择页面元素 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.5 事件处理 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.6 DOM操作 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7 使用Ajax </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.1 创建表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.2 创建服务器端脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.3 处理Ajax请求 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.4 创建JavaScript </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第16章 面向对象编程入门 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1 基础知识和语法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1.1 面向对象的基础 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1.2 PHP中的OOP语法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2 使用MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.1 创建连接 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.2 执行简单的查询 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.3 获取结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.4 预处理语句 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.3 DateTime类 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.4 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.4.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.4.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第17章 示例——论坛 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.1 建立数据库 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.2 编写模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.3 创建索引页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.4 创建论坛页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.5 创建论点页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.6 发布消息 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.6.1 创建表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.6.2 处理表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第18章 示例——用户注册 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.1 创建模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2 编写配置脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2.1 建立配置文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2.2 建立数据库脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.3 创建主页 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.4 注册 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.5 激活账户 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.6 登录和注销 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.7 密码管理 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.7.1 重置密码 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.7.2 更改密码 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第19章 示例——电子商务 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.1 创建数据库 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2 管理端 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2.1 添加艺术家 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2.2 添加印刷品 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.3 创建公共模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.4 产品目录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.5 购物车 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.5.1 添加项目 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.5.2 查看购物车 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.6 记录订单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.7.2 实践</span></p><p><br/></p>" "frequency" => 1 "click" => 379 "dclick" => 49 "created_at" => "2019-07-30 16:38:11" "updated_at" => "2024-03-28 22:29:45" "category_name" => "php" ] ]
/** * Get the evaluated contents of the view at the given path. * * @param string $__path * @param array $__data * @return string */ protected function evaluatePath($__path, $__data) { $obLevel = ob_get_level(); ob_start(); extract($__data, EXTR_SKIP); // We'll evaluate the contents of the view inside a try/catch block so we can // flush out any stray output that might get out before an error occurs or // an exception is thrown. This prevents any partial views from leaking. try { include $__path; } catch (Exception $e) { $this->handleViewException($e, $obLevel); } catch (Throwable $e) { $this->handleViewException(new FatalThrowableError($e), $obLevel); } return ltrim(ob_get_clean()); } /** * Handle a view exception. * * @param \Exception $e * @param int $obLevel * @return void * * @throws \Exception */ protected function handleViewException(Exception $e, $obLevel) {
"/www/wwwroot/www.h5tpl.com/storage/framework/views/8b8f0b8cdbd085e47195e1740e2bddbaf7a47aa2.php"
* @param array $data * @return string */ public function get($path, array $data = []) { $this->lastCompiled[] = $path; // If this given view has expired, which means it has simply been edited since // it was last compiled, we will re-compile the views so we can evaluate a // fresh copy of the view. We'll pass the compiler the path of the view. if ($this->compiler->isExpired($path)) { $this->compiler->compile($path); } $compiled = $this->compiler->getCompiledPath($path); // Once we have the path to the compiled file, we will evaluate the paths with // typical PHP just like any other templates. We also keep a stack of views // which have been rendered for right exception messages to be generated. $results = $this->evaluatePath($compiled, $data); array_pop($this->lastCompiled); return $results; } /** * Handle a view exception. * * @param \Exception $e * @param int $obLevel * @return void * * @throws \Exception */ protected function handleViewException(Exception $e, $obLevel) { $e = new ErrorException($this->getMessage($e), 0, 1, $e->getFile(), $e->getLine(), $e); parent::handleViewException($e, $obLevel);
"/www/wwwroot/www.h5tpl.com/storage/framework/views/8b8f0b8cdbd085e47195e1740e2bddbaf7a47aa2.php"
array:6 [ "__env" => Factory {#148} "app" => Application {#2} "UeditorLangFile" => "/laravel-u-editor/lang/zh-cn/zh-cn.js" "errors" => ViewErrorBag {#434} "obLevel" => 1 "info" => array:14 [ "id" => 214 "category_id" => 3 "name" => "PHP与MySQL动态网站开发(第4版) ((美)Larry Ullman) pdf扫描版" "imgurl" => "5bb509377add49db99e4b06cc00f9925.png" "baiduurl" => "https://pan.baidu.com/s/1pL84dkv" "baidupwd" => "32xg" "description" => """ 《PHP与MySQL动态网站开发(第4版)》采用基于任务的方法来讲授PHP和MySQL,使用大量图片指导读者深入学习语言,并向读者展示了如何构造Web站点。用简洁、直观的步骤和讲解提供了学习任务和概念的最快方式。通过《PHP与MySQL动态网站开发(第4版)》,读者可以快速、高效地学习PHP和MySQL,并可以立刻成为一位构建Web站点的高手!\n 《PHP与MySQL动态网站开发(第4版)》适用于Web应用开发人员,适合初、中层次读者。 """ "content" => "<p><strong><span style="font-size: 12px; font-family: 宋体, SimSun;">PHP与MySQL动态网站开发(第4版) ((美)Larry Ullman)书籍目录:</span></strong></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第1章 PHP概述 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.1 基本语法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2 发送数据到Web浏览器 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.3 编写注释 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4 什么是变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.5 介绍字符串 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.6 连接字符串 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.7 数字介绍 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.8 常量介绍 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.9 单引号与双引号 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.10 基本的调试步骤 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.11 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.11.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.11.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第2章 PHP编程 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1 创建HTML表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2 处理HTML表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.3 条件语句和运算符 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.4 验证表单数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5 介绍数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.1 创建数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.2 访问数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.3 多维数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.4 数组排序 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.6 for和while循环 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第3章 创建动态Web站点 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1 包含多个文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.2 再论处理HTML表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3 建立黏性表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4 创建自己的函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4.1 创建带参数的函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4.2 设置默认的参数值 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4.3 从函数返回值 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第4章 MySQL简介 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1 命名数据库元素 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.2 选择列类型 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.3 选择其他的列属性 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4 访问MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.1 使用MySQL客户端 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.2 使用phpMyAdmin </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第5章 SQL简介 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.1 创建数据库和表 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2 插入记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3 选择数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.4 使用条件语句 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.5 使用LIKE和NOT LIKE </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.6 排序查询结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.7 限制查询结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.8 更新数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.9 删除数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10 使用函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.1 文本函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.2 数字函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.3 日期和时间函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.4 格式化日期和时间 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.11 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.11.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.11.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第6章 数据库设计 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1 规范化 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.1 键 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.2 关系 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.3 第一范式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.4 第二范式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.5 第三范式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.6 审查设计 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.2 创建索引 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.3 使用不同的表类型 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.4 语言和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.5 时区和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.6 外键约束 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第7章 高级SQL和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1 执行联结 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1.1 内联结 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1.2 外联结 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1.3 联结三个或更多表 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.2 分组选定的结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.3 高级选择 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4 执行FULLTEXT查找 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4.1 创建FULLTEXT索引 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4.2 执行基本的FULLTEXT查找 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4.3 执行布尔型FULLTEXT查找 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.5 查询优化 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.6 执行事务 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.7 数据库加密 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第8章 错误处理和调试 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1 错误类型与基本调试方法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1.1 基本调试步骤 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1.2 调试HTML </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.2 显示PHP错误 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.3 调整PHP中的错误报告 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.4 创建自定义的错误处理程序 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.5 PHP调试技术 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6 SQL和MySQL调试技术 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6.1 调试SQL问题 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6.2 调试访问问题 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第9章 使用PHP和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.1 修改模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.2 连接到MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.3 执行简单的查询 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.4 检索查询结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.5 确保SQL安全 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.6 统计返回的记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.7 利用PHP更新记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第10章 常用编程技术 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.1 给脚本发送值 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.2 使用隐藏的表单输入框 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.3 编辑现有的记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.4 给查询结果标页码 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.5 建立可排序的显示结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.6 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.6.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.6.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第11章 Web应用程序开发 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.1 发送电子邮件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2 处理文件上传 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2.1 允许文件上传 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2.2 利用PHP上传文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3 PHP和JavaScript </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3.1 创建JavaScript文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3.2 创建PHP脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.4 理解HTTP头部 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.5 日期和时间函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.6 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.6.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.6.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第12章 cookie和会话 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.1 建立登录页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.2 创建登录函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3 使用cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.1 设置cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.2 访问cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.3 设置cookie参数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.4 删除cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4 使用会话 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4.1 设置会话变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4.2 访问会话变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4.3 删除会话变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.5 提高会话安全性 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.6 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.6.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.6.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第13章 安全性方法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.1 阻止垃圾邮件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.2 通过类型验证数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.3 按类型验证文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.4 阻止XSS攻击 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.5 使用过滤器扩展 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.6 预防SQL注入攻击 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第14章 Perl兼容的正则表达式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.1 创建测试脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.2 定义简单的模式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.3 使用量词 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.4 使用字符类别 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.5 查找所有匹配 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.6 使用修饰符 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.7 匹配和替换模式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第15章 jQuery简介 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.1 jQuery是什么 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.2 包含jQuery </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.3 使用jQuery </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.4 选择页面元素 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.5 事件处理 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.6 DOM操作 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7 使用Ajax </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.1 创建表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.2 创建服务器端脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.3 处理Ajax请求 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.4 创建JavaScript </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第16章 面向对象编程入门 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1 基础知识和语法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1.1 面向对象的基础 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1.2 PHP中的OOP语法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2 使用MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.1 创建连接 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.2 执行简单的查询 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.3 获取结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.4 预处理语句 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.3 DateTime类 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.4 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.4.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.4.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第17章 示例——论坛 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.1 建立数据库 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.2 编写模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.3 创建索引页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.4 创建论坛页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.5 创建论点页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.6 发布消息 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.6.1 创建表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.6.2 处理表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第18章 示例——用户注册 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.1 创建模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2 编写配置脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2.1 建立配置文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2.2 建立数据库脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.3 创建主页 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.4 注册 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.5 激活账户 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.6 登录和注销 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.7 密码管理 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.7.1 重置密码 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.7.2 更改密码 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第19章 示例——电子商务 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.1 创建数据库 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2 管理端 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2.1 添加艺术家 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2.2 添加印刷品 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.3 创建公共模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.4 产品目录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.5 购物车 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.5.1 添加项目 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.5.2 查看购物车 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.6 记录订单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.7.2 实践</span></p><p><br/></p>" "frequency" => 1 "click" => 379 "dclick" => 49 "created_at" => "2019-07-30 16:38:11" "updated_at" => "2024-03-28 22:29:45" "category_name" => "php" ] ]
$this->factory->callComposer($this); $contents = $this->getContents(); // Once we've finished rendering the view, we'll decrement the render count // so that each sections get flushed out next time a view is created and // no old sections are staying around in the memory of an environment. $this->factory->decrementRender(); return $contents; } /** * Get the evaluated contents of the view. * * @return string */ protected function getContents() { return $this->engine->get($this->path, $this->gatherData()); } /** * Get the data bound to the view instance. * * @return array */ protected function gatherData() { $data = array_merge($this->factory->getShared(), $this->data); foreach ($data as $key => $value) { if ($value instanceof Renderable) { $data[$key] = $value->render(); } } return $data; }
"/www/wwwroot/www.h5tpl.com/resources/views/home/components/header.blade.php"
array:6 [ "__env" => Factory {#148} "app" => Application {#2} "UeditorLangFile" => "/laravel-u-editor/lang/zh-cn/zh-cn.js" "errors" => ViewErrorBag {#434} "obLevel" => 1 "info" => array:14 [ "id" => 214 "category_id" => 3 "name" => "PHP与MySQL动态网站开发(第4版) ((美)Larry Ullman) pdf扫描版" "imgurl" => "5bb509377add49db99e4b06cc00f9925.png" "baiduurl" => "https://pan.baidu.com/s/1pL84dkv" "baidupwd" => "32xg" "description" => """ 《PHP与MySQL动态网站开发(第4版)》采用基于任务的方法来讲授PHP和MySQL,使用大量图片指导读者深入学习语言,并向读者展示了如何构造Web站点。用简洁、直观的步骤和讲解提供了学习任务和概念的最快方式。通过《PHP与MySQL动态网站开发(第4版)》,读者可以快速、高效地学习PHP和MySQL,并可以立刻成为一位构建Web站点的高手!\n 《PHP与MySQL动态网站开发(第4版)》适用于Web应用开发人员,适合初、中层次读者。 """ "content" => "<p><strong><span style="font-size: 12px; font-family: 宋体, SimSun;">PHP与MySQL动态网站开发(第4版) ((美)Larry Ullman)书籍目录:</span></strong></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第1章 PHP概述 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.1 基本语法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2 发送数据到Web浏览器 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.3 编写注释 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4 什么是变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.5 介绍字符串 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.6 连接字符串 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.7 数字介绍 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.8 常量介绍 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.9 单引号与双引号 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.10 基本的调试步骤 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.11 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.11.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.11.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第2章 PHP编程 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1 创建HTML表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2 处理HTML表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.3 条件语句和运算符 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.4 验证表单数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5 介绍数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.1 创建数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.2 访问数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.3 多维数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.4 数组排序 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.6 for和while循环 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第3章 创建动态Web站点 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1 包含多个文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.2 再论处理HTML表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3 建立黏性表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4 创建自己的函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4.1 创建带参数的函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4.2 设置默认的参数值 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4.3 从函数返回值 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第4章 MySQL简介 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1 命名数据库元素 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.2 选择列类型 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.3 选择其他的列属性 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4 访问MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.1 使用MySQL客户端 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.2 使用phpMyAdmin </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第5章 SQL简介 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.1 创建数据库和表 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2 插入记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3 选择数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.4 使用条件语句 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.5 使用LIKE和NOT LIKE </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.6 排序查询结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.7 限制查询结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.8 更新数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.9 删除数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10 使用函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.1 文本函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.2 数字函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.3 日期和时间函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.4 格式化日期和时间 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.11 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.11.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.11.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第6章 数据库设计 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1 规范化 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.1 键 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.2 关系 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.3 第一范式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.4 第二范式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.5 第三范式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.6 审查设计 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.2 创建索引 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.3 使用不同的表类型 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.4 语言和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.5 时区和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.6 外键约束 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第7章 高级SQL和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1 执行联结 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1.1 内联结 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1.2 外联结 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1.3 联结三个或更多表 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.2 分组选定的结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.3 高级选择 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4 执行FULLTEXT查找 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4.1 创建FULLTEXT索引 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4.2 执行基本的FULLTEXT查找 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4.3 执行布尔型FULLTEXT查找 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.5 查询优化 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.6 执行事务 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.7 数据库加密 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第8章 错误处理和调试 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1 错误类型与基本调试方法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1.1 基本调试步骤 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1.2 调试HTML </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.2 显示PHP错误 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.3 调整PHP中的错误报告 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.4 创建自定义的错误处理程序 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.5 PHP调试技术 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6 SQL和MySQL调试技术 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6.1 调试SQL问题 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6.2 调试访问问题 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第9章 使用PHP和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.1 修改模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.2 连接到MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.3 执行简单的查询 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.4 检索查询结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.5 确保SQL安全 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.6 统计返回的记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.7 利用PHP更新记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第10章 常用编程技术 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.1 给脚本发送值 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.2 使用隐藏的表单输入框 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.3 编辑现有的记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.4 给查询结果标页码 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.5 建立可排序的显示结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.6 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.6.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.6.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第11章 Web应用程序开发 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.1 发送电子邮件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2 处理文件上传 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2.1 允许文件上传 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2.2 利用PHP上传文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3 PHP和JavaScript </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3.1 创建JavaScript文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3.2 创建PHP脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.4 理解HTTP头部 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.5 日期和时间函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.6 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.6.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.6.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第12章 cookie和会话 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.1 建立登录页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.2 创建登录函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3 使用cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.1 设置cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.2 访问cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.3 设置cookie参数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.4 删除cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4 使用会话 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4.1 设置会话变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4.2 访问会话变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4.3 删除会话变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.5 提高会话安全性 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.6 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.6.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.6.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第13章 安全性方法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.1 阻止垃圾邮件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.2 通过类型验证数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.3 按类型验证文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.4 阻止XSS攻击 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.5 使用过滤器扩展 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.6 预防SQL注入攻击 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第14章 Perl兼容的正则表达式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.1 创建测试脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.2 定义简单的模式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.3 使用量词 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.4 使用字符类别 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.5 查找所有匹配 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.6 使用修饰符 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.7 匹配和替换模式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第15章 jQuery简介 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.1 jQuery是什么 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.2 包含jQuery </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.3 使用jQuery </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.4 选择页面元素 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.5 事件处理 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.6 DOM操作 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7 使用Ajax </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.1 创建表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.2 创建服务器端脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.3 处理Ajax请求 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.4 创建JavaScript </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第16章 面向对象编程入门 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1 基础知识和语法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1.1 面向对象的基础 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1.2 PHP中的OOP语法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2 使用MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.1 创建连接 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.2 执行简单的查询 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.3 获取结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.4 预处理语句 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.3 DateTime类 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.4 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.4.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.4.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第17章 示例——论坛 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.1 建立数据库 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.2 编写模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.3 创建索引页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.4 创建论坛页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.5 创建论点页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.6 发布消息 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.6.1 创建表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.6.2 处理表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第18章 示例——用户注册 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.1 创建模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2 编写配置脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2.1 建立配置文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2.2 建立数据库脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.3 创建主页 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.4 注册 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.5 激活账户 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.6 登录和注销 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.7 密码管理 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.7.1 重置密码 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.7.2 更改密码 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第19章 示例——电子商务 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.1 创建数据库 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2 管理端 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2.1 添加艺术家 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2.2 添加印刷品 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.3 创建公共模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.4 产品目录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.5 购物车 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.5.1 添加项目 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.5.2 查看购物车 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.6 记录订单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.7.2 实践</span></p><p><br/></p>" "frequency" => 1 "click" => 379 "dclick" => 49 "created_at" => "2019-07-30 16:38:11" "updated_at" => "2024-03-28 22:29:45" "category_name" => "php" ] ]
throw $e; } } /** * Get the contents of the view instance. * * @return string */ protected function renderContents() { // We will keep track of the amount of views being rendered so we can flush // the section after the complete rendering operation is done. This will // clear out the sections for any separate views that may be rendered. $this->factory->incrementRender(); $this->factory->callComposer($this); $contents = $this->getContents(); // Once we've finished rendering the view, we'll decrement the render count // so that each sections get flushed out next time a view is created and // no old sections are staying around in the memory of an environment. $this->factory->decrementRender(); return $contents; } /** * Get the evaluated contents of the view. * * @return string */ protected function getContents() { return $this->engine->get($this->path, $this->gatherData()); } /**
$this->view = $view; $this->path = $path; $this->engine = $engine; $this->factory = $factory; $this->data = $data instanceof Arrayable ? $data->toArray() : (array) $data; } /** * Get the string contents of the view. * * @param callable|null $callback * @return string * * @throws \Throwable */ public function render(callable $callback = null) { try { $contents = $this->renderContents(); $response = isset($callback) ? call_user_func($callback, $this, $contents) : null; // Once we have the contents of the view, we will flush the sections if we are // done rendering all views so that there is nothing left hanging over when // another view gets rendered in the future by the application developer. $this->factory->flushStateIfDoneRendering(); return ! is_null($response) ? $response : $contents; } catch (Exception $e) { $this->factory->flushState(); throw $e; } catch (Throwable $e) { $this->factory->flushState(); throw $e; } }
<?php $__env->startSection('header'); ?> <?php echo $__env->make('home/components/header', [], array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> <?php $__env->stopSection(); ?> <?php $__env->startSection('nav'); ?> <?php echo $__env->make('home/components/nav', [], array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> <?php $__env->stopSection(); ?> <?php $__env->startSection('sub-nav'); ?> <?php echo $__env->make('home/components/sub-nav', [], array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> <?php $__env->stopSection(); ?> <?php $__env->startSection('content'); ?> <div class="layui-col-md8 content detail"> <div class="fly-panel detail-box"> <h1><?php echo e($info['name']); ?></h1> <div class="fly-detail-info"> <a href="<?php echo e(path('ebook', ['cid' => $info['category_id']])); ?>"> <span class="layui-badge layui-bg-red"><?php echo e($info['category_name']); ?></span> </a> <span class="fly-list-nums"> <a href="#comment"><i class="iconfont" title="回答"></i> 66</a> <i class="iconfont" title="人气"></i> <?php echo e($info['click']); ?> </span> </div> <div class="detail-about" style="padding-left: 15px;color: #FF7200"><?php echo e($info['description']); ?></div> <pre>#下载地址:<a href="<?php echo e($info['baiduurl']); ?>">百度云下载</a> 密码: <?php echo e($info['baidupwd']); ?></pre> <div class="detail-body photos"> <pre><p><?php echo $info['content']; ?></p></pre> </div> </div> <?php echo $__env->make('home/components/comment', [], array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> </div> <?php $__env->stopSection(); ?> <?php $__env->startSection('hot-right'); ?> <?php echo $__env->make('home/components/hot-right', array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> <?php $__env->stopSection(); ?> <?php $__env->startSection('sign'); ?> <!-- <?php echo $__env->make('home/components/sign', [], array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> --> <?php $__env->stopSection(); ?> <?php $__env->startSection('imglogo-right'); ?> <!-- <?php echo $__env->make('home/components/imglogo-right', [], array_except(get_defined_vars(), array('__data', '__path')))->render(); ?> -->
/** * Get the evaluated contents of the view at the given path. * * @param string $__path * @param array $__data * @return string */ protected function evaluatePath($__path, $__data) { $obLevel = ob_get_level(); ob_start(); extract($__data, EXTR_SKIP); // We'll evaluate the contents of the view inside a try/catch block so we can // flush out any stray output that might get out before an error occurs or // an exception is thrown. This prevents any partial views from leaking. try { include $__path; } catch (Exception $e) { $this->handleViewException($e, $obLevel); } catch (Throwable $e) { $this->handleViewException(new FatalThrowableError($e), $obLevel); } return ltrim(ob_get_clean()); } /** * Handle a view exception. * * @param \Exception $e * @param int $obLevel * @return void * * @throws \Exception */ protected function handleViewException(Exception $e, $obLevel) {
"/www/wwwroot/www.h5tpl.com/storage/framework/views/0a3e26761f636faef770193c4379a3ee2c6dba9d.php"
* @param array $data * @return string */ public function get($path, array $data = []) { $this->lastCompiled[] = $path; // If this given view has expired, which means it has simply been edited since // it was last compiled, we will re-compile the views so we can evaluate a // fresh copy of the view. We'll pass the compiler the path of the view. if ($this->compiler->isExpired($path)) { $this->compiler->compile($path); } $compiled = $this->compiler->getCompiledPath($path); // Once we have the path to the compiled file, we will evaluate the paths with // typical PHP just like any other templates. We also keep a stack of views // which have been rendered for right exception messages to be generated. $results = $this->evaluatePath($compiled, $data); array_pop($this->lastCompiled); return $results; } /** * Handle a view exception. * * @param \Exception $e * @param int $obLevel * @return void * * @throws \Exception */ protected function handleViewException(Exception $e, $obLevel) { $e = new ErrorException($this->getMessage($e), 0, 1, $e->getFile(), $e->getLine(), $e); parent::handleViewException($e, $obLevel);
"/www/wwwroot/www.h5tpl.com/storage/framework/views/0a3e26761f636faef770193c4379a3ee2c6dba9d.php"
array:5 [ "__env" => Factory {#148} "app" => Application {#2} "UeditorLangFile" => "/laravel-u-editor/lang/zh-cn/zh-cn.js" "errors" => ViewErrorBag {#434} "info" => array:14 [ "id" => 214 "category_id" => 3 "name" => "PHP与MySQL动态网站开发(第4版) ((美)Larry Ullman) pdf扫描版" "imgurl" => "5bb509377add49db99e4b06cc00f9925.png" "baiduurl" => "https://pan.baidu.com/s/1pL84dkv" "baidupwd" => "32xg" "description" => """ 《PHP与MySQL动态网站开发(第4版)》采用基于任务的方法来讲授PHP和MySQL,使用大量图片指导读者深入学习语言,并向读者展示了如何构造Web站点。用简洁、直观的步骤和讲解提供了学习任务和概念的最快方式。通过《PHP与MySQL动态网站开发(第4版)》,读者可以快速、高效地学习PHP和MySQL,并可以立刻成为一位构建Web站点的高手!\n 《PHP与MySQL动态网站开发(第4版)》适用于Web应用开发人员,适合初、中层次读者。 """ "content" => "<p><strong><span style="font-size: 12px; font-family: 宋体, SimSun;">PHP与MySQL动态网站开发(第4版) ((美)Larry Ullman)书籍目录:</span></strong></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第1章 PHP概述 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.1 基本语法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2 发送数据到Web浏览器 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.3 编写注释 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4 什么是变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.5 介绍字符串 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.6 连接字符串 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.7 数字介绍 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.8 常量介绍 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.9 单引号与双引号 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.10 基本的调试步骤 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.11 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.11.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.11.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第2章 PHP编程 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1 创建HTML表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2 处理HTML表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.3 条件语句和运算符 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.4 验证表单数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5 介绍数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.1 创建数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.2 访问数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.3 多维数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.4 数组排序 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.6 for和while循环 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第3章 创建动态Web站点 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1 包含多个文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.2 再论处理HTML表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3 建立黏性表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4 创建自己的函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4.1 创建带参数的函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4.2 设置默认的参数值 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4.3 从函数返回值 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第4章 MySQL简介 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1 命名数据库元素 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.2 选择列类型 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.3 选择其他的列属性 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4 访问MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.1 使用MySQL客户端 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.2 使用phpMyAdmin </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第5章 SQL简介 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.1 创建数据库和表 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2 插入记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3 选择数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.4 使用条件语句 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.5 使用LIKE和NOT LIKE </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.6 排序查询结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.7 限制查询结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.8 更新数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.9 删除数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10 使用函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.1 文本函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.2 数字函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.3 日期和时间函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.4 格式化日期和时间 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.11 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.11.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.11.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第6章 数据库设计 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1 规范化 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.1 键 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.2 关系 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.3 第一范式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.4 第二范式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.5 第三范式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.6 审查设计 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.2 创建索引 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.3 使用不同的表类型 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.4 语言和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.5 时区和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.6 外键约束 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第7章 高级SQL和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1 执行联结 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1.1 内联结 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1.2 外联结 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1.3 联结三个或更多表 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.2 分组选定的结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.3 高级选择 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4 执行FULLTEXT查找 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4.1 创建FULLTEXT索引 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4.2 执行基本的FULLTEXT查找 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4.3 执行布尔型FULLTEXT查找 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.5 查询优化 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.6 执行事务 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.7 数据库加密 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第8章 错误处理和调试 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1 错误类型与基本调试方法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1.1 基本调试步骤 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1.2 调试HTML </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.2 显示PHP错误 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.3 调整PHP中的错误报告 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.4 创建自定义的错误处理程序 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.5 PHP调试技术 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6 SQL和MySQL调试技术 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6.1 调试SQL问题 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6.2 调试访问问题 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第9章 使用PHP和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.1 修改模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.2 连接到MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.3 执行简单的查询 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.4 检索查询结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.5 确保SQL安全 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.6 统计返回的记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.7 利用PHP更新记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第10章 常用编程技术 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.1 给脚本发送值 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.2 使用隐藏的表单输入框 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.3 编辑现有的记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.4 给查询结果标页码 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.5 建立可排序的显示结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.6 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.6.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.6.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第11章 Web应用程序开发 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.1 发送电子邮件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2 处理文件上传 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2.1 允许文件上传 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2.2 利用PHP上传文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3 PHP和JavaScript </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3.1 创建JavaScript文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3.2 创建PHP脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.4 理解HTTP头部 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.5 日期和时间函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.6 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.6.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.6.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第12章 cookie和会话 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.1 建立登录页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.2 创建登录函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3 使用cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.1 设置cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.2 访问cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.3 设置cookie参数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.4 删除cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4 使用会话 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4.1 设置会话变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4.2 访问会话变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4.3 删除会话变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.5 提高会话安全性 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.6 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.6.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.6.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第13章 安全性方法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.1 阻止垃圾邮件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.2 通过类型验证数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.3 按类型验证文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.4 阻止XSS攻击 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.5 使用过滤器扩展 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.6 预防SQL注入攻击 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第14章 Perl兼容的正则表达式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.1 创建测试脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.2 定义简单的模式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.3 使用量词 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.4 使用字符类别 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.5 查找所有匹配 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.6 使用修饰符 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.7 匹配和替换模式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第15章 jQuery简介 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.1 jQuery是什么 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.2 包含jQuery </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.3 使用jQuery </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.4 选择页面元素 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.5 事件处理 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.6 DOM操作 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7 使用Ajax </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.1 创建表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.2 创建服务器端脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.3 处理Ajax请求 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.4 创建JavaScript </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第16章 面向对象编程入门 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1 基础知识和语法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1.1 面向对象的基础 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1.2 PHP中的OOP语法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2 使用MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.1 创建连接 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.2 执行简单的查询 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.3 获取结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.4 预处理语句 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.3 DateTime类 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.4 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.4.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.4.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第17章 示例——论坛 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.1 建立数据库 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.2 编写模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.3 创建索引页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.4 创建论坛页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.5 创建论点页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.6 发布消息 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.6.1 创建表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.6.2 处理表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第18章 示例——用户注册 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.1 创建模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2 编写配置脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2.1 建立配置文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2.2 建立数据库脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.3 创建主页 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.4 注册 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.5 激活账户 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.6 登录和注销 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.7 密码管理 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.7.1 重置密码 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.7.2 更改密码 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第19章 示例——电子商务 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.1 创建数据库 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2 管理端 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2.1 添加艺术家 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2.2 添加印刷品 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.3 创建公共模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.4 产品目录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.5 购物车 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.5.1 添加项目 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.5.2 查看购物车 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.6 记录订单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.7.2 实践</span></p><p><br/></p>" "frequency" => 1 "click" => 379 "dclick" => 49 "created_at" => "2019-07-30 16:38:11" "updated_at" => "2024-03-28 22:29:45" "category_name" => "php" ] ]
$this->factory->callComposer($this); $contents = $this->getContents(); // Once we've finished rendering the view, we'll decrement the render count // so that each sections get flushed out next time a view is created and // no old sections are staying around in the memory of an environment. $this->factory->decrementRender(); return $contents; } /** * Get the evaluated contents of the view. * * @return string */ protected function getContents() { return $this->engine->get($this->path, $this->gatherData()); } /** * Get the data bound to the view instance. * * @return array */ protected function gatherData() { $data = array_merge($this->factory->getShared(), $this->data); foreach ($data as $key => $value) { if ($value instanceof Renderable) { $data[$key] = $value->render(); } } return $data; }
"/www/wwwroot/www.h5tpl.com/resources/views/home/ebook/detail.blade.php"
array:5 [ "__env" => Factory {#148} "app" => Application {#2} "UeditorLangFile" => "/laravel-u-editor/lang/zh-cn/zh-cn.js" "errors" => ViewErrorBag {#434} "info" => array:14 [ "id" => 214 "category_id" => 3 "name" => "PHP与MySQL动态网站开发(第4版) ((美)Larry Ullman) pdf扫描版" "imgurl" => "5bb509377add49db99e4b06cc00f9925.png" "baiduurl" => "https://pan.baidu.com/s/1pL84dkv" "baidupwd" => "32xg" "description" => """ 《PHP与MySQL动态网站开发(第4版)》采用基于任务的方法来讲授PHP和MySQL,使用大量图片指导读者深入学习语言,并向读者展示了如何构造Web站点。用简洁、直观的步骤和讲解提供了学习任务和概念的最快方式。通过《PHP与MySQL动态网站开发(第4版)》,读者可以快速、高效地学习PHP和MySQL,并可以立刻成为一位构建Web站点的高手!\n 《PHP与MySQL动态网站开发(第4版)》适用于Web应用开发人员,适合初、中层次读者。 """ "content" => "<p><strong><span style="font-size: 12px; font-family: 宋体, SimSun;">PHP与MySQL动态网站开发(第4版) ((美)Larry Ullman)书籍目录:</span></strong></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第1章 PHP概述 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.1 基本语法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.2 发送数据到Web浏览器 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.3 编写注释 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.4 什么是变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.5 介绍字符串 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.6 连接字符串 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.7 数字介绍 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.8 常量介绍 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.9 单引号与双引号 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.10 基本的调试步骤 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.11 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.11.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">1.11.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第2章 PHP编程 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.1 创建HTML表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.2 处理HTML表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.3 条件语句和运算符 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.4 验证表单数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5 介绍数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.1 创建数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.2 访问数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.3 多维数组 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.5.4 数组排序 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.6 for和while循环 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">2.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第3章 创建动态Web站点 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.1 包含多个文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.2 再论处理HTML表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.3 建立黏性表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4 创建自己的函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4.1 创建带参数的函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4.2 设置默认的参数值 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.4.3 从函数返回值 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">3.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第4章 MySQL简介 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.1 命名数据库元素 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.2 选择列类型 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.3 选择其他的列属性 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4 访问MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.1 使用MySQL客户端 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.4.2 使用phpMyAdmin </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">4.5.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第5章 SQL简介 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.1 创建数据库和表 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.2 插入记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.3 选择数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.4 使用条件语句 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.5 使用LIKE和NOT LIKE </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.6 排序查询结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.7 限制查询结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.8 更新数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.9 删除数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10 使用函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.1 文本函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.2 数字函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.3 日期和时间函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.10.4 格式化日期和时间 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.11 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.11.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">5.11.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第6章 数据库设计 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1 规范化 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.1 键 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.2 关系 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.3 第一范式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.4 第二范式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.5 第三范式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.1.6 审查设计 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.2 创建索引 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.3 使用不同的表类型 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.4 语言和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.5 时区和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.6 外键约束 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">6.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第7章 高级SQL和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1 执行联结 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1.1 内联结 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1.2 外联结 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.1.3 联结三个或更多表 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.2 分组选定的结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.3 高级选择 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4 执行FULLTEXT查找 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4.1 创建FULLTEXT索引 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4.2 执行基本的FULLTEXT查找 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.4.3 执行布尔型FULLTEXT查找 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.5 查询优化 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.6 执行事务 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.7 数据库加密 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">7.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第8章 错误处理和调试 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1 错误类型与基本调试方法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1.1 基本调试步骤 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.1.2 调试HTML </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.2 显示PHP错误 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.3 调整PHP中的错误报告 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.4 创建自定义的错误处理程序 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.5 PHP调试技术 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6 SQL和MySQL调试技术 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6.1 调试SQL问题 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.6.2 调试访问问题 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">8.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第9章 使用PHP和MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.1 修改模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.2 连接到MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.3 执行简单的查询 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.4 检索查询结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.5 确保SQL安全 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.6 统计返回的记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.7 利用PHP更新记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">9.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第10章 常用编程技术 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.1 给脚本发送值 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.2 使用隐藏的表单输入框 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.3 编辑现有的记录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.4 给查询结果标页码 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.5 建立可排序的显示结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.6 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.6.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">10.6.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第11章 Web应用程序开发 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.1 发送电子邮件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2 处理文件上传 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2.1 允许文件上传 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.2.2 利用PHP上传文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3 PHP和JavaScript </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3.1 创建JavaScript文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.3.2 创建PHP脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.4 理解HTTP头部 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.5 日期和时间函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.6 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.6.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">11.6.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第12章 cookie和会话 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.1 建立登录页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.2 创建登录函数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3 使用cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.1 设置cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.2 访问cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.3 设置cookie参数 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.3.4 删除cookie </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4 使用会话 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4.1 设置会话变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4.2 访问会话变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.4.3 删除会话变量 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.5 提高会话安全性 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.6 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.6.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">12.6.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第13章 安全性方法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.1 阻止垃圾邮件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.2 通过类型验证数据 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.3 按类型验证文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.4 阻止XSS攻击 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.5 使用过滤器扩展 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.6 预防SQL注入攻击 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">13.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第14章 Perl兼容的正则表达式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.1 创建测试脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.2 定义简单的模式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.3 使用量词 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.4 使用字符类别 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.5 查找所有匹配 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.6 使用修饰符 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.7 匹配和替换模式 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">14.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第15章 jQuery简介 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.1 jQuery是什么 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.2 包含jQuery </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.3 使用jQuery </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.4 选择页面元素 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.5 事件处理 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.6 DOM操作 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7 使用Ajax </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.1 创建表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.2 创建服务器端脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.3 处理Ajax请求 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.7.4 创建JavaScript </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">15.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第16章 面向对象编程入门 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1 基础知识和语法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1.1 面向对象的基础 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.1.2 PHP中的OOP语法 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2 使用MySQL </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.1 创建连接 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.2 执行简单的查询 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.3 获取结果 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.2.4 预处理语句 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.3 DateTime类 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.4 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.4.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">16.4.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第17章 示例——论坛 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.1 建立数据库 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.2 编写模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.3 创建索引页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.4 创建论坛页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.5 创建论点页面 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.6 发布消息 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.6.1 创建表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.6.2 处理表单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">17.7.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第18章 示例——用户注册 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.1 创建模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2 编写配置脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2.1 建立配置文件 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.2.2 建立数据库脚本 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.3 创建主页 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.4 注册 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.5 激活账户 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.6 登录和注销 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.7 密码管理 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.7.1 重置密码 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.7.2 更改密码 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.8 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.8.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">18.8.2 实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">第19章 示例——电子商务 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.1 创建数据库 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2 管理端 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2.1 添加艺术家 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.2.2 添加印刷品 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.3 创建公共模板 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.4 产品目录 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.5 购物车 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.5.1 添加项目 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.5.2 查看购物车 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.6 记录订单 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.7 回顾和实践 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.7.1 回顾 </span></p><p><span style="font-size: 12px; font-family: 宋体, SimSun;">19.7.2 实践</span></p><p><br/></p>" "frequency" => 1 "click" => 379 "dclick" => 49 "created_at" => "2019-07-30 16:38:11" "updated_at" => "2024-03-28 22:29:45" "category_name" => "php" ] ]
throw $e; } } /** * Get the contents of the view instance. * * @return string */ protected function renderContents() { // We will keep track of the amount of views being rendered so we can flush // the section after the complete rendering operation is done. This will // clear out the sections for any separate views that may be rendered. $this->factory->incrementRender(); $this->factory->callComposer($this); $contents = $this->getContents(); // Once we've finished rendering the view, we'll decrement the render count // so that each sections get flushed out next time a view is created and // no old sections are staying around in the memory of an environment. $this->factory->decrementRender(); return $contents; } /** * Get the evaluated contents of the view. * * @return string */ protected function getContents() { return $this->engine->get($this->path, $this->gatherData()); } /**
$this->view = $view; $this->path = $path; $this->engine = $engine; $this->factory = $factory; $this->data = $data instanceof Arrayable ? $data->toArray() : (array) $data; } /** * Get the string contents of the view. * * @param callable|null $callback * @return string * * @throws \Throwable */ public function render(callable $callback = null) { try { $contents = $this->renderContents(); $response = isset($callback) ? call_user_func($callback, $this, $contents) : null; // Once we have the contents of the view, we will flush the sections if we are // done rendering all views so that there is nothing left hanging over when // another view gets rendered in the future by the application developer. $this->factory->flushStateIfDoneRendering(); return ! is_null($response) ? $response : $contents; } catch (Exception $e) { $this->factory->flushState(); throw $e; } catch (Throwable $e) { $this->factory->flushState(); throw $e; } }
* @return $this */ public function setContent($content) { $this->original = $content; // If the content is "JSONable" we will set the appropriate header and convert // the content to JSON. This is useful when returning something like models // from routes that will be automatically transformed to their JSON form. if ($this->shouldBeJson($content)) { $this->header('Content-Type', 'application/json'); $content = $this->morphToJson($content); } // If this content implements the "Renderable" interface then we will call the // render method on the object so we will avoid any "__toString" exceptions // that might be thrown and have their errors obscured by PHP's handling. elseif ($content instanceof Renderable) { $content = $content->render(); } parent::setContent($content); return $this; } /** * Determine if the given content should be turned into JSON. * * @param mixed $content * @return bool */ protected function shouldBeJson($content) { return $content instanceof Arrayable || $content instanceof Jsonable || $content instanceof ArrayObject || $content instanceof JsonSerializable || is_array($content);
504 => 'Gateway Timeout', 505 => 'HTTP Version Not Supported', 506 => 'Variant Also Negotiates', // RFC2295 507 => 'Insufficient Storage', // RFC4918 508 => 'Loop Detected', // RFC5842 510 => 'Not Extended', // RFC2774 511 => 'Network Authentication Required', // RFC6585 ]; /** * @param mixed $content The response content, see setContent() * @param int $status The response status code * @param array $headers An array of response headers * * @throws \InvalidArgumentException When the HTTP status code is not valid */ public function __construct($content = '', $status = 200, $headers = []) { $this->headers = new ResponseHeaderBag($headers); $this->setContent($content); $this->setStatusCode($status); $this->setProtocolVersion('1.0'); } /** * Factory method for chainability. * * Example: * * return Response::create($body, 200) * ->setSharedMaxAge(300); * * @param mixed $content The response content, see setContent() * @param int $status The response status code * @param array $headers An array of response headers * * @return static */ public static function create($content = '', $status = 200, $headers = []) {
View {#468}
* @param mixed $response * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse */ public static function toResponse($request, $response) { if ($response instanceof Responsable) { $response = $response->toResponse($request); } if ($response instanceof PsrResponseInterface) { $response = (new HttpFoundationFactory)->createResponse($response); } elseif (! $response instanceof SymfonyResponse && ($response instanceof Arrayable || $response instanceof Jsonable || $response instanceof ArrayObject || $response instanceof JsonSerializable || is_array($response))) { $response = new JsonResponse($response); } elseif (! $response instanceof SymfonyResponse) { $response = new Response($response); } if ($response->getStatusCode() === Response::HTTP_NOT_MODIFIED) { $response->setNotModified(); } return $response->prepare($request); } /** * Substitute the route bindings onto the route. * * @param \Illuminate\Routing\Route $route * @return \Illuminate\Routing\Route */ public function substituteBindings($route) { foreach ($route->parameters() as $key => $value) { if (isset($this->binders[$key])) { $route->setParameter($key, $this->performBinding($key, $value, $route));
View {#468}
* Sort the given middleware by priority. * * @param \Illuminate\Support\Collection $middlewares * @return array */ protected function sortMiddleware(Collection $middlewares) { return (new SortedMiddleware($this->middlewarePriority, $middlewares))->all(); } /** * Create a response instance from the given value. * * @param \Symfony\Component\HttpFoundation\Request $request * @param mixed $response * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse */ public function prepareResponse($request, $response) { return static::toResponse($request, $response); } /** * Static version of prepareResponse. * * @param \Symfony\Component\HttpFoundation\Request $request * @param mixed $response * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse */ public static function toResponse($request, $response) { if ($response instanceof Responsable) { $response = $response->toResponse($request); } if ($response instanceof PsrResponseInterface) { $response = (new HttpFoundationFactory)->createResponse($response); } elseif (! $response instanceof SymfonyResponse && ($response instanceof Arrayable || $response instanceof Jsonable ||
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
View {#468}
/** * Run the given route within a Stack "onion" instance. * * @param \Illuminate\Routing\Route $route * @param \Illuminate\Http\Request $request * @return mixed */ protected function runRouteWithinStack(Route $route, Request $request) { $shouldSkipMiddleware = $this->container->bound('middleware.disable') && $this->container->make('middleware.disable') === true; $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route); return (new Pipeline($this->container)) ->send($request) ->through($middleware) ->then(function ($request) use ($route) { return $this->prepareResponse( $request, $route->run() ); }); } /** * Gather the middleware for the given route with resolved class names. * * @param \Illuminate\Routing\Route $route * @return array */ public function gatherRouteMiddleware(Route $route) { $middleware = collect($route->gatherMiddleware())->map(function ($name) { return (array) MiddlewareNameResolver::resolve($name, $this->middleware, $this->middlewareGroups); })->flatten(); return $this->sortMiddleware($middleware); } /**
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
View {#468}
use Symfony\Component\Debug\Exception\FatalThrowableError; /** * This extended pipeline catches any exceptions that occur during each slice. * * The exceptions are converted to HTTP responses for proper middleware handling. */ class Pipeline extends BasePipeline { /** * Get the final piece of the Closure onion. * * @param \Closure $destination * @return \Closure */ protected function prepareDestination(Closure $destination) { return function ($passable) use ($destination) { try { return $destination($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry();
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
class AdminOperationLog { /** * Handle an incoming request. * * @param $request * @param \Closure $next * @return mixed */ public function handle(Request $request, Closure $next) { $userId = Auth::id(); $queryParams = $request->all(); unset($queryParams['_token']); $targetUrl = explode('?', isset($_SERVER['REQUEST_URI'])?$_SERVER['REQUEST_URI']:'')[0]; $ua = $_SERVER['HTTP_USER_AGENT'] ?? ''; $ip = ($request->ip() !== '127.0.0.1') ? $request->ip() : '139.129.50.178'; $this->writeLog($userId, $queryParams, $targetUrl, $ua, $ip); return $next($request); } public function writeLog($userId, $queryParams, $targetUrl, $ua, $ip) { $adminOperationLogModel = new AdminOperationLogModel(); $adminOperationLogModel->user_id = $userId; $adminOperationLogModel->target_url = $targetUrl; $adminOperationLogModel->query_params = json_encode($queryParams); $adminOperationLogModel->ua = $ua; $adminOperationLogModel->ip = $ip; $ipConvertService = new IpConvertService(); $ipData = $ipConvertService->convert($ip); $adminOperationLogModel->province = $ipData['province']; $adminOperationLogModel->opera_type = 1; $adminOperationLogModel->save(); } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#385 : "Illuminate\Routing\Pipeline" : Pipeline {#390 …} : { : {} } : { : Closure {#380 …} } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
*/ public function __construct(Registrar $router) { $this->router = $router; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $this->router->substituteBindings($route = $request->route()); $this->router->substituteImplicitBindings($route); return $next($request); } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#410 : "Illuminate\Routing\Pipeline" : Pipeline {#390 …} : { : {} } : { : Closure {#385 …} : "App\Http\Middleware\AdminOperationLog" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
} /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed * * @throws \Illuminate\Session\TokenMismatchException */ public function handle($request, Closure $next) { if ( $this->isReading($request) || $this->runningUnitTests() || $this->inExceptArray($request) || $this->tokensMatch($request) ) { return $this->addCookieToResponse($request, $next($request)); } throw new TokenMismatchException; } /** * Determine if the HTTP request uses a ‘read’ verb. * * @param \Illuminate\Http\Request $request * @return bool */ protected function isReading($request) { return in_array($request->method(), ['HEAD', 'GET', 'OPTIONS']); } /** * Determine if the application is running unit tests. * * @return bool
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#411 : "Illuminate\Routing\Pipeline" : Pipeline {#390 …} : { : {} } : { : Closure {#410 …} : "Illuminate\Routing\Middleware\SubstituteBindings" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { // If the current session has an "errors" variable bound to it, we will share // its value with all view instances so the views can easily access errors // without having to bind. An empty bag is set when there aren't errors. $this->view->share( 'errors', $request->session()->get('errors') ?: new ViewErrorBag ); // Putting the errors in the view for every view allows the developer to just // assume that some errors are always available, which is convenient since // they don't have to continually run checks for the presence of errors. return $next($request); } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#412 : "Illuminate\Routing\Pipeline" : Pipeline {#390 …} : { : {} } : { : Closure {#411 …} : "App\Http\Middleware\VerifyCsrfToken" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $this->sessionHandled = true; // If a session driver has been configured, we will need to start the session here // so that the data is ready for an application. Note that the Laravel sessions // do not make use of PHP "native" sessions in any way since they are crappy. if ($this->sessionConfigured()) { $request->setLaravelSession( $session = $this->startSession($request) ); $this->collectGarbage($session); } $response = $next($request); // Again, if the session has been configured we will need to close out the session // so that the attributes may be persisted to some storage medium. We will also // add the session identifier cookie to the application response headers now. if ($this->sessionConfigured()) { $this->storeCurrentUrl($request, $session); $this->addCookieToResponse($response, $session); } return $response; } /** * Perform any final actions for the request lifecycle. * * @param \Illuminate\Http\Request $request * @param \Symfony\Component\HttpFoundation\Response $response * @return void */
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#413 : "Illuminate\Routing\Pipeline" : Pipeline {#390 …} : { : {} } : { : Closure {#412 …} : "Illuminate\View\Middleware\ShareErrorsFromSession" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* Create a new CookieQueue instance. * * @param \Illuminate\Contracts\Cookie\QueueingFactory $cookies * @return void */ public function __construct(CookieJar $cookies) { $this->cookies = $cookies; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { $response = $next($request); foreach ($this->cookies->getQueuedCookies() as $cookie) { $response->headers->setCookie($cookie); } return $response; } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#414 : "Illuminate\Routing\Pipeline" : Pipeline {#390 …} : { : {} } : { : Closure {#413 …} : "Illuminate\Session\Middleware\StartSession" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* Disable encryption for the given cookie name(s). * * @param string|array $cookieName * @return void */ public function disableFor($cookieName) { $this->except = array_merge($this->except, (array) $cookieName); } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { return $this->encrypt($next($this->decrypt($request))); } /** * Decrypt the cookies on the request. * * @param \Symfony\Component\HttpFoundation\Request $request * @return \Symfony\Component\HttpFoundation\Request */ protected function decrypt(Request $request) { foreach ($request->cookies as $key => $c) { if ($this->isDisabled($key)) { continue; } try { $request->cookies->set($key, $this->decryptCookie($key, $c)); } catch (DecryptException $e) { $request->cookies->set($key, null); }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#415 : "Illuminate\Routing\Pipeline" : Pipeline {#390 …} : { : {} } : { : Closure {#414 …} : "Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
public function via($method) { $this->method = $method; return $this; } /** * Run the pipeline with a final destination callback. * * @param \Closure $destination * @return mixed */ public function then(Closure $destination) { $pipeline = array_reduce( array_reverse($this->pipes), $this->carry(), $this->prepareDestination($destination) ); return $pipeline($this->passable); } /** * Get the final piece of the Closure onion. * * @param \Closure $destination * @return \Closure */ protected function prepareDestination(Closure $destination) { return function ($passable) use ($destination) { return $destination($passable); }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* * @param \Illuminate\Routing\Route $route * @param \Illuminate\Http\Request $request * @return mixed */ protected function runRouteWithinStack(Route $route, Request $request) { $shouldSkipMiddleware = $this->container->bound('middleware.disable') && $this->container->make('middleware.disable') === true; $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route); return (new Pipeline($this->container)) ->send($request) ->through($middleware) ->then(function ($request) use ($route) { return $this->prepareResponse( $request, $route->run() ); }); } /** * Gather the middleware for the given route with resolved class names. * * @param \Illuminate\Routing\Route $route * @return array */ public function gatherRouteMiddleware(Route $route) { $middleware = collect($route->gatherMiddleware())->map(function ($name) { return (array) MiddlewareNameResolver::resolve($name, $this->middleware, $this->middlewareGroups); })->flatten(); return $this->sortMiddleware($middleware); } /** * Sort the given middleware by priority. *
return $route; } /** * Return the response for the given route. * * @param Route $route * @param Request $request * @return mixed */ protected function runRoute(Request $request, Route $route) { $request->setRouteResolver(function () use ($route) { return $route; }); $this->events->dispatch(new Events\RouteMatched($route, $request)); return $this->prepareResponse($request, $this->runRouteWithinStack($route, $request) ); } /** * Run the given route within a Stack "onion" instance. * * @param \Illuminate\Routing\Route $route * @param \Illuminate\Http\Request $request * @return mixed */ protected function runRouteWithinStack(Route $route, Request $request) { $shouldSkipMiddleware = $this->container->bound('middleware.disable') && $this->container->make('middleware.disable') === true; $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route); return (new Pipeline($this->container)) ->send($request) ->through($middleware)
Route {#232}
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse */ public function dispatch(Request $request) { $this->currentRequest = $request; return $this->dispatchToRoute($request); } /** * Dispatch the request to a route and return the response. * * @param \Illuminate\Http\Request $request * @return mixed */ public function dispatchToRoute(Request $request) { return $this->runRoute($request, $this->findRoute($request)); } /** * Find the route matching a given request. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Routing\Route */ protected function findRoute($request) { $this->current = $route = $this->routes->match($request); $this->container->instance(Route::class, $route); return $route; } /** * Return the response for the given route. *
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Route {#232}
* @return mixed */ public function respondWithRoute($name) { $route = tap($this->routes->getByName($name))->bind($this->currentRequest); return $this->runRoute($this->currentRequest, $route); } /** * Dispatch the request to the application. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse */ public function dispatch(Request $request) { $this->currentRequest = $request; return $this->dispatchToRoute($request); } /** * Dispatch the request to a route and return the response. * * @param \Illuminate\Http\Request $request * @return mixed */ public function dispatchToRoute(Request $request) { return $this->runRoute($request, $this->findRoute($request)); } /** * Find the route matching a given request. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Routing\Route */ protected function findRoute($request)
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* @return void */ public function bootstrap() { if (! $this->app->hasBeenBootstrapped()) { $this->app->bootstrapWith($this->bootstrappers()); } } /** * Get the route dispatcher callback. * * @return \Closure */ protected function dispatchToRouter() { return function ($request) { $this->app->instance('request', $request); return $this->router->dispatch($request); }; } /** * Call the terminate method on any terminable middleware. * * @param \Illuminate\Http\Request $request * @param \Illuminate\Http\Response $response * @return void */ public function terminate($request, $response) { $this->terminateMiddleware($request, $response); $this->app->terminate(); } /** * Call the terminate method on any terminable middleware. *
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
use Symfony\Component\Debug\Exception\FatalThrowableError; /** * This extended pipeline catches any exceptions that occur during each slice. * * The exceptions are converted to HTTP responses for proper middleware handling. */ class Pipeline extends BasePipeline { /** * Get the final piece of the Closure onion. * * @param \Closure $destination * @return \Closure */ protected function prepareDestination(Closure $destination) { return function ($passable) use ($destination) { try { return $destination($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry();
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
{ $this->config = $config; } /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * * @throws \Symfony\Component\HttpKernel\Exception\HttpException * * @return mixed */ public function handle($request, Closure $next) { $this->setTrustedProxyHeaderNames($request); $this->setTrustedProxyIpAddresses($request); return $next($request); } /** * Sets the trusted proxies on the request to the value of trustedproxy.proxies * * @param \Illuminate\Http\Request $request */ protected function setTrustedProxyIpAddresses($request) { $trustedIps = $this->proxies ?: $this->config->get('trustedproxy.proxies'); // We only trust specific IP addresses if (is_array($trustedIps)) { return $this->setTrustedProxyIpAddressesToSpecificIps($request, $trustedIps); } // We trust any IP address that calls us, but not proxies further // up the forwarding chain. // TODO: Determine if this should only trust the first IP address // Currently it trusts the entire chain (array of IPs),
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#213 : "Illuminate\Routing\Pipeline" : Pipeline {#30 …} : { : {} } : { : Closure {#22 …} } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* The additional attributes passed to the middleware. * * @var array */ protected $attributes = []; /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next, ...$attributes) { $this->attributes = $attributes; $this->clean($request); return $next($request); } /** * Clean the request's data. * * @param \Illuminate\Http\Request $request * @return void */ protected function clean($request) { $this->cleanParameterBag($request->query); if ($request->isJson()) { $this->cleanParameterBag($request->json()); } else { $this->cleanParameterBag($request->request); } } /**
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#293 : "Illuminate\Routing\Pipeline" : Pipeline {#30 …} : { : {} } : { : Closure {#213 …} : "App\Http\Middleware\TrustProxies" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
* The additional attributes passed to the middleware. * * @var array */ protected $attributes = []; /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next, ...$attributes) { $this->attributes = $attributes; $this->clean($request); return $next($request); } /** * Clean the request's data. * * @param \Illuminate\Http\Request $request * @return void */ protected function clean($request) { $this->cleanParameterBag($request->query); if ($request->isJson()) { $this->cleanParameterBag($request->json()); } else { $this->cleanParameterBag($request->request); } } /**
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#362 : "Illuminate\Routing\Pipeline" : Pipeline {#30 …} : { : {} } : { : Closure {#293 …} : "Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
class ValidatePostSize { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed * * @throws \Illuminate\Http\Exceptions\PostTooLargeException */ public function handle($request, Closure $next) { $max = $this->getPostMaxSize(); if ($max > 0 && $request->server('CONTENT_LENGTH') > $max) { throw new PostTooLargeException; } return $next($request); } /** * Determine the server 'post_max_size' as bytes. * * @return int */ protected function getPostMaxSize() { if (is_numeric($postMaxSize = ini_get('post_max_size'))) { return (int) $postMaxSize; } $metric = strtoupper(substr($postMaxSize, -1)); $postMaxSize = (int) $postMaxSize; switch ($metric) { case 'K': return $postMaxSize * 1024; case 'M':
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#363 : "Illuminate\Routing\Pipeline" : Pipeline {#30 …} : { : {} } : { : Closure {#362 …} : "App\Http\Middleware\TrimStrings" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
} /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed * * @throws \Symfony\Component\HttpKernel\Exception\HttpException */ public function handle($request, Closure $next) { if ($this->app->isDownForMaintenance()) { $data = json_decode(file_get_contents($this->app->storagePath().'/framework/down'), true); throw new MaintenanceModeException($data['time'], $data['retry'], $data['message']); } return $next($request); } }
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
// the appropriate method and arguments, returning the results back out. return $pipe($passable, $stack); } elseif (! is_object($pipe)) { list($name, $parameters) = $this->parsePipeString($pipe); // If the pipe is a string we will parse the string and resolve the class out // of the dependency injection container. We can then build a callable and // execute the pipe function giving in the parameters that are required. $pipe = $this->getContainer()->make($name); $parameters = array_merge([$passable, $stack], $parameters); } else { // If the pipe is already an object we'll just make a callable and pass it to // the pipe as-is. There is no need to do any extra parsing and formatting // since the object we're given was already a fully instantiated object. $parameters = [$passable, $stack]; } return method_exists($pipe, $this->method) ? $pipe->{$this->method}(...$parameters) : $pipe(...$parameters); }; }; } /** * Parse full pipe string to get name and parameters. * * @param string $pipe * @return array */ protected function parsePipeString($pipe) { list($name, $parameters) = array_pad(explode(':', $pipe, 2), 2, []); if (is_string($parameters)) { $parameters = explode(',', $parameters); } return [$name, $parameters];
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Closure {#364 : "Illuminate\Routing\Pipeline" : Pipeline {#30 …} : { : {} } : { : Closure {#363 …} : "Illuminate\Foundation\Http\Middleware\ValidatePostSize" } }
return $this->handleException($passable, new FatalThrowableError($e)); } }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */ protected function carry() { return function ($stack, $pipe) { return function ($passable) use ($stack, $pipe) { try { $slice = parent::carry(); $callable = $slice($stack, $pipe); return $callable($passable); } catch (Exception $e) { return $this->handleException($passable, $e); } catch (Throwable $e) { return $this->handleException($passable, new FatalThrowableError($e)); } }; }; } /** * Handle the given exception. * * @param mixed $passable * @param \Exception $e * @return mixed * * @throws \Exception */ protected function handleException($passable, Exception $e) {
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
public function via($method) { $this->method = $method; return $this; } /** * Run the pipeline with a final destination callback. * * @param \Closure $destination * @return mixed */ public function then(Closure $destination) { $pipeline = array_reduce( array_reverse($this->pipes), $this->carry(), $this->prepareDestination($destination) ); return $pipeline($this->passable); } /** * Get the final piece of the Closure onion. * * @param \Closure $destination * @return \Closure */ protected function prepareDestination(Closure $destination) { return function ($passable) use ($destination) { return $destination($passable); }; } /** * Get a Closure that represents a slice of the application onion. * * @return \Closure */
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
} /** * Send the given request through the middleware / router. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ protected function sendRequestThroughRouter($request) { $this->app->instance('request', $request); Facade::clearResolvedInstance('request'); $this->bootstrap(); return (new Pipeline($this->app)) ->send($request) ->through($this->app->shouldSkipMiddleware() ? [] : $this->middleware) ->then($this->dispatchToRouter()); } /** * Bootstrap the application for HTTP requests. * * @return void */ public function bootstrap() { if (! $this->app->hasBeenBootstrapped()) { $this->app->bootstrapWith($this->bootstrappers()); } } /** * Get the route dispatcher callback. * * @return \Closure */ protected function dispatchToRouter()
$router->middlewareGroup($key, $middleware); } foreach ($this->routeMiddleware as $key => $middleware) { $router->aliasMiddleware($key, $middleware); } } /** * Handle an incoming HTTP request. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function handle($request) { try { $request->enableHttpMethodParameterOverride(); $response = $this->sendRequestThroughRouter($request); } catch (Exception $e) { $this->reportException($e); $response = $this->renderException($request, $e); } catch (Throwable $e) { $this->reportException($e = new FatalThrowableError($e)); $response = $this->renderException($request, $e); } $this->app['events']->dispatch( new Events\RequestHandled($request, $response) ); return $response; } /** * Send the given request through the middleware / router. *
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
*/ $app = require_once __DIR__.'/../bootstrap/app.php'; /* |-------------------------------------------------------------------------- | Run The Application |-------------------------------------------------------------------------- | | Once we have the application, we can handle the incoming request | through the kernel, and send the associated response back to | the client's browser allowing them to enjoy the creative | and wonderful application we have prepared for them. | */ $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class); $response = $kernel->handle( $request = Illuminate\Http\Request::capture() ); $response->send(); $kernel->terminate($request, $response);
Request {#42 #json: null #convertedFiles: [] #userResolver: Closure {#381 : "Illuminate\Auth\AuthServiceProvider" : AuthServiceProvider {#41 …} : { : { : null } } : { : Application {#2 …} } } #routeResolver: Closure {#383 : "Illuminate\Routing\Router" : Router {#25 …} : { : Route {#232 …} } } +attributes: ParameterBag {#44} +request: ParameterBag {#50} +query: ParameterBag {#50} +server: ServerBag {#46} +files: FileBag {#47} +cookies: ParameterBag {#45} +headers: HeaderBag {#48} #content: null #languages: null #charsets: null #encodings: null #acceptableContentTypes: array:1 [ 0 => "*/*" ] #pathInfo: "/ebook/214" #requestUri: "/ebook/214" #baseUrl: "" #basePath: null #method: "GET" #format: null #session: Store {#427} #locale: null #defaultLocale: "en" -isHostValid: true -isForwardedValid: true : "" : "html" }
Key | Value |
USER | "www"
|
HOME | "/home/www"
|
HTTP_HOST | "www.h5tpl.com"
|
HTTP_USER_AGENT | "claudebot"
|
HTTP_ACCEPT | "*/*"
|
PATH_INFO | "" |
REDIRECT_STATUS | "200"
|
SERVER_NAME | "www.h5tpl.com"
|
SERVER_PORT | "80"
|
SERVER_ADDR | "172.26.203.115"
|
REMOTE_PORT | "46670"
|
REMOTE_ADDR | "54.198.45.0"
|
SERVER_SOFTWARE | "nginx/1.20.1"
|
GATEWAY_INTERFACE | "CGI/1.1"
|
REQUEST_SCHEME | "http"
|
SERVER_PROTOCOL | "HTTP/1.1"
|
DOCUMENT_ROOT | "/www/wwwroot/www.h5tpl.com/public"
|
DOCUMENT_URI | "/index.php"
|
REQUEST_URI | "/ebook/214"
|
SCRIPT_NAME | "/index.php"
|
CONTENT_LENGTH | "" |
CONTENT_TYPE | "" |
REQUEST_METHOD | "GET"
|
QUERY_STRING | "" |
SCRIPT_FILENAME | "/www/wwwroot/www.h5tpl.com/public/index.php"
|
FCGI_ROLE | "RESPONDER"
|
PHP_SELF | "/index.php"
|
REQUEST_TIME_FLOAT | 1711666282.2253
|
REQUEST_TIME | 1711666282
|
APP_NAME | "自学php"
|
APP_ENV | "production"
|
APP_KEY | "base64:Y229TlMDpHVpMgykom7SZrXLV/gtIH34Dtsy/nKxQMU="
|
APP_DEBUG | "true"
|
APP_LOG_LEVEL | "debug"
|
APP_URL | "http://www.h5tpl.com"
|
DB_CONNECTION | "mysql"
|
DB_HOST | "127.0.0.1"
|
DB_PORT | "3306"
|
DB_DATABASE | "www_h5tpl_com"
|
DB_USERNAME | "www_h5tpl_com"
|
DB_PASSWORD | "bswZEDrTawFi7jA8"
|
DB_HOST_DATAVERSE | "47.103.47.61"
|
DB_DATABASE_DATAVERSE | "h5tpl"
|
DB_USERNAME_DATAVERSE | "root"
|
DB_PASSWORD_DATAVERSE | "@@Thcm123223!"
|
BROADCAST_DRIVER | "log"
|
CACHE_DRIVER | "file"
|
SESSION_DRIVER | "file"
|
SESSION_LIFETIME | "120"
|
QUEUE_DRIVER | "sync"
|
REDIS_HOST | "127.0.0.1"
|
REDIS_PASSWORD | "@redis5123"
|
REDIS_PORT | "6379"
|
MAIL_DRIVER | "smtp"
|
MAIL_HOST | "smtp.qq.com"
|
MAIL_PORT | "465"
|
MAIL_USERNAME | "491798689@qq.com"
|
MAIL_PASSWORD | "gjxdiefjstvebjid"
|
MAIL_ENCRYPTION | "ssl"
|
PUSHER_APP_ID | "" |
PUSHER_APP_KEY | "" |
PUSHER_APP_SECRET | "" |
PUSHER_APP_CLUSTER | "mt1"
|
QINIU_AK | "Upq8Cr-OzhctI3w4fIX_52xt7VJt1EkDQ9Zp7yh4"
|
QINIU_SK | "ikWAz6uFeFj57dV_kl178T_8NmuIganVWM5lPPsI"
|
QINIU_BUCKET | "blog"
|
QINIU_DOMAINS_DEFAULT | "img.h5tpl.com"
|
QINIU_UEDITOR_BUCKET | "blog"
|
QINIU_UEDITOR_DOMAINS_DEFAULT | "http://img.h5tpl.com"
|
QINIU_QRCODE_BUCKET | "blog"
|
QINIU_QRCODE_DOMAINS_DEFAULT | "img.h5tpl.com"
|
SHORTURL_DEFAULT_GATEWAYS | "wechat"
|
WECHAT_APP_ID | "wx92d380067e681c96"
|
WECHAT_SECRET_KEY | "5c5906fa87f6247bd901c37a94c320f4"
|
WECHAT_MINI_APP_ID | "" |
WECHAT_MINI_SECRET_KEY | "" |
WECHAT_MINI_TOKEN | "" |
JPUSH_APP_KEY | "" |
JPUSH_MASTER_SECRET | "" |
L5_SWAGGER_GENERATE_ALWAYS | "true"
|
CHUANG_LAN_API_ACCOUNT | "" |
CHUANG_LAN_API_PASSWORD | "" |
XINLANG_SHORTURL_KEY | "202088835"
|
BAIDU_SHORTURL_KEY | "290a944b7b5031a4b7b6f65c4a94527e"
|
YUAN_DATA_ACCESS_ID | "" |
YUAN_DATA_ACCESS_KEY | "" |
DEFAULT_SMS_SUPPLIER | "tencent"
|
ALIDAYU_APP_KEY | "LTAIuSnW4id7ORiR"
|
ALIDAYU_APP_SECRET | "NlZ8CBkyruevrGASVwEN3bCNKXsBrP"
|
ALIDAYU_VERIFY_SIGN | "h5模板网"
|
ALIDAYU_VERIFY_TEMPLATEID | "SMS_171113303"
|
TENCENT_APP_KEY | "1400058853"
|
TENCENT_APP_SECRET | "5a4e4bf735d17d5c9ac412d8bdbde429"
|
TENCENT_VERIFY_SIGN | "h5模板"
|
TENCENT_VERIFY_TEMPLATEID | "72180"
|
Key | Value |
APP_NAME | "自学php"
|
APP_ENV | "production"
|
APP_KEY | "base64:Y229TlMDpHVpMgykom7SZrXLV/gtIH34Dtsy/nKxQMU="
|
APP_DEBUG | "true"
|
APP_LOG_LEVEL | "debug"
|
APP_URL | "http://www.h5tpl.com"
|
DB_CONNECTION | "mysql"
|
DB_HOST | "127.0.0.1"
|
DB_PORT | "3306"
|
DB_DATABASE | "www_h5tpl_com"
|
DB_USERNAME | "www_h5tpl_com"
|
DB_PASSWORD | "bswZEDrTawFi7jA8"
|
DB_HOST_DATAVERSE | "47.103.47.61"
|
DB_DATABASE_DATAVERSE | "h5tpl"
|
DB_USERNAME_DATAVERSE | "root"
|
DB_PASSWORD_DATAVERSE | "@@Thcm123223!"
|
BROADCAST_DRIVER | "log"
|
CACHE_DRIVER | "file"
|
SESSION_DRIVER | "file"
|
SESSION_LIFETIME | "120"
|
QUEUE_DRIVER | "sync"
|
REDIS_HOST | "127.0.0.1"
|
REDIS_PASSWORD | "@redis5123"
|
REDIS_PORT | "6379"
|
MAIL_DRIVER | "smtp"
|
MAIL_HOST | "smtp.qq.com"
|
MAIL_PORT | "465"
|
MAIL_USERNAME | "491798689@qq.com"
|
MAIL_PASSWORD | "gjxdiefjstvebjid"
|
MAIL_ENCRYPTION | "ssl"
|
PUSHER_APP_ID | "" |
PUSHER_APP_KEY | "" |
PUSHER_APP_SECRET | "" |
PUSHER_APP_CLUSTER | "mt1"
|
QINIU_AK | "Upq8Cr-OzhctI3w4fIX_52xt7VJt1EkDQ9Zp7yh4"
|
QINIU_SK | "ikWAz6uFeFj57dV_kl178T_8NmuIganVWM5lPPsI"
|
QINIU_BUCKET | "blog"
|
QINIU_DOMAINS_DEFAULT | "img.h5tpl.com"
|
QINIU_UEDITOR_BUCKET | "blog"
|
QINIU_UEDITOR_DOMAINS_DEFAULT | "http://img.h5tpl.com"
|
QINIU_QRCODE_BUCKET | "blog"
|
QINIU_QRCODE_DOMAINS_DEFAULT | "img.h5tpl.com"
|
SHORTURL_DEFAULT_GATEWAYS | "wechat"
|
WECHAT_APP_ID | "wx92d380067e681c96"
|
WECHAT_SECRET_KEY | "5c5906fa87f6247bd901c37a94c320f4"
|
WECHAT_MINI_APP_ID | "" |
WECHAT_MINI_SECRET_KEY | "" |
WECHAT_MINI_TOKEN | "" |
JPUSH_APP_KEY | "" |
JPUSH_MASTER_SECRET | "" |
L5_SWAGGER_GENERATE_ALWAYS | "true"
|
CHUANG_LAN_API_ACCOUNT | "" |
CHUANG_LAN_API_PASSWORD | "" |
XINLANG_SHORTURL_KEY | "202088835"
|
BAIDU_SHORTURL_KEY | "290a944b7b5031a4b7b6f65c4a94527e"
|
YUAN_DATA_ACCESS_ID | "" |
YUAN_DATA_ACCESS_KEY | "" |
DEFAULT_SMS_SUPPLIER | "tencent"
|
ALIDAYU_APP_KEY | "LTAIuSnW4id7ORiR"
|
ALIDAYU_APP_SECRET | "NlZ8CBkyruevrGASVwEN3bCNKXsBrP"
|
ALIDAYU_VERIFY_SIGN | "h5模板网"
|
ALIDAYU_VERIFY_TEMPLATEID | "SMS_171113303"
|
TENCENT_APP_KEY | "1400058853"
|
TENCENT_APP_SECRET | "5a4e4bf735d17d5c9ac412d8bdbde429"
|
TENCENT_VERIFY_SIGN | "h5模板"
|
TENCENT_VERIFY_TEMPLATEID | "72180"
|