Laravel 实用小技巧

2019-05-05 11:40:18

1. 更新父表的  timestamps 如果需要在更新关联表的同时,更新父表的 timestamps,只需在关联表的 model 中添加 touches 属性 protected $touches = ['parentModel']; 2. 关联时使用 withDefault()  使用模型关联时,如果关联的模型不存在,如:  $post->user->name  $post->user 会返回 null, 继续访问 name 会抛出致命异常,  使用 withDefault 则会返回一个 User Model 的实例,访问 name 会变成 null   withDefault 可以接受参数(数组、闭包) 3. 跳转到指定控制器并附带参数 return redirect()->action('SomeController@method', ['param' => $value]); 4. Eloquent 中的日期时...

阅读全文

数据库二进制图片输出到前端

2018-08-18 17:21:23

在维护老项目时,发现有的项目居然把图片存在数据库,而不是图片链接,数据库里的图片字段类型是:`mediumblob`现在的需求是:从数据库取出图片在前端列表显示。大学是,老师就开始教导我们不要把图片存在数据库里,不方便维护,而且很占数据库体积。然后就没有碰到过存取数据库的二进制图片,突然碰到有点懵。估计大多数人没有这样的习惯,然后网上的资料也是大量重复过时的方法。目前接触到的前端渲染图片有两种:1、URL地址;2、 data:image/jpeg;base64  。于是想到在后端先用base64进行编码,然后在前端输出,果然可以!    代码如下:PHP:$base64Img = base64_encode($blobImg);HTML:<img src="data:image/jpe...

阅读全文

laravel-admin必填项加星号

2018-08-03 15:27:27

1.文件修改,vendor/encore/laravel-admin/src/Form/Field.php 新增:/** * Form element label classes. * * @var array */ protected $elementLabelClass = [];/** * Add the element label class. * * @param $class * * @return $this */ public function addElementLabelClass($class) { if (is_array($class) || is_string($class)) { $this->elementLabelClass = array_merge($this->elementLabelClass, (array) $class); $this->elementLabelClass = array_unique($this->elementLabelClass); } return $this; } 修改方法(约740行左右)getViewElemen...

阅读全文

程序员必须掌握英语单词

2018-07-11 18:47:42

application 应用程式 应用、应用程序application framework 应用程式框架、应用框架 应用程序框架architecture 架构、系统架构 体系结构argument 引数(传给函式的值)。叁见 parameter 叁数、实质叁数、实叁、自变量array 阵列 数组arrow operator arrow(箭头)运算子 箭头操作符assembly 装配件assembly language 组合语言 汇编语言assert(ion) 断言assign 指派、指定、设值、赋值 赋值assignment 指派、指定 赋值、分配assignment operator 指派(赋值)运算子 = 赋值操作符associated 相应的、相关的 相关的、关联、相应的associative container 关联式容器(对应 sequential container) 关联式容器atomic 不可分割的 原子的attribute 属...

阅读全文

IE下扫描枪不兼容问题

