![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
PHP框架
camellias_
这个作者很懒,什么都没留下…
展开
-
Yii2框架(六)Yii2.0框架部署nginx服务器
一直在apache服务器下开发yii2.0的项目,apache下的部署可能没有什么。起码我没有遇到问题。服务器环境是nginx,在部署的时候发现了一个问题。按照正常的配置写入配置完成之后,访问报404错误。项目中的代码肯定是没有问题的。这个可能是什么情况。找了好久,也没有找到解决办法,后来看了下官方社区,哪里给出的配置,我试了一下,竟然好用,配置如下:重点是找不到真实存在的文件,把请求分发至 index.phpserver { charset utf-8; client_max_原创 2021-01-08 09:04:04 · 1595 阅读 · 4 评论 -
Yii2框架(五)日志的相关配置及使用
框架的运行日志(runtime)在开发过程中是很有用的,但是吧,这玩意我一般不太愿意用,主要是和直接在浏览器var_dump中输出,日志是将运行结果写到文件中去了,还要去看文件中的内容,比较麻烦。但是,在没有办法在浏览器中输出,或者需要在运行过程中输出,但是又不想打断她的运行的时候,日志是一个非常好的选择。Yii2.0框架的日志操作如下:大概有五种方式:Yii::getLogger()->log($message, $level, $category = 'application')Yii:原创 2021-01-06 08:57:00 · 434 阅读 · 0 评论 -
Yii2框架(四)Seesion及cookie操作
今天看一下Yii2.0框架对session以及cookie的操作。一:session1:存储session/** * 存储session */public function actionSession(){ Yii::$app->session['username'] = "111111"; Yii::$app->session['ses'] = "222222"; echo "success";}输出:session2:session取值/**原创 2021-01-04 11:59:05 · 428 阅读 · 0 评论 -
Yii2框架(三)控制器及视图操作
今天这部分内容可能比较杂,需要仔细一点。使用YII2.0框架搭建一个后台管理系统。有登录功能的。当然,这个登录功能先不做,这个留到之后cookie和session操作的时候,再看。后台管理系统,放到网站根目录下的backend目录中。我这里使用的adminlte模板,功能挺强大的,有兴趣可以去看下。官方网站:https://adminlte.io/首先,我们先将html页面的公共头尾抽成公共的文件。Yii2.0框架是有公共布局选项这个设置的:advanced/backend/views/layou原创 2020-12-31 14:02:25 · 552 阅读 · 0 评论 -
Yii2框架(二)数据库相关操作
Yii2.0的数据库操作。由于我这里安装的是yii2.0-advanced版本。这个破玩意是自带数据库的,上一篇的安装中数据库也一起随之安装完成。配置啥的,也都配置完成。不论什么框架,对数据库都是有一套自己独立封装的模型操作类。但是我一般都不用,学习成本太高,而且他其中封装的方法啥的一般都接触不全。学起来太费劲了。反正底层执行的都是sql。所以这里Yii2.0自己封装的数据库相关的模型操作,我就略过了。一般我习惯使用原生sql语句来对数据库进行增删改查。而且这种方法,我觉得对后期的维护也是一种很好原创 2020-12-30 09:52:22 · 643 阅读 · 2 评论 -
Yii2框架(一)安装及目录结构
如题:对,你要相信自己的眼睛,你没看错确实是Yii2框架。现在都2020年了,刚刚开始折腾Yii2框架难免有些过时,但是没办法,公司目前的项目是基于Yii2开发的,嘿,你说怎么这么巧,我还没用过Yii2框架。没办法,看手册呗。这玩意,万变不离其宗,总归还是PHP。之前用的多的大概就是thinkphp,从3到5再到目前的6,也是这样一步步过来的。Yii与thinkphp相比一定是有其独到的地方的。稍老的框架的好处就是,官方文档的bug可能是少一点,开发过程中遇到的问题,面向百度的时候可能答案更多一点原创 2020-12-29 09:25:42 · 1838 阅读 · 0 评论 -
phpexcel不完全研究(二)导入excel文件
有导出。自然就有导入。功能多样化嘛。不废话了,上代码。我这里使用的是tninkphp3.2框架/** * 导入excel */ public function putExcel() { ini_set('max_execution_time', '0'); Vendor('PHPExcel.PHPExcel.IOFactory'); // 真实路径 ./ThinkPHP/Library/Vendor/PHPExcel/原创 2020-12-28 13:47:05 · 133 阅读 · 0 评论 -
laravel5.8(二十三)导出PDF
有需求需要使用PHP导出pdf。下面记录一下我使用的两种方式一:laravel-tcpdf导出PDF文件Laravel框架为我们集成了一个插件tcpdf。下载地址:https://github.com/elibyy/tcpdf-laravel然后使用composer进行安装就可以了。具体安装过程,请移步《laravel5.8(十)引入第三方类库》使用的时候记得use 一下 命名空间。但是这里有一个问题,使用这个插件导出文件无法使用中文,且我还没有找到解决办法,因此,这个laravel的tcp原创 2020-12-01 09:31:23 · 606 阅读 · 0 评论 -
laravel5.8(二十二)laravel使用session报错session store not set on request
在使用laravel中的session的时候报错:session store not set on request.我是用的语句是:$request->session()->put('adminUserInfo', $data);查了下官方文档:需要在中间件中添加如下语句: \Illuminate\Session\Middleware\StartSession::class,文件位置:app/Http/Kerney.php再次请求,报错消失。有好的建议,请在下方输入原创 2020-11-30 10:04:39 · 652 阅读 · 0 评论 -
laravel5.8(二十一)laravel查询结果集转为数组的方法
Laravel框架从数据库中查询的结果集是以对象的 形势返回。但是对于一些时候,使用数组,可能要比使用对象要方便一点。这里我们大概看下,laravel中将对象结果集转换成数组的几个方法。1:toArray()方法(只对get查询的结果集有作用)toArray方法只对get方法查询的多条数据结果集有用。 $userInfo = DB::table("admin") ->where("username",$username)原创 2020-11-27 09:09:38 · 2938 阅读 · 2 评论 -
laravel5.8(二十)解决时区设置差8个小时解决办法
在使用laravel日志的时候,发现了一个问题,laravel日志记录的时候,总是要比我当前的时间差8个小时。在服务器端输出格式化时间,也是当前的时间,这个就有点奇怪。百度了一下。原来从php5.1.0开始,php.ini里加入了date.timezone这个选项,默认情况下是关闭的也就是显示的时间(无论用什么php命令)都是格林威治标准时间和我们的时间(北京时间)差了正好8个小时,有以下5中方法可以恢复正常的时间。1:如果你是用的laravel框架,将根目录下的config目录下的app.php原创 2020-11-26 09:21:50 · 1488 阅读 · 0 评论 -
laravel5.8(十九)laravel 缓存cache
Laravel中的cache为我们提供了三种缓存机制。Redis,memcache,以及框架的文件缓存。这里主要看的是cache中的文件缓存。一:访问多个缓存存储使用 Cache 门面,你可以使用 store 方法访问不同的缓存存储器,传入 store 方法的键就是 cache 配置文件中 stores 配置数组里列出的相应的存储器:$value = Cache::store('file')->get('foo');Cache::store('redis')->put('bar',原创 2020-11-25 09:23:46 · 1089 阅读 · 0 评论 -
laravel5.8(十八)laravel 解决groupBy时出现的错误 isn“t in Group By问题
使用原生sql查询数据,语句如下:SELECT p1.*,p2.category_name,p3.name as exp_name,p3.CID,p4.name as school_name,count(p5.id) as expcidtimeCountFROM virtual_simulation p1LEFT JOIN virtual_category p2 ON p1.nlab_id = p2.idLEFT JOIN exp p3 ON p1.exp_id = p3.idLEFT JOIN原创 2020-11-24 09:57:30 · 780 阅读 · 0 评论 -
laravel5.8(十七)laravel获取上一条执行的sql
Thinkphp框架关于获取上一条执行的sql有封装好的函数getLastSql。但是目前在使用laravel框架中,我还没有查到有相关的函数。但是laravel提供了其他的方法:代码如下:DB::enableQueryLog();$userin = DB::table('user') ->where('personal_id', '=', $data['personal_id']) ->where('name', '=', $data['原创 2020-11-23 16:02:49 · 1376 阅读 · 0 评论 -
laravel5.8(十六)加密
Laravel为我们提供了完整的加密方法及加密模式。我之前一般在加密的时候使用的是我自己写的加密函数,但是这个玩意,有的位置还是不太使用,当然,破解的话,基本上也是不可能的。具体请移步《php加密函数与解密函数》这里具体看下laravel为我们提供的加密及解密方法。一:简介Laravel 的加密器使用 OpenSSL 来提供 AES-256 和 AES-128 加密。强烈建议使用 Laravel 自带的加密设置,不要尝试推出自己“土生土长”的加密算法。所有 Laravel 加密过的值都使用消息授权码原创 2020-11-20 09:18:50 · 317 阅读 · 0 评论 -
laravel5.8(十五)新增自定义路由文件
Laravel中我们除了使用框架为我们自己生成的web.php或者api.php之外,我们还可以根据我们自己的业务需求自定义路由文件。下边我们大概记录一下新增自定义路由文件的过程:1:新建路由文件在routes/目录下新建路由文件 routes/test.php内容如下Route::group(['prefix' => test], function () { Route::group(['prefix' => 'report'], function () {原创 2020-11-19 09:13:14 · 459 阅读 · 0 评论 -
laravel5.8(十四)连接oracle数据库
首先确定你的PHP已经支持oracle数据库的链接。PHP需要安装OCI8扩展。确定PHP可以链接ORACLE数据库之后。我们使用composer安装laravel支持oracle链接的插件 yajra/laravel-oci8一:使用composer安装 yajra/laravel-oci81:运行如下命令:composer require yajra/laravel-oci82:安装过程中可能会报错,不要纠结那些报错,最简单的解决办法:试试php artisan cache:clear原创 2020-11-18 11:10:05 · 547 阅读 · 0 评论 -
laravel5.8(十三)解决前后端应用分离访问跨域的问题
业务需要,前后端是分离的,那这边访问的域名也是不一样的,这就存在跨域的问题,跨域请求的解决方案有 CORS 和 JSONP(了解更多明细可以参考这篇教程),但是 JSONP 有个致命缺点 —— 仅支持 GET 请求,所以推荐使用 CORS(Cross-origin resource sharing,跨域资源共享),一般情况下,这个都是用自定义中间件来解决问题。1:使用 make:middleware这个 Artisan 命令创建中间件:php artisan make:middleware CrossH原创 2020-11-17 10:21:34 · 592 阅读 · 0 评论 -
laravel5.8(十二)hash的使用
laravel中的 Hash一般用于字符的加密/解密,常见的就是用作登录的密码验证 Hash::make与Hash::check做登陆验证和密码加密1:引入hash的命名空间use Illuminate\Support\Facades\Hash;2:加密字符串$pwd = Hash::make($request->newPassword); //加密存储这里需要注意一下,同一个字符串每次加密的结果是完全不一样的。比如123456第一次加密结果为:U2FsdGVkX1+8jxMYL原创 2020-11-16 09:23:49 · 638 阅读 · 0 评论 -
laravel5.8(十一)配置使用多数据库
有的时候,我们在开发的过程中需要连接多个数据库。Laravel框架中早已为我们想到了这样的需求。配置很简单。在根目录下的/config/database.php文件中配置:Laravel中为我们提前预设了多种类型的数据库连接 'connections' => [ 'sqlite' => [ 'driver' => 'sqlite', 'url' => env('DATABASE_URL'),原创 2020-11-14 10:00:42 · 377 阅读 · 0 评论 -
laravel5.8(十)引入第三方类库
有需求需要使用PHPMailer发送邮件。那么首先需要引入PHPMailer这个第三方的类库。我是这样做的:1:在app目录下新建Extend目录。如下图所示:将PHPMailer放入Extend目录下。如下图所示2:修改项目根目录下的composer.json文件"autoload": { "psr-4": { "App\\": "app/" }, "classmap": [ "database/原创 2020-11-13 11:56:15 · 704 阅读 · 0 评论 -
laravel5.8(九)session基本使用
Session这个玩意还是挺重要的。Laravel对于session的支持还是很完全的。一:文件位置Session 配置文件位于 config/session.php。默认情况下,Laravel 使用的 Session 驱动为 file 驱动,这对许多应用而言是没有什么问题的。在生产环境中,你可能考虑使用 memcached 或者 redis 驱动以便获取更佳的 Session 性能,尤其是线上同一个应用部署到多台机器的时候,这是最佳实践。 Session 驱动用于定义请求的 Session原创 2020-11-12 09:17:18 · 542 阅读 · 0 评论 -
laravel5.8(七)关闭csrf验证
Csrf验证这个我之前在使用Yii2框架中见到过。这个破玩意,请求必须得带上验证的字符串,半小时页面没有活动,必须重新刷新页面才能重新发起ajax请求。有点麻烦。当然,框架中使用这个自然是有他的好处。防止csrf攻击嘛。我在测试过程中,目前先关闭csrf验证。打开当前项目目录下的app/Http/Kernel.php搜索csrf如果没有问题的话,在这里只能搜索到一个结果。大概在38行左右。将当前这行代码注释掉就可以了。如下所示:这样,访问便不需要添加csrf验证也可以了。当前后端分离原创 2020-11-06 09:32:25 · 323 阅读 · 0 评论 -
laravel5.8(六)中间件(middleware)
中间件,第一次听到这个名字感觉好陌生,这是个啥呀,第三方插件?好像不是。之前也没有遇到过这个玩意啊。之前使用到的thinkphp5.0以及Yii2.0框架都是没有中间件这一说的。去thinkphp官网查了一下,要到thinkphp5.1.6才开始支持中间件。实现的方式基本上就是仿照laravel。一:那么什么时中间件呢:HTTP 中间件提供了为过滤进入应用的 HTTP 请求提供了一套便利的机制。例如,Laravel 内置了一个中间件来验证用户是否经过授权,如果用户没有经过授权,中间件会将用户重定向原创 2020-11-05 11:13:37 · 509 阅读 · 0 评论 -
laravel5.8(五)基本路由配置
在使用laravel之前我一直在使用thinkphp还有yii框架,这两个框架也有路由这一说,但是都没有用过。Laravel的路由功能其实还是挺全的,也很优雅~下面来说正题:1:路由的基本介绍Laravel框架默认为我们提供了两个路由文件,在根目录下的routes目录下有web.php以及api.php。这些文件通过框架自动加载,相应逻辑位于 app/Providers/RouteServiceProvider 类。routes/web.php 文件定义了 Web 界面的路由,这些路由被分配到了 w原创 2020-11-04 09:06:03 · 1012 阅读 · 0 评论 -
laravel5.8(四)引入自定义常量文件及公共函数文件
开发过程中,我们一般会用到一些不会改变,或者改变不是很频繁的值,这样的值我们一般将他们定义成常量。比如网站根目录,或者分页数,或者域名等等。那我们如何在laravel5.8中引入自定义的常量文件及公共的函数文件呢。大概有两种方式:1:框架目录下引入(不推荐)在框架目录vendor下新建常量文件const.php,以及公共函数文件function.php在autoload.php文件中引入。这种方法是可以的,但是不推荐,框架目录下最好都是框架自己的那些文件,正常来说,框架的文件我们在开发过程中,原创 2020-11-03 15:31:48 · 664 阅读 · 0 评论 -
laravel5.8(三)数据库相关操作及配置
数据库相关的操作,大概看下laravel封装的增删改查的数据库操作方法以及laravel对原生sql的支持。一:执行原生sql1:查询select$results = DB::select('select * from users where id = ‘{$id}’');2:写入$result = DB::insert('insert into users (id, name) values (‘{$id}’, ‘{$name}’)');3:修改,该方法返回受更新语句影响的行数:$aff原创 2020-10-30 11:54:01 · 418 阅读 · 0 评论