SSO 单点登录系统接入

简单讲一下 SSO 单点登录系统的接入的原理,前提是系统本身有完善的用户认证功能,即基本的用户登录功能,那做起来就很方便了。

SSO 登录请求接口往往是接口加上一个回调地址,访问这个地址会跳转到回调地址并带上一个 ticket 参数,拿着这个 ticket 参数再请求接口可以获取到用户信息,如果存在用户则自动登录,不存在就新增用户并登录。

继续阅读“SSO 单点登录系统接入”

Laravel 报错: Declaration of XXX

在另一台机器上拉取最新代码后,进入网站后台,发现页面空白,使用 php artisan cache:clear, php artisan clear-compiled 等清除缓存和编译文件后还是不行,打开 PHP 错误日志查看,发现报错:

Fatal error: Declaration of Illuminate\\Auth\\SessionGuard::basic() must be compatible with that of Illuminate\\Contracts\\Auth\\SupportsBasicAuth::basic() in /usr/share/nginx/html/tanteng.me/vendor/laravel/framework/src/Illuminate/Auth/SessionGuard.php on line 17

继续阅读“Laravel 报错: Declaration of XXX”

《性感的 PHP — 现代化 PHP 开发》PPT分享

说好的把这次技术分享的 PPT 发出来的,一直没时间弄,现在整理了一下,并导出了一份 PDF 版的 PPT,给大家参考。(PS:本次技术分享仅仅是介绍一些关于现代化 PHP 开发的技术,并不是讲某个方面的高深技术和经验,即便如此,针对目前的 PHP 现状,很多项目,公司和开发者,还在使用过时的 PHP 技术,这个分享还是有价值的)。

本次技术分享主要讲了一些现代化 PHP 开发的技术,PPT 重点介绍了命名空间,闭包,匿名函数,Traits 这些新特性,以及介绍了 Composer 依赖包管理器和 PSR 规范。

继续阅读“《性感的 PHP — 现代化 PHP 开发》PPT分享”

PHP 二进制安全

补充一下 PHP 的基础知识,什么是二进制安全?

这得从 C 语言说起。

C字符串中的字符必须符合某种编码( 比如 ASCII), 并且除了字符串的末尾之外, 字符串里面不能包含空字符, 否则最先被程序读入的空字符将被误认为是字符串结尾, 这些限制使得 C 字符串只能保存文本数据, 而不能保存像图片、 音频、 视频、 压缩文件这样的二进制数据。

以上这段文字摘自《Redis设计与实现》。

继续阅读“PHP 二进制安全”

友盟 IOS 推送官方 PHP SDK 自定义播示例有误

最近用到友盟给 IOS 应用推送消息,友盟的推送分为单播,列播,广播,组播,文件播,和自定义播,在使用自定义播官方 PHP SDK 发现官方示例(PHP SDK v1.4)有误。

主要问题,一个是请求 url 需要加 sign 签名,一个是解析数组 json_decode 函数使用问题,还有一个废弃的校验参数。

继续阅读“友盟 IOS 推送官方 PHP SDK 自定义播示例有误”

git clone 到一个非空目录的方法

如果我们往一个非空的目录下 clone git 项目,就会提示错误信息:

fatal: destination path ‘.’ already exists and is not an empty directory.

解决的办法是:

1. 进入非空目录,假设是 /workdir/proj1

cd /workdir/proj1

2. git clone 到目录下的临时目录

继续阅读“git clone 到一个非空目录的方法”