用PHP进行HTTP认证

如果你有一个简单的页面需要做登录认证,也就是需要一个登录框,但是自己又懒得写一堆HTML和CSS,那么你可以借用浏览器的HTTP认证。
我们可以用PHP的 header() 函数来向客户端浏览器发送401状态信息,使浏览器弹出一个用户名/密码输入窗口。当用户输入用户名和密码提交后,浏览器将用户名和密码转码后添加到HTTP请求头发送给服务器,而PHP脚本将接收到用户名和密码存储到两个变量里:$_SERVER['PHP_AUTH_USER']、$_SERVER['PHP_AUTH_PW'] 。
浏览器支持两种常见的认证方法,分别是“Basic”和“Digest”。

分类至 PHP
0条评论

Nginx负载均衡的几种方式

Nginx负载均衡(工作在七层“应用层”)功能主要是通过upstream模块实现,Nginx负载均衡默认对后端服务器有健康检测的能力,仅限于端口检测,在后端服务器比较少的情况下负载均衡能力表现突出。
Nginx的几种负载均衡算法:
1、轮询(默认)
2、weight
3、ip_hash
4、fair(第三方)
5、url_hash(第三方)

分类至 Linux
1条评论

MySQL "ON DUPLICATE KEY UPDATE" 语法分析

mysql "ON DUPLICATE KEY UPDATE" 语法

如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。 

例如,如果列 a 为 主键 或 拥有UNIQUE索引,并且包含值1,则以下两个语句具有相同的效果:

INSERT INTO TABLE (a,c) VALUES (1,3) ON DUPLICATE KEY UPDATE c=c+1;
UPDATE TABLE SET c=c+1 WHERE a=1;

如果行作为新记录被插入,则受影响行的值显示1;如果原有的记录被更新,则受影响行的值显示2。 

...

分类至 MySQL
0条评论

数字证书原理

文中首先解释了加密解密的一些基础知识和概念,然后通过一个加密通信过程的例子说明了加密算法的作用,以及数字证书的出现所起的作用。接着对数字证书做一个详细的解释,并讨论一下windows中数字证书的管理,最后演示使用makecert生成数字证书。如果发现文中有错误的地方,或者有什么地方说得不够清楚,欢迎指出!
1、基础知识
2、一个加密通信过程的演化
3、证书的构成和原理
4、在windows中对数字证书进行管理

分类至 杂项
0条评论

PHP借助文件锁实现命令行脚本单例模式

思路其实很简单:用fopen打开一个文件,然后用flock获取该文件的独占锁,当前脚本还没跑完时,会一直持有这个锁,另一个脚本尝试获取锁就会返回失败并退出,从而达到控制同一时间只有一个脚本实例在执行的效果。封装代码如下...

分类至 PHP
0条评论

CentOS 7.6 编译安装 PHP 7.2.15

本文操作环境:CentOS Linux release 7.6.1810 (Core)。
指令记录如下:yum install autoconf gcc gcc-c++ wget curl curl-devel cmake libpng libpng-devel libjpeg libjpeg-devel libzip libxml2 openssl openssl-devel bzip2 bzip2-devel freetype freetype-devel libicu-devel libxslt libxslt-devel
……

分类至 Linux
0条评论

MySQL函数FIELD()用法

MySQL函数FIELD语法定义如下:

  • 语法:FIELD(str, str1, str2, str3, ...)
  • 解释:返回 str1,str2,str3,... 列表中str的索引(位置)。 如果未找到str,则返回0。如果FIELD()的所有参数都是字符串,则所有参数都将作为字符串进行比较。如果所有参数都是数字,则将它们作为数字进行比较。 否则,参数将进行两次比较。如果str为NULL,则返回值为0,因为NULL无法与任何值进行相等性比较。FIELD()和ELT()互补。
分类至 MySQL
0条评论

MySQL函数FIND_IN_SET()用法

MySQL函数FIND_IN_SET语法定义如下:

  • 语法:FIND_IN_SET(str, strlist) 
  • 解释:如果字符串str位于由N个子字符串组成的字符串列表strlist中,则返回1到N范围内的值。 strlist列表是一系列子串以英文逗号(,)拼接而成的字符串。 如果第一个参数是常量字符串而第二个参数是SET类型的列,则FIND_IN_SET()函数被优化为使用位算术。 如果str不在strlist中,或者strlist是空字符串,则返回0。 如果任一参数为NULL,则返回NULL。 如果第一个参数包含英文逗号(,)字符,则此函数无法正常工作。

 

分类至 MySQL
0条评论

MySQL函数GROUP_CONCAT()用法

先来看看官方手册对 GROUP_CONCAT 说明:

此函数返回一个字符串,是查询结果集合中指定列非NULL值的串联。如果所有列都是NULL,则此函数返回NULL。完整语法如下:

GROUP_CONCAT([DISTINCT] expr [,expr ...]
             [ORDER BY {unsigned_integer | col_name | expr}
                 [ASC | DESC] [,col_name ...]]
             [SEPARATOR str_val])

GROUP_CONCAT 是一个聚合函数,通常跟 GROUP BY 一起使用。

分类至 MySQL
0条评论

PHP获取客户端真实IP

按顺序依次判断$_SERVER['HTTP_X_FORWARDED_FOR']、$_SERVER['HTTP_CLIENT_IP']、$_SERVER['REMOTE_ADDR']这三个变量,如果有值就马上返回。翻开PHP手册,查看$_SERVER数组的解释,你会发现,手册里居然没有HTTP_X_FORWARDED_FOR、HTTP_CLIENT_IP这两个元素,只有REMOTE_ADDR的解释。首先,$_SERVER数组以HTTP_开头的元素,是来自客户端的header头信息,也就是说,它们是客户端传给服务器的。因此,这些值是可以伪造的,是不安全的!但是,这并不代表它们就没有用处。

分类至 PHP
1条评论