前言最近有好几位同学直接微信赞助说快点更新文章。这个要和大家说声抱歉,的确很久没有写文章了。我们也不找借口,我会尽力保证多写文章。今天我们的主题来讲解 如何给自己的网站 加上HTTPSHTTPS是什么?相对于http,你会发现https 多了一个 S,没错这个S 表示的就是  Secure 安全的意思。为什么要加入这个? 主要是由于HTTP是明文传输的,如果被不法相关人截取了可以直接看到。并且在如今互联网下面 很多人都非常在乎隐私,所以HTTPS已经是趋势化的要求了。HTTPS证书如何获得?我们所知道的这个东西是要收费的,目前很多云服务商打着第一年免费的噱头和主机一起做活动(第二年就会收费的)。今天我们要来说的是如何免费获取HTTPS证书。 免费的安全?其实https证书基本上都是安全的,因为现在的加密算法基本已经很难破解。这里面主要关注点应该在于 浏览器是否可以显示 绿标(或者安全锁)而这个安全锁的显示 是浏览器内置了很多 信誉比较好的 SSL证书机构,这些机构颁发
在工作中需要对手机号码进行归属地查询,就在网上找了下解决方案,发现通过号段非常好判断。我将数据库文件放到了百度网盘,请有需要的朋友去下载。链接: https://pan.baidu.com/s/1ZEnymCpaCF7uG9z5uSbfdA 密码: 6w7f演示地址:http://m.54php.cn/demo/mobile
  为什么写这篇文章我个人有一个技术群,里面学什么框架的都有,经常会有人问 某某功能 在 哪个框架怎么实现,用什么框架实现更好,说道这里我大家讲一个同类型问题的笑话某女:你能让这个论坛的人都吵起来,我今晚就跟你走。某软件工程师:PHP是最好的语言!某论坛就真的炸锅了,各种吵架../..某女:服了你了,我们走吧,你想干啥都行。某软件工程师:今天不行,我一定要说服他们,PHP必须是最好的语言大家注意重点哦(可能有同学会说 活该单身狗 哈哈),这边文章的标题 就和这个语言争论是一样没有最好,只有更适合和语言之争一样,框架一样没有那个最好这种说法,只有更适合。这里的更适合我要给大家解释下。更适合是 你非常了解一个框架 ,一定要注意不是因为你使用过 就一定更适合,因为只有你认证了解过 在出现极端问题才知道怎么解决更适合是 你当前技术栈选择,例如公司大部分人都会Yii2 框架,你说我们选择个tp5,你这不是折腾人嘛,多人的智慧还是可取的更适合是 相对而言 文档比较丰富,不然新人学习成本很高的其实真有最好
