在项目中,暴露给用户真实的项目ID,很有可能被恶意采集,很有可能被猜到目前有多少量(对造假不利)。前两天群里有人分享了一个php类库Hashids,就可以解决这个问题。
Hashids是一个能利用整数生成出短小、唯一、非连续标识符的类库,它支持包含php在内的好多好多(真的好多)种语言。
Hashids支持通过生成出来的标识符进行解码为原数字,还支持加盐加密,不会因为大家都用这个类库就被猜到真实ID。
在项目中,暴露给用户真实的项目ID,很有可能被恶意采集,很有可能被猜到目前有多少量(对造假不利)。前两天群里有人分享了一个php类库Hashids,就可以解决这个问题。
Hashids是一个能利用整数生成出短小、唯一、非连续标识符的类库,它支持包含php在内的好多好多(真的好多)种语言。
Hashids支持通过生成出来的标识符进行解码为原数字,还支持加盐加密,不会因为大家都用这个类库就被猜到真实ID。
这几天为我的开源项目御用文档系统YurunDoc(截止发稿前未开源)开发了下载PDF的功能,方便有些奇怪的用户喜欢下到本地看。
刚开始研究时候没想到竟然没有一个成熟的方案,百度一下找到的方案都是一些对中文兼容不好的。
中间省去无数研究尝试过程……
终于在Gayhub(Github)找到了好用的类库。
历时4个月,ApiAgent终于自豪的发布了1.0版本。
ApiAgent是一个使用PHP开发的API接口代理程序,支持跨域接口代理和接口合并请求功能。ApiAgent不光是一个接口代理项目,也可以作为类库使用。
自从上次发布更新新闻后,已经过去整整4个月,这期间虽然没有发布更新新闻,但是YurunHttp一直在不断更新完善。
下面就列一下这4个月的改进吧!
说到今天遇到的这个坑,就得说说我开源的YurunHttp类库了。curl请求后,获取header和body,我是通过获取CURLINFO_HEADER_SIZE来进行字符串截取。截取当然用substr,于是截取body时候遇到了问题。
前两天有段代码报错了,提示信息是PHP Static function xxx should not be abstract。
百度后得知PHP5.2以后不允许abstract和static同时使用在方法上。
我们可以把基类中的static abstract方法,写在接口中,让类使用接口。
宇润开源的PHP事件类,支持全局事件和类中事件,也就是专业的说是观察者模式。
今天遇到过怪事,同样的代码,在cli模式下运行一切正常,到网页里就直接显示500错误。php的错误捕获和内置错误日志都没有记录,查看了apache的日志有一条错误。
几天前,写了个YurunLock,这是PHP阻塞锁和非阻塞锁机制,内置解决并发锁重复执行的方案。目前支持文件、Redis、Memcache、Memcached。
里面用到了文件锁,最开始文件解锁的时候我是直接fclose,因为看到w3school里说:
可以通过 fclose() 来释放锁定操作,代码执行完毕时也会自动调用。
后来群里@小黑屋 说这是在php5.3之前的了,于是我上php官网看了一下。。。
如果你在PHP里做钱相关的计算时候一定要注意了,无论是PHP还是其它语言,在数字计算方面总会有浮点数精度丢失的问题出现。原因就不贴了,自己百度之,这里只提供PHP的解决方案,其它语言的自行百度。
我们可以使用PHP内置的BCMath扩展来做四则运算,不但可以解决精度丢失问题,还可以支持超大数字的计算。
对于任意精度的数学,PHP提供了支持用字符串表示的任意大小和精度的数字的二进制计算,最多为2147483647-1(或0x7FFFFFFF-1)。
BCMath函数仅在 PHP 编译时配置了 --enable-bcmath 时可用。
PHP 的 Windows 版本已内建对此扩展的支持。不需要载入额外的扩展来使用这些函数。