
php
治荣
这个作者很懒,什么都没留下…
展开
-
session_start/header()/setcookie()与php缓冲区的关系
缓存:缓存是可以看得见的,例如有缓存文件,数据较持久缓冲:是一个临时存储区域,其数据都是运行在内存中,数据容易消失session_start、header()函数、setcookie()设置cookie等语句在使用的时候前边不能有输出,否则系统要报错。...原创 2019-06-04 21:45:25 · 351 阅读 · 0 评论 -
递归删除目录
当删除一个目录时,将目录内容删除掉之后,再删除目录本身。文件:unlink(文件地址)目录:还是递归!类似于 递归获取的实现:原创 2019-03-05 13:09:56 · 298 阅读 · 0 评论 -
目录操作 递归获取目录内容
将某个目录内包括其后代目录内全部内容读取到!通过函数的递归调用完成:当解决问题,发现问题可以拆解成小问题,小问题解决方案与大问题一致!此时需要递归调用!递归点:何时发生递归,读取到文件为目录时。先读取某个目录内容(不包含子目录的):判断每个读到的文件是否为目录:如果为目录,递归调用,将当前子目录作为参数传递。此时已经可以将所有内容读取:递归出口在哪里?当目录下没有子目录时...原创 2019-03-05 12:12:44 · 505 阅读 · 0 评论 -
目录操作 Mkdir opendir readdir closedir rename
创建Mkdir(目录地址, 权限, 是否递归创建)默认不支持递归创建:第三个参数写true:Tip:最近PHP增加的参数。第二个在windows被忽略!没用!在linux有用!删除删除结果= Rmdir(目录地址)不允许删除非空目录!获取目录内容句柄 = Opendir(目录地址);打开目录句柄。句柄:PHP程序与文件系统 数据流通道!文件名 = Read...原创 2019-03-05 10:54:49 · 324 阅读 · 0 评论 -
SESSION技术
基本概念使用很多的会话技术。COOKIE的劣势:会话数据的存储位置:浏览器端。带来的问题:会话数据的安全性。请求(响应)传输的会话数据量大。浏览器都会限制COOKIE的大小和数量。Session技术:会话数据的存储位置:服务器端。那么如何实现,区分不同的浏览器来存储会话数据。实现方式如下:在 服务器端,建立很多的会话数据区(session数据区)为 每个session会话数...原创 2019-02-25 16:17:42 · 333 阅读 · 0 评论 -
会话技术 cookie
在同一台浏览器,的多次请求周期内,持久性存储数据一种技术!基础:HTTP的无状态性。B/S 架构基于HTTP协议进行数据交互。HTTP请求/响应,是独立的,每次请求响应周期都是完全独立的。会话:想办法,将数据可以在多次请求周期内,传递存储下来。两种实现:Cookie(基础):Session:COOKIE技术基本原理允许 服务器端程序(PHP) 在 浏览器上存储数据 的一种技术。...原创 2019-02-25 16:02:41 · 307 阅读 · 0 评论 -
简单文件上传
上传: 文件从浏览器端传输到服务器端。浏览器与服务器的交互存在几种方式:请求,响应!数据由浏览器端传输到服务器端,发生在哪个阶段? 请求阶段。结论:文件上传是发生在请求阶段。请求是浏览器发出的,浏览器将请求数据传输到服务器端。因此,文件也是由浏览器上传到服务器端!表单:服务器端处理脚本:典型的表单提交流程:添加表单数据提交到服务器端:以上过程如下:当服务器PHP程序...原创 2019-02-28 14:04:04 · 315 阅读 · 0 评论 -
验证码 - 绘图技术
作用?防治计算机程序,向服务器发出请求从而达到恶意的目的:例如:登陆界面:暴力破解!论坛:灌水,刷帖!被采集:特点,快!提升 计算机请求的成本(时间,准确率)。计算机技术不能成本很低从 图片上识别信息!使用 表单中 增加验证码的方式,方式 计算机恶意请求服务器!实现技术:生成图片技术!验证时:将码值存储与session中!测试:PHP绘图技术:图像处理技术使用 GD...原创 2019-02-28 13:57:44 · 292 阅读 · 0 评论 -
static关键字的新用法和总结
static这个关键字,也可以像“self”一样,代表“当前类”,用于访问一个类的“静态属性或静态方法”;但,static,在应用中,更灵活,因此更常见!因为static,它代表的是“调用”当前方法的类,而不是“其代码所在的类”:self它就比较死板,只代表这个单词本身所在位置的所在类。...原创 2019-02-12 20:42:33 · 163 阅读 · 0 评论 -
序列化,反序列化技术,__sleep __wakeup __tostring __invoke()
含义:序列化:就是将一个变量所代表的“内存”数据,转换为“字符串”形式并持久保存在硬盘上的一种做法。反序列化:就是将序列化之后保存在硬盘上的“字符串数据”,恢复为其原来的内存形式的变量数据的一种做法。序列化的做法:$v1 = 123; //这是一个变量,代表任意的内存数据$s1 = serialize( $v1 ); //将任何类型的变量数据,转换为“字符串”file_put...原创 2019-02-12 20:27:00 · 1219 阅读 · 0 评论 -
php 类型约束(只支持在函数(或方法)的形参上,设定类型的约束目标)
什么叫类型约束?就是要求某个变量只能使用(接收,存储)某种指定的数据类型;php属于“弱类型语言”,通常不支持类型约束;相应的,强类型语言,类型约束却是其“基本特征”。php中,只支持局部的部分类型约束php中,只支持在函数(或方法)的形参上,设定类型的约束目标,形式如下:function 方法名(【要求使用的类型】p1,【要求使用的类型】p1 , 【要求使用的类型】p1,【要求使用...原创 2019-02-12 19:36:38 · 432 阅读 · 0 评论 -
其他数据类型转换为对象类型
PHP内置标准类php语言内部,有“很多现成的类”,其中有一个,被称为“内置标准类”。这个类“内部”可以认为什么都没有,类似这样:class stdclass{ }其作用,可以用于存储一些临时的简单的数据:$obj1->pp1 = 1;$obj1->port = ‘3306’;也可以用于类型转换时用于存储数据其他数据类型转换为对象类型,得到的结果是:内置标准类(st...原创 2019-02-12 19:20:25 · 966 阅读 · 0 评论 -
对象的复制(克隆),遍历
$obj1 = new A();$obj1->p1 = 11;$obj2 = $obj1; //值传递//则,现在有几个对象?——1个对象!当然:$obj3 = & $obj1;结果,还是一个对象!对象的克隆语法,就是用于将一个对象“制作”双份的语法,类似之前普通数据的“值传递”;语法:$obj2 = clone $obj1; //这样,就有一个...原创 2019-02-12 17:32:39 · 386 阅读 · 0 评论 -
文件操作 读写基本操作
读写。文件作为内容(数据)容器!写入长度(字节) = File_put_contents(文件地址, 内容);将内容写入文件!默认为替换写,将原内容清空,再写入!使用第三个参数FILE_APPEND表示追加写: 文件内容 = File_get_contents(文件地址);将内容从文件中读取!提示浏览器不解析\n换行的!函数 nl2br(); 将换行符转换为brUnlin...原创 2019-03-05 13:49:47 · 329 阅读 · 0 评论 -
文件并发操作(文件锁)
默认的,PHP的文件操作函数,不是阻塞状态。自由操作状态。当需要,一个脚本操作而需要阻塞另外的脚本操作时,需要用到文件锁。锁操作流程:先加锁,检测锁是否加成功,如果成功再使用!锁定类型:读锁: s-Lock(share-lock)共享锁,读操作前,期望增加的锁定。导致,允许并发读,阻塞额外的写操作。写锁: x-lock(exclusive-lock)排他锁,独占锁,写操作前,尝试添加的...原创 2019-03-05 16:10:57 · 1016 阅读 · 0 评论 -
HTTP知识以及返回来源页
协议,约定,规范,一套语法!HTTP: 超文件传输协议。应用层的协议。规范 浏览器与服务器 间数据交互格式!规范:请求数据格式,和 响应数据格式。请求数据格式以上就是典型的get请求的数据,浏览器(请求代理端)需要,将数据整理成以上的格式,向服务器端发送才可以!以上数据共2个部分:请求行request-line, 请求头request-header还有上面的数据没有展示的部分...原创 2019-03-05 16:50:02 · 327 阅读 · 0 评论 -
纯静态化
纯静态化Smarty的缓存技术就是静态化的体现。1.什么是纯静态化把php执行、生成好的内容制作为一个“静态页面”,该制作过程就是静态化。2. 为什么使用静态化节省 php、mysql等服务器资源节省用户等待时间,访问速度快搜索引擎(百度)更喜欢收录“静态页面”3. 实现静态化php代码执行---->缓冲区---->被抓取----->生成静态页面一个简答的...原创 2019-06-01 19:43:42 · 286 阅读 · 0 评论 -
命名空间
1.什么是命名空间在php程序语言里边,语法规则要求同名称的函数、类名、常量在一个请求里边不允许出现多次。如果有的应用程序不得已必须出现多个同名的 函数、类名、常量,那么我们就可以把它们放到不同的空间里边做请求。这个不同的空间就称作“命名空间”。同一个请求里边定义两个同名的函数getInfo(),右图由于有使用命名空间,使得程序可以正常执行。同名称的两个函数在同一个空间进行访问系统要报错...原创 2019-03-21 20:32:14 · 1914 阅读 · 1 评论 -
关于操作php文件载入顺序时会出现的bug以及载入顺序问题
一个文件夹中有三个文件aaa.php,bbb.php,ccc.php①操作过程中遇到的一个bugaaa.php中的代码如果是这样header('Content-Type: text/html; charset=utf-8');class A{ public function a(){ echo '我是小坏蛋'; }}$obj=new A();那么直接就会出现而别的类在...原创 2019-03-08 10:57:36 · 279 阅读 · 0 评论 -
换行符
PHP_EOL:换行符 常量Windows:\n\rLinux: \nMac:\r原创 2019-03-09 17:01:14 · 258 阅读 · 0 评论 -
项目安全(三种攻击方式),批量操作html标签转义
三个安全问题:恶意攻击SQL注入XSS攻击(1).恶意攻击请求:get方式,通过url,dos攻击,通常是从硬件和网络的角度,防火墙。(程序员不用管)post方式,通过表单提交,穷举法,恶意破解,灌水。从程序的角度来防止。可以使用验证码在我们的项目中添加验证码。(2).SQL注入攻击在请求的时候,输入一些特殊的字符,然后构造可以执行的sql语句,达到攻击的目的。Post请求...原创 2019-03-09 15:45:09 · 429 阅读 · 0 评论 -
header函数操作响应头的一些做法(控制浏览器缓存,文件下载)
控制浏览器缓存(这个函数表示在这次响应的有效期为3秒,3秒之后才会再次响应)表示方式,特定格式的GMT时间:Expires控制响应的有效期的。Fri, 14 Aug 2015 11:27:39 GMTDate()将一个时间戳,格式化成本地时间!Gmdate()将一个时间戳,格式化成GMT时间。如何告知浏览器,不要缓存。文件下载HTTP下载:告知浏览器,将浏览器接受到的响应主...原创 2019-03-06 11:12:36 · 347 阅读 · 0 评论 -
I18n程序,国际化程序(多语言格式编程)
多语言程序i18n(其来源是英文单词 internationalization的首末字符i和n,18为中间的字符数)是“国际化”的简称项目支持多种语言的展示。为不同的浏览器需求展示不同的语言。核心:如何知道浏览器需要哪种语言?浏览器请求时携带Accept-Language头,表示可以接受的语言!项目支持多语言?通过不同的翻译文件完成的。Strpos(’abcda’, ‘a’) = ...原创 2019-03-05 20:56:56 · 621 阅读 · 0 评论 -
文件上传错误类型
错误类型Error,表示错误0:没有错误1:文件超过了PHP中对上传文件大小的设置2:文件过大,超过表单中元素MAX_FILE_SIZE精确到每个表单层面!3:文件没有上传完4:没有上传文件5:上传的文件大小为0,上传的为空文件约定,不是错误!PHP 没有定义 5 这个错!6:临时上传目录未找到PHP可以更改临时目录:Php.ini7:临时文件写入失败,磁盘空间...原创 2019-03-02 16:28:46 · 2498 阅读 · 0 评论 -
多文件上传
$_FILES结构。情况一表单文件域元素name值不同!在$_FILES中,每个元素,对应一个5个元素的数组:此时,需要处理那个,就使用哪个数组即可!情况二:文件域name相关,数组方式命名此时$_FILES的结构如下:将 相关的整理到一个元素中,该元素对应 5个元素(name, type, tmp_name, error, size)的数组。每个name,对应三个值每个ty...原创 2019-03-02 16:18:53 · 453 阅读 · 0 评论 -
文件类型的检查
安全性对类型的限制$_FILES中的type的信息,不是PHP检测出来的,而是浏览器提供的。因此:PHP也需要检测文件类型才可以,不能完全信赖浏览器数据!PHP检测文件的MIME类型(文件内容中,存储相关的类型)PHP提供 fileinfo 相关函数(方法),来完成开启fileinfo扩展Apache httpd restart提供了面向对象的语法:获取MIME类型过程如...原创 2019-03-02 16:12:55 · 679 阅读 · 0 评论 -
分子目录存储上传文件
为了减少 一个目录中文件过多!划分成不同的子目录:划分方案:按照业务逻辑: 商品图片,用户logo。指定不同的upload_path即可文件数量: 每个目录存储2000个文件,数量达到,则创建新子目录!时间划分: 每个月(星期)使用一个上传子目录.时间划分:获取当前应该使用的子目录名:date()判断需要的目录是否存在:is_dir()是否为一个目录创建需要的目录:mkdir...原创 2019-03-02 15:54:20 · 163 阅读 · 0 评论 -
典型文件上传
去判断 临时上传文件,是否满足 我们的业务逻辑需求!满足,再移动!需要判断:是否存在错误,类型是否符合要求,大小是否符合要求目标文件生成合理的名字编码实现当前上传临时文件信息作为参数判断是否有错误判断文件类型两种表示方式:后缀名(.jpg) 和 MIME(image/jpeg)后缀名: 在文件系统中,表示文件类型的方式!当文件存储在磁盘上时,表示文件类型的方式!MIME...原创 2019-03-01 21:10:21 · 138 阅读 · 0 评论 -
类的自动加载
含义:当某行代码需要一个类的时候,php的内部机制可以做到“自动加载该类文件”,以满足该行需要一个类的这种需求。什么时候需要一个类?1,new一个对象的时候;2,使用一个类的静态方法的时候;3,定义一个类(B)并以另一个类(A)作为父类的时候;条件和要求1, 当需要一个类的时候,就会自动调用某个函数(默认是__autoload),并传入所需要的类的名字2, 一个类应该保存到一个独...原创 2019-02-12 17:29:57 · 560 阅读 · 0 评论 -
pdo中的预处理语法
什么叫预处理语法就是,为了“重复执行”多条结构类似的sql语句,而将该sql语句的形式“进行预先处理”(编译);该sql语句的“形式”中,含有“未给定的数据项”。然后,到正式执行的时候,只要给定相应的形式上的“数据项”,就可以更快速方便执行。比如(有两种预定义语法):语法1:$sql = “select * from tab where id = ? “; //这里这个“?...原创 2019-02-23 11:21:52 · 1188 阅读 · 0 评论 -
函数的系统函数,与类有关的系统函数,与对象有关的系统函数,与类有关的运算符:
1: func_get_args(); //获取实参数据列表,成为一个数组2: func_get_arg($i); //获取第i个实参数据,i个实参数据,i个实参数据,i从0开始算起;3:func_num_args(); //获取实参的数量(个数)...原创 2019-01-26 16:41:45 · 153 阅读 · 0 评论 -
PHP+MySQL数据库编程的步骤
第一步:PHP连接MySQL服务器第二步:选择当前要操作的数据库第三步:设置请求或返回的数据的字符集第四步:执行各种SQL语句。PHP连接MySQL服务器1、mysql_connect()描述:PHP连接MySQL服务器。语法:resource $link = mysql_connect($hostname,$username,$password)//$hostname:是MyS...原创 2019-01-15 20:09:03 · 2785 阅读 · 0 评论 -
PHP常量,预定义常量,魔术常量
常量定义的方法(两种)(1)define(“PI”,3.14) define(“SCHOOL”,“传智博客”)(2)const CC1=1234; const CC2=“abcd”;const语法只能用在“顶层代码”位置,而不能用在大括号的位置,比如:const C1 = 1; //okif ( v1>5)constc2=2;//错误的!!!29常量的使用方法(两种)(...原创 2019-01-21 12:37:47 · 266 阅读 · 0 评论 -
错误的分级,自定义触发,错误报告的显示问题,错误日志的记录问题,自定义错误处理器
系统常见错误:E_ERROR: 致命错误E_WARNING: 警告性错误E_NOTICE: 提示性错误用户可自定义的错误:E_USER_ERROR: 自定义致命错误E_USER_WARNING: 自定义警告性错误E_USER_NOTICE: 自定义提示性错误其他:E_STRICT: 严谨性语法检查错误E_ALL 代表“所有错误”。...原创 2019-01-25 20:00:12 · 432 阅读 · 0 评论 -
$_SERVER变量
大约有30个左右的信息,我们只要知道其中5个左右!主要有:$_SERVER[‘REMOTE_ADDR’]:获取访问者的ip地址$_SERVER[‘SERVER_ADDR’]:获取服务器所在的ip地址$_SERVER[‘SERVER_NAME’]:获取服务器的名字,其实就是站点设置中的servername$_SERVER[‘DOCUMENT_ROOT’]:获取站点的真实物理地址,其实就是站点...原创 2019-01-20 20:07:53 · 150 阅读 · 0 评论 -
PHP错误处理
原创 2019-01-20 18:04:06 · 116 阅读 · 0 评论 -
break中断循环,continue继续循环
含义:中断。换句话说:break可以用于中断各种循环,以及switch语句。一般情况下,需要在break语句之前,加一个条件判断。语法:break [n]参数:n为可选参数。n表示跳出第几层循环。默认值为1。举例:break; //跳出当前循环break 1; //跳出当前循环break 2; //跳出两层循环break 3; //跳出三层循环continue同bre...原创 2019-01-15 15:27:47 · 694 阅读 · 0 评论 -
PHP数据类型转换
<?PHP $test_var = 8.23; echo $test_var; // Displays "8.23" echo (string)$test_var; // Displays "8.23" echo (int) $test_var; // Displays "8&原创 2019-01-15 15:27:58 · 80 阅读 · 0 评论 -
PHP数据类型转换
变量之间的运算,必须是同类型的。如果类型不同,则必须转成同类型,然后再运算。变量类型的转换:系统自动转换、强制转换(手动转换)1、其它类型转成布尔型2、其它类型转成数值型3、其它类型转成字符型(了解)...原创 2019-01-14 16:39:43 · 121 阅读 · 0 评论 -
PHP empty() 函数
以下的东西被认为是空的:“” (空字符串)0 (作为整数的0)0.0 (作为浮点数的0)“0” (作为字符串的0)NULLFALSEarray() (一个空数组)$var; (一个声明了,但是没有值的变量)...原创 2019-01-14 16:31:50 · 1467 阅读 · 0 评论