PHP系列
文章平均质量分 93
php编程
anansec
一名混迹安全行业的打工仔
展开
-
PHP实现文件上传
时间会让人遗忘一切,而整理遗忘的知识会让你在未来的路上不迷茫!很多网站都需要实现文件上传功能,这个功能说大不大,说小不小,但是如果文件上传出现漏洞,可能会导致网站的控制权被hack拿下,所有文件上传的控制要做到严格严格再严格,为了更加深刻研究文件上传漏洞的原理,本文主要编写了文件上传的基本功能,只是简单的做了一个校验。先看我的前端页面,这里额前端代码和原来有点小小的区别,那就是采用二进制传输的...原创 2019-04-10 23:54:33 · 25848 阅读 · 28 评论 -
PHP类基础(6)之封装类
private 类型的属性不能直接访问,需要通过特定接口进行访问__get(属性名):外部访问不存在或私有属性时自动调用__set(属性,值):外部给类中不存在或不可见属性赋值时自动调用__isset(属性名):外部检测某个私有属性是否存在时自动调用__unset(属性名):在类外部销毁某个私有属性时自动调用它<?php //对象的封装:主要是指对象属性的封装,通过priva...原创 2019-10-27 21:30:29 · 351 阅读 · 0 评论 -
PHP类基础(7)之继承与多态
类的继承通过关键字extends实现,因为php是单继承语言,所以只能继承一个类类的多态,通过重写父类方法实现子类可以通过关键字parent加范围限定符来继承父级的属性与方法,如parent:__construct($name);子类继承父类的方法权限不能低于父类,如父类使用private,子类使用protected,父类使用protected ,子类使用public<?php ...原创 2019-10-27 21:30:50 · 302 阅读 · 0 评论 -
PHP类基础(8)之静态成员的创建与访问
访问控制符:public》》protected》》private成员状态符:self/parent/static私有静态属性只能在类内部访问在类中访问静态成员不能使用伪遍历$this,需要使用self::静态属性只允许静态方法访问外部(本类和子类访问都是)访问静态成员必须使用:类名::$属性名外部对象不可以访问静态属性,可以访问静态方法instanceof 判断实例对象是否是某类的...原创 2019-10-27 21:31:01 · 366 阅读 · 0 评论 -
PHP类基础(9)之self/parent/static
self::与当前类静态绑定parent::与父类进行静态绑定static::与调用类进行绑定static与self,parent是不一样的,它对应的类是动态设置的,由调用类决定,如果说self和parent是静态绑定到类的话,static就是动态绑定到类,叫做:静态延迟绑定(后期静态绑定)静态绑定(self/parsent)它们与类的绑定是在代码的编译阶段进行,而static与类的绑定...原创 2019-10-27 21:31:12 · 246 阅读 · 0 评论 -
PHP类基础(10)之克隆
引用赋值:使用同一地址,只要改变其中任一的值,另一个值也被改变克隆:将原来的值复制一份出来。两个值完全独立,克隆完成后互不影响克隆关键字:clone ,示例:$obj1 = clone $obj;<?php class Demo{ public $name = 'peter';}$obj1 = new Demo;$obj2 = $obj1; //对象都是引用赋值$o...原创 2019-10-27 21:31:25 · 195 阅读 · 0 评论 -
PHP类基础(11)之处理不存在的方法
调用不存在的方法时,在类中设置魔术方法__call()时,会自动调用__call()调用不存在的静态方法时,在类中设置魔术方法__callstatic(),会自动调用__callstatic()<?php class Demo{ public function __call($method,$ages){ // 遍历参数$args $var = ''; foreach...原创 2019-10-27 21:31:34 · 1759 阅读 · 0 评论 -
PHP类基础(12)之序列化和反序列化
序列化(serialize):将内存的变量数据,“保存”到文件中的持久数据的过程反序列化(unserialize):将序列化过存储到文件中的数据,恢复到程序代码的变量表示形式的过程。简化就是:将文件变为内存;<?php //对象的序列化// 为什么对象序列化,因为对象没有对应实体,内存数据是“稍纵即逝”的;——通常,程序执行结束,立即全部销毁。//序列化就是将对象转为二进制的字...原创 2019-10-27 21:31:45 · 191 阅读 · 0 评论 -
PHP类基础(13)之抽象方法与抽象类的申明与使用
抽象类就是子类的一个模板,抽象类不能单独使用,不能被实例化,必须通过子类来进行调用抽象类中的抽象方法必须在子类中全部实现才可以<?php //抽象方法与抽象类的声明与使用abstract class Demo{//抽象方法不允许实例化332 public $name; public function __construct($name){ $this->name=$...原创 2019-10-27 21:31:54 · 239 阅读 · 0 评论 -
PHP类基础(14)之接口
接口:一种特殊的类接口成员:属性(类常量) ,方法(抽象方法)接口不允许实例化,但可以被继承,所以需要创建一个类来继承接口,并实现接口中的全部方法//接口1:Demo1interface Demo1{ const SITENAME = '小楠博客'; //接口成员方法必须是抽象方法,而且访问控制符必须是public(默认就是public,所以可以省略),abstract也可以忽略...原创 2019-10-27 21:32:10 · 206 阅读 · 0 评论 -
PHP类基础(15)之trait(方法集)
类中的代码可分为两部分:自己写的私有代码 从别处继承可导入的公共代码类中的公共或外部代码主要来源:父类trait类(方法集)trait类可以互相嵌套<?php //创建一个trait类trait Test1{ public $name = '小楠博客';//trait类中可以有属性,不能有类常量 public function hello1(){ ...原创 2019-10-27 21:32:21 · 202 阅读 · 0 评论 -
PHP类基础(16)之命名空间
php中的命名空间:是一种代码封装技术,能够有效避免各种名称的重复namespace:一种流行的代码封装技术命名空间主要针对脚本中的函数、常量和类成员命名空间可以进行分层命名空间可以互相引用如果两个命名空间中的类重名那可以进行别名处理<?php //php中的命名空间:代码封装技术// namespace 一种流行的代码封装技术//命名空间针对脚本中的函数、常量和类成员...原创 2019-10-27 21:32:34 · 404 阅读 · 0 评论 -
PHP类基础(17)之遍历对象属性
通过foreach遍历对象public属性通过public方法遍历对象私有和受保护的属性在方法中通过self::$属性名 = $属性名来访问静态属性在外部通过 类名::$属性名 访问静态属性<?php //php中的对象遍历//通常遍历的时外部可见的public属性//使用foreach($obect as $key=> $value){}class Demo{ ...原创 2019-10-27 21:32:48 · 847 阅读 · 0 评论 -
PHP伪类型
更新知识盲区,喜欢看博客的我不经意间看到伪类型几个字眼,之前虽然学习过,但是深表遗憾,已经忘的一塌糊涂,所以今天进行一个简单的记录1.mixedmixed 表明一个参数可以接受多种不同的(但不一定是所有的)类型。例如, gettype() 可以接受所有的 PHP 类型。2.numbernumber 说明一个参数可以是 integer 或者 float。3.callback如call_...原创 2019-09-09 22:51:12 · 332 阅读 · 0 评论 -
php类基础(5)之自动加载类
测试类,要求类名与文件名一致<?php class test_class{ public $name; //构造方法,实例化类的时候,自动调用,通常用来初始化对象 public function __construct($name='PHP学习'){ $this->name = $name; }} ?>首先通过require之类的包含函数测试类是否可以正常...原创 2019-10-27 21:30:18 · 200 阅读 · 0 评论 -
php类基础(4)之构造函数与析构函数
<?php // 构造方法:用来实例化类,创建对象时自动调用class Staff{ public $name; //姓名 public $age; //年龄 public $salary; //薪水 //构造方法使用固定方法名: __construct() public function __construct($name,$age,$salary){ $thi...原创 2019-10-27 21:29:38 · 231 阅读 · 0 评论 -
PHP获取访问ip自定义函数
function getip(){ if (getenv ( "HTTP_CLIENT_IP" ) && strcasecmp ( getenv ( "HTTP_CLIENT_IP" ), "unknown" )) $ip = getenv ( "HTTP_CLIENT_IP" ); else if (getenv ( "HTTP_X_FORWARDED...原创 2019-04-01 19:40:32 · 227 阅读 · 0 评论 -
PHP脚本生成验证码——附源码
验证码在开发中已经属于必需品,所以想要成功走向开发之路,你必须会生成验证码,php有gd库,专门用来绘图,所以在生成验证码时,你需要了解一下gd库原创 2019-04-02 00:11:10 · 784 阅读 · 0 评论 -
PHP中select查询应用天龙八部
时间会让人遗忘一切,而整理遗忘的知识会让你在未来的路上不迷茫!今天主要整理php连接数据库执行执行查询的几个关键步骤,这点代码在用户登录时会被使用。关键代码已经全部注释,有点基础的同学都可以看懂。简单做了一个登录页面,将关键代码应用到了本次的登录测试中,首先是前端页面。这个页面我起名为login.php<!DOCTYPE html><html><head&g...原创 2019-04-09 00:01:04 · 254 阅读 · 0 评论 -
PHP中增删改应用“六脉神剑”
时间会让人遗忘一切,而整理遗忘的知识会让你在未来的路上不迷茫!今天整理的主要内容是PHP进行执行数据库增删改的关键语句,今天整理的代码都是php进行增删改使用的主要语句,所以需要熟练掌握。今天主要利用插入语句编写了一个留言板,结合“天龙八部”将留言内容将内容显示在留言框下方。先来看我的前端页面(我把查询留言的php代码也写在了前端)<!DOCTYPE html><html...原创 2019-04-09 22:07:29 · 320 阅读 · 0 评论 -
PHP浅谈正则
好久没有发表文章,今天心情好,发一篇。首先,我会将详细的参考表放在文章的底部,正文中呢,会拿一些较简单的内容来介绍正则表达式。在正文结束部分呢,也写了三个经典案例作为本次入门的练习,希望能为各位读者提供帮助先介绍两个函数1、preg_match($pattern, $ subject, $matches) 返回第一次的匹配结果2、preg_match_all($pattern,...原创 2019-07-17 17:58:57 · 239 阅读 · 0 评论 -
用一页代码解释PHP类
周六被一位大佬带着整理了一下PHP相关知识,下面这段代码主要体现了PHP类,以及类的普通成员、静态成员,类方法以及静态方法,以及对象对类成员的各种调用情况,在此一个笔记,待时间空闲,再做详细整理!<?php class Person{ //定义成员变量 var $name; var $gender; static $type; // 静态方法(即可以通过对象调用也可以同过类调用...原创 2019-07-21 21:50:00 · 205 阅读 · 0 评论 -
php之PDO示例
PDO解决的问题是能够解决php连接各种类型的数据库而不需要修改太多的代码。<?php //定义PDO来连接数据的6大数据$dbms = 'mysql';$db_host = 'localhost';$db_user = 'root';$db_pass = 'root';$db_name = 'study';$db_port = '3306';//PDO连接数据库$ds...原创 2019-07-21 21:58:38 · 265 阅读 · 0 评论 -
PHP之PDO预编译防SQL注入
很多对代码不熟悉的朋友总觉得PDO能够有效防止SQL注入,其实真正防止SQL注入的是php预处理,你可以使用mysqli面向对象预处理、面向过程预处理,也可以使用PDO预处理,其实真正起作用的还是预处理。下面的代码会表达出PDO预处理的精髓!$dbms = 'mysql';$db_host = 'localhost';$db_user = 'root';$db_pass = 'root';...原创 2019-07-21 22:10:24 · 2764 阅读 · 0 评论 -
PHP之mysqli面向对象预处理
php和老基友MySQL合作防止sql注入的有效方法就是mysqli面向对象预处理,以下代码就是最好的示例,希望对各位读者有所帮助!<?php //定义连接数据库的关键数据$dbms = 'mysql';$db_host = 'localhost';$db_user = 'root';$db_pass = 'root';$db_name = 'study';$db_port ...原创 2019-07-21 22:21:37 · 539 阅读 · 0 评论 -
Sublime安装插件(新版安装方法)
Sublime十款超神编辑器,因为它的可扩展性实在是太棒了,今天我们就一起走进Sublime安装插件的快乐中,当然,我不会做一个安装所有插件的教程,因为所有的插件安装方法都一样,这里我已Emmet的安装方法来进行示例!前提,我这里安装的是新版的submit,如果你是旧版的可能没有我这么简答第一步:按装Control,因为只有安装好control以后才能进行插件扩展,在菜单栏中找到Tools的子...原创 2019-08-29 10:49:15 · 1181 阅读 · 0 评论 -
PHP类基础(1)
<?php /*1.1面向对象程序设计(OOP)1.2OOP是编程思想,不是技术1.3学习目标 基本语法 编程思想1.4类与对象 类是生成对象的模板 对象时类的一个实例注:面向对象是现代编程的基础*///类的声明与内部属性和方法的定义// class/public/private/protected/$this/newclass Demo //类名必须符合php...原创 2019-10-27 21:28:42 · 183 阅读 · 0 评论 -
PHP类基础(2)之生成对象的6种方法
<?php //生成对象的6种方法class Demo1{ public $name = 'PHP中文网'; public function getName(){ return $this->name; } public function getObj(){ return new self(); } public function getStatic(){ ...原创 2019-10-27 21:28:56 · 341 阅读 · 0 评论 -
PHP类基础(3)之类常量
<?php class Demo{ //类常量就是它的值在类中始终不变的量 //类常量是用const 关键字,不要加$,必须初始化 const siteName = 'php中文网'; //类常量从php5.3+开始支持nowdoc语法 const domain = <<< 'EOT'<a href="">www.php.cn<a>...原创 2019-10-27 21:29:09 · 354 阅读 · 0 评论 -
PHP之函数从入门到精通
<?php header("content-type:text/html;charset=utf-8");echo mt_rand(1000,9999);//生成随机数echo "<hr />";echo strlen('KING123').'<br>';//获取指定字符串的长度echo strtolower('KING').'<br>';//...原创 2019-10-27 21:29:22 · 222 阅读 · 0 评论