2018-07-10 19:04:35

 js监听条形码扫描枪barcode.on('keyup', function(event){ if(event.keyCode === 13){ // 逻辑 console.log(barcode.val()); } });在IE下扫描时经常出现条形码扫不全、获取不到条形码、条形码空白等问题。在其他浏览器则无此问题。经过一番对比和debug,发现IE只有在中文输入法下才会复现此bug。 所以只需切换输入法或开启键盘大写即可。  由于JS是无权限操控电脑的输入法和大写的,所以在非自己使用的情况下,应标注醒目提示用户使用英文输入法或开启键盘大写。

阅读全文

linux下全文检索引擎sphinx/coreseek的安装配置

2018-06-27 19:38:18

linux下全文检索引擎sphinx/coreseek的安装配置1.安装预装软件yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel 2.下载coreseek4.1https://download.csdn.net/download/dl425134845/9535621 3.解压tar zxvf coreseek-4.1-beta.tar.gz 4.安装进入到mmseg-3.2.14目录,在该目录中运行./bootstrap 命令。 5.指定安装coreseek安装路径./configure --prefix=/usr/local/mmseg3 6.实际安装coreseekmake && make install 7.测试coreseek的分词效果进入到/usr/local/mmseg3/bin 目录中,执行如下命令./mmseg -d /usr/local/mmseg3/etc /usr/local/src/co...

阅读全文

laravel单点登录-多个子域名站点

2018-06-23 11:02:11

单点登录     单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一。SSO的定义是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。  在laravel中实现这一功能非常简单。  首先要知道‘浏览器同源策略’原理: Cookie 是服务器写入浏览器的一小段信息,只有同源的网页才能共享。但是,两个网页一级域名相同,只是二级域名不同,浏览器允许通过设置document.domain共享 Cookie。 于是我们可以把session存在cookie里,然后多个子域名服务使用同样的域,就可以实现共享登录(SSO)。SESSION_DRIVER=cookie SESSION_DOMAIN=baidu.com

阅读全文

Referrer Policy 介绍

2018-04-20 16:37:05

        当用户在浏览器上点击一个链接时,会产生一个 HTTP 请求,用于获取新的页面内容,而在该请求的报头中,会包含一个 Referrer,用以指定该请求是从哪个页面跳转页来的,常被用于分析用户来源等信息。但是也有成为用户的一个不安全因素,比如有些网站直接将 sessionid 或是 token 放在地址栏里传递的,会原样不动地当作 Referrer 报头的内容传递给第三方网站。        所以就有了 Referrer Policy,用于过滤 Referrer 报头内容,目前是一个候选标准,不过已经有部分浏览器支持该标准。具体的可查看这里。指令值目前包含了以下几种指令值:enum Refer...

阅读全文

异常实时报警

2018-04-17 18:09:48

当线上服务出现异常时,有时候问题很难察觉,需要自己测试,甚至要等用户反馈问题才知道。于是想到能不能线上代码出现问题实时通知给相关负责人?比如:即时通讯工具(微信/QQ)或者邮箱。 答案是肯定的,在laravel中实现起来就很简单。(此方法仅针对业务代码出现异常,或者遭到攻击服务不能正常运行的异常) laravel中所有异常都由 App\Exceptions\Handler 类处理https://d.laravel-china.org/docs/5.4/errors#the-exception-handler 因此,我们只要捕获项目中所有异常并实时通知就简单多了。 本文测试发送163邮箱 先写好发送邮件内容格式,然后在 App\Exceptions\Handler 的 report 里...

阅读全文

php密码加密与验证

2018-04-17 17:53:34

password_hash是crypt()的一个简单封装,并且完全与现有的密码哈希兼容,使用了一个强的哈希算法,来产生足够强的盐值,并且会自动进行合适的轮次。 password_hash会生成60个字符,随时间推移,默认算法可能会有变化,因此需要数据库里储存结果的列可超过60个字符(最好是255个字符)前面7位字符代表hash的相关信息(密码算法类型和密码算法常量),可用password_get_info获取,后面53位为随机字符串。在生成散列(hash)值时,会自动创建安全的随机盐值。(在php5.5至php7.0时可以手动指定盐值,不过强烈建议不要自己为这个函数生成盐值(salt),因为php7.0以后就废除了)生成的hash会返回:使用的算法、cost 和盐值,所以验证散列值的所...

阅读全文

php扩展missing处理

2018-04-17 15:58:08

碰到一个问题: 在phpinfo里能看到mbstring和其他扩展已经安装, 但是使用composer update时却提示:mbstring missing 使用php -m也没有看到mbstring扩展  再三思考和排除法测算后,最后锁定两种可能:1.系统有安装多个php版本,配置不一样;2.php的运行模式不一样,如:php-fpm,cli 使用whereis php查看排除第一种可能然后使用:/usr/local/php/bin/php composer update可以正常安装依赖包,sudo cp -rf /usr/local/php/bin/php /usr/bin/php 主要原因是:两种不同的运行模式加载的php.ini不同 关于php的运行模式:CLI、FastCGI、mod_php参考相关资料:PHP 的命令行模式(cli)FastCgi与PHP-fpm之间是个什么样的关系P...

阅读全文

微信图文素材防盗链问题

2018-04-17 10:23:44

在开发微信第三方平台管理时,发现获取微信公众号所有素材时,却无法在浏览器正常显示,图片提示:“此图片来自微信公众平台未经允许不可引用”原来微信图片素材做了防盗链。不过可以在html的head里添加:<meta name="referrer" content="never">这样当前页面中发起的请求就不会携带 referer信息,从而绕过referer检测  更多关于Referer Meta标签的描述如下:转载《使用Referer Meta标签控制referer》本文描述了一个关于 http 协议中 referer 的 metadata 参数的提议,使用这个 metadata 参数,html 文档可以控制 http 请求中的 referer ,比如是否发送 referer、只发送 hostname 还是发送完整的 referer 等。虽然有一些方法可以控...

阅读全文

git常见命令大全

2018-01-31 12:00:00

查看日志 git log 获取从2017-09-11到2017-09-22更新的文件,作者是jesse,时间格式化为2017-09-20,只显示备注 git log --author=jesse --since="2017-09-11" --before="2017-09-22" --no-merges --name-status --date=short --pretty="%ad - %s" 根据备注查询以"上传"开头的的所有字符,支持正则匹配 git log --grep '^求职大赛' --author=jesse --no-merges --name-status --date=short --pretty="%ad - %s" git 创建仓库,初始化 git init 提交代码到仓库 查看文件修改状态: git status git add . git commit -m '备注' git push 撤销未提交的修改 git checkout /var/www/test/index.html /*恢复到上一次提交时的状态,注意:这种方...

阅读全文

关于PDO防御sql注入

2017-12-04 14:57:00

不要对已经被 magic_quotes_gpc或者htmlspecialchars 转义过的字符串使用 addslashes(),因为这样会导致双层转义,或会引起其他问题。 如果使用的是PDO,最好不要使用addslashes来达到sql的防注入目的,因为PDO本身就可以防御sql注入。PDO有一项参数:(参考官方手册)PDO::ATTR_EMULATE_PREPARES 启用或禁用预处理语句的模拟。 有些驱动不支持或有限度地支持本地预处理。使用此设置强制PDO总是模拟预处理语句(如果为 TRUE ),或试着使用本地预处理语句(如果为 FALSE)。如果驱动不能成功预处理当前查询,它将总是回到模拟预处理语句上。 需要 bool 类型。 有网友做过测试: 传送门使用模拟预处理语句(PDO::ATTR_EMULATE_PREPARES = true), php会...

阅读全文