关于PHP的curl的ssl验证CURLOPT_SSL_VERIFYPEER及为什么需要验证ssl证书

Posted on 2016-10-28 13:09:40 | 0 comments | 4465℃ | PHP

序言

先来看几个PHP的curl设置参数的文档解释:

  • CURLOPT_SSL_VERIFYPEER:禁用后cURL将终止从服务端进行验证。使用CURLOPT_CAINFO选项设置证书使用CURLOPT_CAPATH选项设置证书目录 如果CURLOPT_SSL_VERIFYPEER(默认值为2)被启用,CURLOPT_SSL_VERIFYHOST需要被设置成TRUE否则设置为FALSE。
  • CURLOPT_SSL_VERIFYHOST:1 检查服务器SSL证书中是否存在一个公用名(common name)。译者注:公用名(Common Name)一般来讲就是填写你将要申请SSL证书的域名 (domain)或子域名(sub domain)。2 检查公用名是否存在,并且是否与提供的主机名匹配。
  • CURLOPT_CAINFO:一个保存着1个或多个用来让服务端验证的证书的文件...

composer用不了怎么办?npm用不了怎么办?

Posted on 2016-07-16 13:47:53 | 9 comments | 292928℃ | PHP

问题来了

image

遇到这样的情况怎么办?公司的网络是国外网站都走翻墙的,家庭的网络只针对gfwlist做了处理,compser和npm用不了了怎么办?

看看访问了哪些域名

composer

抓了个包瞄了瞄:

  • composer:
  • packagist.com
  • cacert.digicert.com
  • api.github.com
  • codeload.github.com

把这些加入到自定义的gfwlist里面,完美解决。

npm

  • registry.npmjs.org

理论上来说npm只需要加入上面这个域名。

汇总

如果是github...

Echarts图表的php库开源了

Posted on 2015-07-06 20:00:42 | 25 comments | 9416℃ | PHP

关于Echarts-PHP

Echarts-PHP 是一个对echarts js封装的PHP库。

安装方法

composer require "hisune/echarts-php"

特性

Echarts-PHP使用PHP的property来绑定echarts js的options,同时支持所有options的IDE代码提示,使用非常方便。

所有IDE自动提示的PHPDoc都由脚本自动生成,因此当echarts js的options的属性有变动时,PHPDoc的更新变得异常简单。

们可以通过直接对property赋值来指定options:


// The most simple exampleuse Hisune\EchartsPHP\EChar...

关于yii2-grid组件的date-range过滤无效的问题及解决办法

Posted on 2015-01-17 23:17:34 | 0 comments | 2461℃ | PHP

前言

最近实在是工作有点忙,都抽不出来时间好好的玩耍,感觉压力好大啊!一转眼,又已经10天没有更新博客了,其实早就想写了,那么今天就抽出时间来写一下吧!。

今天要介绍的是在项目中遇到过的一个问题,怎么在yii2里面的gridview加入date-range过滤搜索框。

通过查看yii2的官方文档可以发现yii2的gridview的过滤方式很有限,但他官方有个yii2-grid组件的介绍,看了下,这个组件非常不错,是一个开挂名族程序猿写的。

试用后发现了一个问题:yii2-grid的date-range在apply一个新日期范围后不会触发yii2的数据搜索。

原因是由于的val()赋值操作是无法对元素触发change()事件...

关于php的获取客户端IP和伪造客户端IP的若干事

Posted on 2015-01-07 23:01:22 | 1 comments | 1849℃ | PHP

前言

最近在工作中做一个投票功能被刷票了。

虽然这个刷票的bug不是今天文中要说的这个,但这个问题却是在后续发现的bug,并且很多网上的方法及开源框架中都有这个问题存在,鉴于问题的普遍性,这里有必要说一下。

错误姿势

以下是一个随处可见的获取客户端ip的php函数:


function ip()
{
    if (getenv('HTTP_CLIENT_IP') && strcasecmp(getenv('HTTP_CLIENT_IP'), 'unknown')) {
        $ip = getenv('HTTP_CLIENT_IP');
    } elseif (getenv('HTTP_X_FORWARDED_FOR') && strcasecmp(get...
UP