缘由我们程序员难免要和数据库打交道,经过这几年的锻炼,感觉手写SQL语句已经忘记的差不错了,促使我一定要这篇文章的原因是,有一次晚上我更新某个系统的数据库的表(由于目前公司比较严格,数据库都只能通过命令行访问,无法通过GUI工具操作),然后由于where 条件写错了,然后数据更新错了不少。痛定思痛:用好的工具来避免这种情况,那就是phpMyadminphpMyadminphpMyAdmin是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。其中一个更大的优势在于由于phpMyAdmin跟其他PHP程式一样在网页服务器上执行,但是您可以在任何地方使用这些程式产生的HTML页面,也就是于远端管理MySQL数据库,方便的建立、修改、删除数据库及资料表。也可借由phpMyAdmin建立常用的php语法,方便编写
  当使用php5自带的file_get_contents方法来获取远程文件的时候,有时候会出现file_get_contents(): failed to open stream: HTTP request failed!这个警告信息。google或者baidu一下,好多这样的问题,解决的方法都是修改PHP.ini,把allow_url_fopen给启用,改成 allow_url_fopen = On这样做可以解决某些人的问题,有人说在php.ini中,有这样两个选项:allow_url_fopen =on(表示可以通过url打开远程文件),user_agent="PHP"(表示通过哪种脚本访问网络,默认前面有个 " ; " 去掉即可。)重启服务器。但是有些还是会有这个警告信息,想用完美的解决还差一步,还得设置php.ini里面的user_agent,php默认的user_agent是PHP,我们把它改成Mozilla/4.0 (compatible
  缘由经常会有人问xx框架怎么配置运行环境,这里我就给贴出吉祥三宝(Yii2,Laravel5,Thinkphp5 )的Nginx和Apache的配置,供大家参考NginxYii2server {         charset utf-8;         client_max_body_size 128M;         listen 80;         server_name yii.local.test;         root&n
  目的本文的目的主要是说明 命名空间的 use 关键词 和 new ClassName 这两个步骤,哪个步骤才会执行自动加载,这是逻辑有点混乱的表现,这种想法也是很正常的,让我们来解密吧命名空间(namespace)php从5.3加入了命名空间,我略懂一些java,所以命名空间还是比较好理解的,为什么需要命名空间啦?主要解决自己写的内部类/函数/常量  和 第三方的类/函数/常量冲突。引用命名空间下资源都要 使用关键字 use 标明 例如require_once("apanly/BrowserDetector/Browser.php"); use apanly\BrowserDetector\Browser; new Browser();自动加载php可以自定义自动加载函数,主要减少include 和 require 的使用。例如function myLoader($classname){    $c
  前言前面我们简单介绍了composer的安装 以及 如何安装库本文目的主要实战讲解如何使用库,主要是PSR-0 和 PSR-4的区别,以及如何在代码中引用。关于PSR-0和PSR-4的具体区别可以参考博文 PSR : php编码规范演示代码演示代码都在 https://github.com/apanly/composer_helloworld  中,有兴趣的可以clone实战内容引用资源phpoffice/phpexcelmonolog/monologapanly/browser-detector (本人自己的库,后续会讲解如何创建自己的库) composer.json文件如下{   "require":{     "phpoffice/phpexcel": "1.8.0",    &nbs
诸王混战关于开发标准这块,可以说一直都是风格迥异,各家都有各家的玩法,民间更是个人玩个人的。目前我们国内比较出名的几个框架(Yii,Laravel) 都已经支持Composer并且加入了PHP-FIG(php框架程序组)。其中Composer的自动加载就支持PHP-FIG指定的PSR-0 和 PSR-4 规范来实现自动加载机制,并且Composer推荐使用PSR-4PHP-FIG这是一个自愿非正式的机构,但是就目前对我们的影响来看,可能都已经默认为一个公信组织了,的的确确制定了不少非常好的规范目前从官网看,已经投票( http://www.php-fig.org/psr/  )通过的有7个大的规范了PSR-0 自动加载规范 ( 官方已废弃,主要是php5.3以前没有命名空间 )PSR-1 编码规范PSR-2 编码风格推荐PSR-3 日志接口PSR-4 改进的自动加载规范( 官方推荐 ,规范更简洁调理清晰了)PSR-6 缓存接口PSR-7 HTTP消息接口Compose
  最近我们公司的项目的在导出excel的时候偶尔出现内存溢出错误,经过测试发现当数据量大于5000条就出现这个问题(默认php.ini memory 是128M)Allowed memory size of 134217728 bytes exhausted (tried to allocate 43 bytes)解决内存溢出问题方法如下增加内存了,修改php.ini中memory_limit 或者 @ini_set('memory_limit','256M')PHPEXCEL库支持使用缓存 具体缓存使用请查看  phpExcel大数据量情况下内存溢出解决找出内存急剧增加的原因方案1 和 方案2 算是非常简单粗暴的了,但是没有触及根本,就是为什么会内存溢出,作为技术人咱们就应该打破砂锅问到底了本文主要简单描述下我是如何排查内存溢出
  原始时代我记得在当时用php的时候还没有composer,只有个pear,但是不好用呀,还不如直接在互联网上到处复制代码了,更快更不容易出错,当时也没有github这么好的社区工具了总结如下代码混乱规范不统一没有后续统一更新等管理Composer侠应运而生composer直到如今 已有5个年头了,也是直到今年才有了第一个稳定版本1.0,以前都是alpha版本了,其实composer的发展 也和 PHP-FIG (后续会专门解释的)的发展有很大关系composer是php新时代的依赖管理利器,就像python的pip,nodejs的npm,javascript的bower等。你可以在自己的项目申明所依赖的外部库,composer可以帮你安装这些composer解决如下问题你有一个项目需要依赖若干个库其中一个库依赖其他库找出你需要的版本进行安装安装Composer要求composer 要求 php 不低于 5.3.2+命令curl -sS https://getcompo
什么是opcodeopcode(operate code)是计算机指令中的一部分,用于指定要执行的操作,指令的格式和规范由处理器的指定规范指定opcode是一种php脚本编译后的中间语言,就像java的ByteCode,或者.NET的MSL为什么要使用opcode缓存opcode cache的目的是避免重复编译,减少CPU和内存开销的。如果动态内容的性能瓶颈不在于CPU和内容,而在于IO操作,比如数据库查询带来的IO开销,这个时候opcode cache的性能提升是非常有局限的。无论如何既然opcode cache 可以降低cpu和内存的开销,这当然是好事了目前PHP中常见的opcode cahce模块如下APCOptimizer+(目前已开源并与php5.5+集成了opcache)xcacheeAcceleratorOpcode原理例如有如下一段代码<?php echo 'Hello World'; $a = 1 
  公司有个群发短信的小项目,项目上线了很久也没有什么问题,最近有商家说 我短信群发不能用现象是:发现有时候可以发送,有时候不可以发送,看截图发送的手机数量不一样通过调试php代码发现 php 只接受了1000个 请求参数,然后参看nginx的access 状态是200,正常。在查看php的error log 发现有句提示如下Unknown: Input variables exceeded 1000这句提示就是 最多1000 的请求参数,这个在某些项目中1000可能满足不了需求,所以我们需要修改下,找到php.ini文件 ,搜索关键字  max_input_vars  根据项目需求设置满足你需求的值
最近公司做一个客户导入会员的功能,以前导入都是使用csv格式导入的,但是客户反应问题挺多的,普遍是乱码(由于各种系统各种环境可能引起编码问题)。最近想着就把这个导入完全改成excel导入,就研究了下phpexcel,发现读取excel还是挺方便的,这样也方便客户了,比较excel 无论用office 还是 wps 打开都是没有问题的示例读取代码如下/*  * $path excel文件路径  * $header_mapping 文字和数据库字段的对应关系  * excel第一行 是 字段标准(通常是汉字),  * example  * $header_mapping = [ '姓名' => 'uid' ];  *  */ privat
以前注册很多网站密码都使用简单密码,但是由于今年频繁曝出密码不安全问题,所以要使用更加复杂的密码。但是好多个账号,密码也不能设置成一样的,防止一个被盗全部不安全了,记密码就成了意见很头疼的事情。在手机上有个1password软件,非常好,不过收费的。本着节约和利用自己的技能,自己就想到开发一个加密的账号功能在php中有个ssl 加密功能,本文就是用此功能。步骤如下前提:什么样的秘密才安全密码没有绝对安全的说数字,字符,特殊字符结合,长度大于10位定期更换密码一:生成私钥和公钥$config = array(    "digest_alg" => "sha512",    "private_key_bits" => 4096,    "private_key_t
  最近手贱把phpstorm 升级到了最新版,发现输入中文符号输入不了呀,全部都变成英文符号了,例如输入的逗号、句号(,。)等都被转换成了(,.)经过各方搜索,这个在官方也说了,是个bug,JDK的bug,点击这里去官方查看  目前官方还没有解决补丁,只有降低JDK版本了,目前测试出来 jdk1.8.0_45是可以的,下载地址:http://www.oracle.com/technetwork/java/javase/downloads/java-archive-javase8-2177648.html#jdk-8u45-oth-JPR我是mac版本的,安装 jdk1.8.0_45的时候,需要先删除jdk删除命令如下sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin sudo rm -fr /Library/Pref
今天给我们自己的发布系统增加一个新建分支的功能,操作比较简单,但是使用php执行shell命令的时候总是无法push分支到远程,但是登陆服务器执行却是可以的新建分支命令如下git fetch --all git checkout -b pmt_20160624_v10.7.4 origin/master  git push origin pmt_20160624_v10.7.4:pmt_20160624_v10.7.4php大概代码如下,执行这个php文件是定时执行的<?php $cmd = [     "cd /data/xxx",     "git fetch --all",    
  关于Discuz的加密解密函数,相信大家都有所了解,该authcode函数可以说是对PHP界作出了重大的贡献,真的发觉discuz这个函数写的太精彩啦。研究了一下这个算法,总的来说可以归纳为以下三点:1,动态性,同一字符串使用相同的key,每次加密的密文都不一样,而解密方法只有一个,其实就是把解密的信息放到了密文上面。2,时效性,可以自己加一个限期参数,以秒为单位,这个其实就是在密文里加入了有效时间。3,统一性,加密和解密都用同一个函数,而且用了比较简单的异或算法。由于该函数具有以上功能,所以适用的环境也很多,一般用于用户登陆和开发API时防刷接口等。 代码如下<?php /**  * $string: 明文 或 密文  * $operation:DECODE表示解密,其它表示加密  * $key: 密匙  * $expiry:密文有效期  *
通过授权服务器授权jetbrains是一家专门做IDE的软件公司,软件也非常好用,但是授权特别贵,下面就说说免费的方式,就是使用授权服务器,地址:http://idea.qinxi1992.cn 自己搭建授权服务如若上述公共授权服务被封了,那就只能自己搭建了,不难,按需从附件中选择版本就好了附件地址https://yunpan.cn/cvBFY3G5rSisC  访问密码 b3ce根据自己电脑系统选择对应的版本启动服务本人系统ubuntu 虚拟机,启动命令sudo ./IntelliJIDEALicenseServer_linux_amd64 2016/10/14 22:16:25 ************************************************************* 2016/10/14 22:16:25 ** IntelliJ IDEA&
  1:修改源(我使用163的源)直接修改/etc/apt/sources.listdeb http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse deb-src http://mirrors.163.com/ubuntu/ precise main universe restricted multiverse deb http://mirrors.163.com/ubuntu/ precise-security universe main multiverse restricted deb-src http://mirrors.163.com/ubuntu/ precise-security 
  第一部分,通信接口的实现标签(空格分隔): PHP 手机后台 api 通信接口 AndyPHP开发手机API时,一般返回XML或JSON数据类型的数据,除了要返回从源数据(程序本身需要的数据)外还应附上状态码,以下是一段封装后的数据,它使用JSON格式展现:{ code: 200, message: "Success", data: [ { username: "安明哲", password: "123456", level: "1", gold: "0", id: "6", create_time: "2015-09-26 08:25:31", is_active: "1", is_admin: "0" }, {
  最几年,PHP已经成为最受欢迎的一种有效服务器端编程语言。据2013年发布的一份调查报告显示,PHP语言已经被安装在全球超过2.4亿个网站以及210万台Web服务器之上。PHP代表超文本预处理器,它主要用于创建动态网页。当然,PHP还有许多其他用途,在Web开发人员中具有极高的人气。随着相关技术在各个领域的不断发展,PHP开发人员目前拥有非常旺盛的市场需求。 PHP库在扩展该语言的核心功能方面具有重要的作用。对于程序员来说,库是非常有用的资源,其中包含了预先写好的代码、类、值、消息模板和配置数据等。目前,有一些实用的PHP库能够以更快的速度和效率执行Web开发项目。今天,小编将列出15个这样的PHP库,欢迎大家品鉴! 1、Mink Mink是一个PHP 5.3的库,它可用于在测试中模拟Web应用程序与浏览器之间的交互。这个库能够帮助开发人员利用单一的API对多种不同的浏览器模拟器进行同时操作。Mink还提供了一种有效的方法来控制浏览器、遍历页面和操作页面元素。 2、Geoco
  1. 处理所有请求到单一入口 (  rewrite all requests to index.php with nginx )目前我们做开发一般都是单入口的,所以都会使用web服务器做重定向到入口文件rewrite ^/(.*)$ /index.php?/$1 last;在nginx中加入这项配置就好了或者可以使用htaccess文件RewriteRule . index.php2.Nginx出现的413 Request Entity Too Large错误这个错误一般在上传文件的时候出现,打开nginx主配置文件nginx conf,找到http{}段,添加或者修改client_max_body_size 2m;然后重启 reload nginx 服务
本人简单实现的示例,使用任意二维码工具打开二维码对应链接http://www.54php.cn/demo1/scan原理介绍:第一步:访问登录页面,生成唯一key,例如MkhjDFL=,并且将此key 存入cache,对应值为-1 ,-1表示未登录,key有效期我设置的为5分钟,过期就会重新生成二维码图片第二步:生成二维码,本人使用库(https://github.com/2amigos/yii2-qrcode-helper),二维码对应的链接                http://www.54php.cn/demo1/qrcode?key=MkhjDFL=第三步:登录页面,JS循环请求某个接口,本人接口 http://www.54php.cn/demo1/dologin第四步:使用任意app,打开二维码对饮的链接。此处应该使用自己开发的App,并且App已经登录,然后使用自己的App扫描二维
  最近做项目,发现了一个报错  Only variables can be passed by reference,  意思是“只有变量能通过‘引用’”就是在代码中 使用了一个方法,这个方法的参数值传址引用的例如php的 end方法php官网的说法(PHP 4, PHP 5)end — 将数组的内部指针指向最后一个单元说明 ¶mixed end ( array &$array )end() 将 array 的内部指针移动到最后一个单元并返回其值。参数 ¶array这个数组。 该数组是通过引用传递的,因为它会被这个函数修改。 这意味着你必须传入一个真正的变量,而不是函数返回的数组,因为只有真正的变量才能以引用传递。返回值 ¶返回最后一个元素的值,或者如果是空数组则返回 FALSE。错误的使用:end( explode
  • 微信公众号 微信小程序
  • 微信机器人
  • 群1:1046090432
  • 群2:585567981