PHP反序列化总结
之前遇到过很多次php反序列化相关的内容,总结一下。
(反)序列化给我们传递对象提供了一种简单的方法。serialize()将一个对象转换成一个字符串,unserialize()将字符串还原为一个对象,在PHP应用中,序列化和反序列化一般用做缓存,比如session缓存,cookie等。
常见的PHP魔术方法:
__construct: 在创建对象时候初始 ...
php MySQL 查询数据
以下为在MySQL数据库中查询数据通用的 SELECT 语法:
SELECT column_name,column_name
FROM table_name
[WHERE Clause]
[LIMIT N][ OFFSET M]
使用 mysqli_fetch_array MYSQLI_ASSOC 参数获取数据:
<?php
$dbhost = 'localhost:3306'; // mysql服务器主机地址
$dbuser = 'root'; // mysql用户名
$db ...
PHP实现链表
目录链表php实现对链表的增删改查操作利用链表实现栈链表实现队列
链表
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。
形式:单链表、双链表、跳表(redis 集合数据结构就是跳表 ...
PHP-redis中文文档
phpredis是php的一个扩展,效率是相当高有链表排序功能,对创建内存级的模块业务关系
很有用;以下是redis官方提供的命令使用技巧:
下载地址如下:
https://github.com/owlient/phpredis(支持redis 2.0.4)
Redis::__construct构造函数$redis = new Redis();connect, open 链接red ...
PHP实现单例模式
单例模式的定义:保证一个类只有一个实例,并提供一个访问它的全局访问点。
PHP实现单例模式:
class Singleton
{
//创建静态私有的变量保存该类对象
static private $instance;
//防止使用new直接创建对象
private function __construct(){}
//防止使用clone克隆对象
private function __clone ...
PHP性能调优---PHP-FPM配置及使用总结
转载至: https://www.cnblogs.com/kenshinobiy/p/7470635.html
PHP-FPM配置及使用总结:
php-FPM是一个PHP FastCGI的管理器,它实际上就是PHP源代码的补丁,旨在将FastCGI进程管理引进到PHP软件包中,我们必须将其patch到PHP源代码中,然后再行编译才能使用。而现在我们可以在PHP 5.3.2及更新版本中直接开启并 ...
[PHP] PHP汉字转拼音的方法
PHP汉字转拼音的方法
代码如下:
<?php
// 此类是依据ASCII码转换,GB2312库对多音字也无能为力。
// GB2312标准共收录6763个汉字,不在范围内的汉字是无法转换,如:中国前总理***的“*”字。
class pinyin{
public static function utf8_to($s, $isfirst = false) {
return self::to(self::utf8_to_gb2312 ...
PHP的哈希表实现
PHP的哈希实现
PHP内核中的哈希表是十分重要的数据结构,PHP的大部分的语言特性都是基于哈希表实现的, 例如:变量的作用域、函数表、类的属性、方法等,Zend引擎内部的很多数据都是保存在哈希表中的。
数据结构及说明
上一节提到PHP中的哈希表是使用拉链法来解决冲突的,具体点讲就是使用链表来存储哈希到同一个槽位的数据 ...
php扩展安装方式
目录扩展安装php源码编译安装PEAR、PECLphpize 源码安装
扩展安装
以php安装swoole扩展为例。
php源码编译安装
下载源码包并编译安装
$ wget http://cn2.php.net/distributions/php7-1.0.tar.gz
$ tar -zxvf php7-1.0.tar.gz
$ cd php7-1.0
$ ./configure --prefix=$HOME/php7/book/php7-1.0/output --enable-fpm
$ make & ...
PHP常用的 五种设计模式及应用场景
设计模式六大原则
开放封闭原则:一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。
里氏替换原则:所有引用基类的地方必须能透明地使用其子类的对象.
依赖倒置原则:高层模块不应该依赖低层模块,二者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。
单一职责原则:不要存在多于一个导致类变更的原因 ...
PHP反序列化从初级到高级利用篇
0x00 知识点
自从 Orange 在 2017年的 hitcon 出了一个 0day 的 php phar:// 反序列化给整个安全界开启了新世界的大门以后,php 反序列化这个漏洞就逐渐升温,没想到后来 2018 年 blackhat 的议题上这个问题再次被提及,利用的还是 Orange 的思路(我只能 orz),到现在 phar:// 反序列化已经成为了各大 CTF 炙手可热的思路, ...
php artisan 命令列表
php artisan 命令列表
命令获取
上面的翻译内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
命令 说明 备注
php artisan make:r ...
PHP注释标记整理
什么是注释标记
我们在平常写代码或看别人写的代码时, 在方法的说明注释中经常会有这样的注释:
/**
* @param $num
* @return array
*/
上面的@param @return 就是注释标记
注释标记用于生成文档, param指明需要接收的参数, return指明返回值
在使用 phpDocumentor 等工具生成文档时, 会识别相关注释, 而且IDE也会识别, ...
PHP——仿造微信OpenId
前言
这就是拿来玩的,其次假的就是假的,成不了真的!
代码
首先我观察了两个公众号关注后的生成openid的规则,发现了以下规则
1. OpenID都是28位
2. 前六位是有规律的
然后接下来就按着自己找的规律生成下就阔以了,之所以代码中会存在$ch的这个变量是因为这个公众号,关注后生成的openid第七位是字母,而且大小写均有,所以就 ...
Mac入门--通过Homebrew安装PHP(新)
1 首先安装homebrew,安装过的话更新
安装:homebrew官网地址:https://brew.sh/index_zh-cn.html。或者直接复制下面代码:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
更新:
brew update
或者使用brew doctor检测是否存在冲突(推荐)
brew update && br ...
全面解读php-正则表达式
一、正则表达式基础内容
注:
1、通用原子:
\d : 数字。 \D : 除了数字。
\w : 数字,字母,下划线。\W : 除了数字,字母,下划线。
\s : 空白符 。 \S : 除了空白符 。
2、元字符:
. :除了换行以外的所有字符
* : 匹配前面的内容出现 0 次及以上。
? : 匹配前面的内容出现 0 次或 1 次。
...
PHP中的Cookie
1.1原理:
Cookie是保存在客户端的信息包(一个文件)
1.客户端向服务器发送请求
2.服务器将值放到响应头中发送到客户端
3.浏览器自动的将信息放到请求投资带到服务器
1.2设置Cookie
<?php
setcookie('na ...
Linux CentOS完全卸载PHP
很无语,CentOS居然php版本才5.1.6,很多开源的CMS无法安装。
查看php版本命令:
#php -v
下面的命令是删除不干净的
#yum remove php
因为使用这个命令以后再用
#php -v
还是会看到有版本信息的。。。。。
必须强制删除,使用下面命令查看全部php软件包
#rpm -qa|grep php
提示如 ...
centos6.5安装php环境php apache mysql
以下全部是root用户登录centos
1.安装apache
查看是否已经安装#rpm -qa httpd
命令安装#yum install httpd -y
设置开机启动chkconfig httpd on
启动软件service httpd start
此时浏览器输入服务器ip地址显示无法访问,因为没有设置服务器防火墙放行80端口。
修改防火墙配置文件,加入80端口#vi /etc/sysconfig/iptables
按i ...
php 错误提示开启
开发环境项目,通常需要错误提示:php.ini文件,设置 display_errors = On 项目上线以后,当然不想把错误提示显示。
一般不直接修改php.ini文件,下面两行代码直接加入报错php文件:
ini_set("display_errors", "On");//打开错误提示
ini_set("error_reporting",E_ALL);//显示所有错误
error_reporting错误级别包 ...