php核心学问要点

WBOY
Release: 2016-06-13 12:28:29
Original
868 people have browsed it

php核心知识要点

Php:脚本语言,网站建设,服务器端运行

PHP定义:一种服务器端的 HTML 脚本/编程语言,是一种简单的、面向对象的、解释型的、健壮的、安全的、性能非常之高的、独立于架构的、可移植的、动态的脚本语言。是一种广泛用于 Open Source(开放源代码)的尤其适合 Web 开发并可以嵌入 HTML 的多用途脚本语言。它的语法接近 C,Java 和 Perl,而且容易学习。该语言让 Web 开发人员快速的书写动态生成的网页。

PHP简介:Rasmus Lerdorf发展历程(1994:1.0个人perl,1996:2.0C底层,1998:3.0zendEngine,2000:4.0session+输出缓冲等,2004:5.0zend引擎2代),平台支持(window,Linux,UNIX),数据库支持(Sqlserver,mysql,Oracle,Access),开发环境(Apache2,mysql,php)

服务器:软件,常见服务(HTTP,FTP,MySQL,telnet等)

软件结构:c\s,b\s,PHP地位

Web访问:IP,域名,hosts,域名服务器,网站,web访问

原数据保存:php文件,数据库文件

搭建web服务器:

  Wamp,lamp,Apache安装(www.apache.org)

  MySQL安装

  PHP安装(无中文路径,CMD执行php.exe -f,VC6和VC9),配置(Apache加载PHP模块:LoadModule php5_module “PHP5apachedll路径”;增加php处理:AddType application/x-httpd-php .php;加载php配置文件:windows,Apache配置文件加载PHPIniDir “PHP配置文件路径”;配置PHP时区:date.timezone)

  Php操作数据库:PHP开启MySQL扩展,指定扩展目录(extension_dir)

  Web运行原理:静态,动态

  虚拟主机配置:基于域名虚拟主机,包含vhost配置,编辑虚拟vhost文件(VirtualHost,ServerName,DocumentRoot),重启,修改hosts文件,localhost重配

 

PHP脚本执行:读入源程序,zendEngine(词法分析,语法分析),生成opcode,执行opcode,解释,与编译的区别

PHP工作:脚本(服务端脚本,需要web服务器和浏览器),命令行脚本

基本语法:脚本语言(嵌入html),PHP处理(标记识别),标记(默认,,非默认,需开启;不建议使用),最末尾标记可以忽略(建议忽略:Ajax返回,节省流量),PHP语句(分号结束,最后一条可以不加)

变量:$符号,有效变量名(字母或者下划线开始,大小写敏感),变量增删改查(unset断开连接),命名规则(驼峰法,下划线)

常量:定义(define),直接使用,特点(不能修改,区分大小写,不能删除,常量值只能是标量,命名与变量同,无$),常量判断(defined),输出(constant(‘常量名’))

PHP注释:行注释,块注释

预定义变量:$_POST,$_GET,$_REQUEST,$_FILES,$_SESSION,$_COOKIE,$GLOBALS,$_SERVER,$_ENV

预定义常量:__FILE__,__LINE__,__DIR__,__FUNCTION__,__METHOD__,PHP_OS,PHP_VERSION,PHP_INT_SIZE,PHP_INT_MAX

可变变量

传值:值传递,引用传递

数据类型:PHP若类型,八大数据类型(整型,浮点型,布尔型,字符型,数组型,对象型,资源型,空型),三大类(标量,复合,特殊)

整型:十进制,八进制(0),十六进制(0x),指定进制输出(printf,%d,%o,%x),整型取值范围(PHP_INT_SIZE,PHP_INT_MAX),字节,位,进制转换(十转其他,除取余反取;其他转十,求幂),整型溢出(浮点型),时间戳(格林威治时间,time,date)

浮点型:保留小数输出(printf(‘%.2f’),float,double

布尔型:真假,TRUE,FALSE(非0),布尔值输出使用var_dump,FALSE(FALSE,0,0.0,’’,’0’,空数组,null值)

字符串:单引号,双引号,区别(解析变量,转义,{},字符串数组),定界符(初始标记和结束独占一行,结束标记顶格,解析变量,转义,实际应用xml)

 

运算符:算术运算符(+,-,*,/,%),赋值运算符(=,+=,-=,*=,/=,%=,.=),比较运算符(>,=,>)

原码反码补码:正数原码反码补码一样,负数符号位除外求反,+1得补码

流程控制:顺序结构,分支结构(if,ifelse,ifelse[else],switch[case,break,default]),循环结构(for,while,dowhile,foreach,continue,break)

模板语法:标签语法,分支结构和循环结构

函数:主要功能(代码重用,模块化编程),定义(function 函数名(参数列表)),调用(函数名(参数列表)),定义与调用无顺序关系,形参,实参,参数传递(值传递,引用传值,默认值),返回值(return中断执行,单一返回值,多返回值[引用传递参数]),作用域(全局作用域,局部作用域,作用域针对变量,深入分析[js和PHP],超全局作用域,$GLOBALS和global)

匿名函数

伪类型:mixed,number,callback,void,

数据类型转换:int,integer,bool,Boolean,float,string,array,object,自动转换(值转换)

数据类型判断:is_bool,is_float,is_integer,is_object,is_array,is_string,is_resource,is_scalar,is_null,is_numeric,gettype,settype

引用文件:require,include,require_once,include_once,作用(布局,包含公共文件),文件载入原理(加载非执行,将编译后的文件加载),require和include的区别,文件返回(配置文件)

终止脚本:return,exit,die

载入文件路径:绝对路径,相对路径(./,../,/),文件载入的相对路径问题

字符串相关函数:strlen,substr,strtolower,strtoupper,strrev,strpos,strrpos,strchr,strrchr(获取文件后缀名),trim

时间相关函数:time,date,strtotime,microtime

数学相关函数:abs,floor,ceil,round,rand,mt_rand

 

 

数组:概念,使用数组原因(变量关联),PHP数组特点(没有数据类型,数组下标可为字符串[不能使用for循环遍历],数组长度可变不会溢出),数组定义(array,[]),数组不能直接echo,数组长度(count,遍历),foreach(原理:赋值+指针下移)

二维数组:定义,语法,二维数组遍历,关联二维数组,遍历

Each+list:each(语法),list(语法,只能获得索引数组元素,按照索引顺序赋值),each和list组合遍历数组,each与foreach区别(foreach原理,each原理)

数组相关函数:key,current,next,prev,end ,reset,array_keys,array_values,数据结构模拟(array_shift,array_unshift,array_push,array_pop),字符串分割(explode,implode),array_walk_recursive(回调函数,按址传递)

数组运算:+,array_merge

数组比较:==,===

其他函数: range,array_rand,shuffle

SQL注入:原理,解决方案(addslashes,stripslashes,magic_quotes_gpc5.3前,get_magic_quotes_gpc),公共函数(array_walk_recursive对$_POST转义)

数组算法:排序(冒泡,插入,选择,快排),查找(自定义查找,二分法)

 

表单传值:网站目的(数据管理:收集,整理,存储,发布),收集(表单实现),数据传递(url,form),传值方式(get,post)

数据接收:$_GET,$_POST,$_REQUEST,数据处理,$_REQUEST不值得信任(覆盖,request_order,variables_order)

点击行为判断:isset($_POST[‘submit’])/empty()

自动配置全局变量:register_gloabals5.3

复选框使用:[],入库(字符拼接),显示复选框信息(checked),批量删除

文件上传:概念,难点(浏览器端,服务端),流程(表单post,enctype=’multipart/form-data’,PHP配置file_uploads,配置项说明(file_uploades,upload_max_filesize,post_max_size,upload_tmp_dir)),文件上传流程(本地选择文件,提交,文件发送到服务器临时目录,转义临时文件)

PHP处理:$_FILES,$_FILES说明,文件移动(copy,move_uploaded_file),验证文件类型(MIME),文件重命名(唯一性,可识别区分)

上传函数封装

 

文件操作:原因(保存不经常变化数据量小的数据;配置文件,流量统计,静态网页生成,文件下载。。。)

目录操作:opendir,readdir,rewinddir,closedir,scandir

自定义实现scandir函数功能

文件判断:file_exists,is_dir,is_file,mkdir,rmdir,getcwd,chdir,文件上传按月分类管理

循环输出文件夹下所有文件及子文件夹:静态变量,函数递归(原理,递归点,递归出口)

文件操作:读和写,PHP5(file_get_contents,file_put_contents[FILE_APPEND,FILE_USE_INCLUDE_PATH],array file),PHP4(fopen,Mode[r,r+,w,w+,a,a+],fgetc,fgets,fread,fputs,fwrite,fclose,fseek)

文件相关函数:copy,unlink,rename,filemtime,filesize,fileperms

文件下载:html下载(a href=‘use.zip’,缺点:文件格式简单,暴露文件完整路径),PHP(header("Content-type: application/octet-stream"),header("Content-Disposition: attachment; filename=filename" ),输出文件内容)

第二部分

0你Mysql扩展库,PHP操作mysql

PHP操作mysql数据库的主要扩展库:mysql(面向过程),mysqli(面向过程和对象),pdo(面向对象)

配置mysql扩展库:php.ini加载extension,配置扩展路径extension_dir

PHP操作mysql:原理,

  连接数据库(mysql_connect[host,user,pass,new_link]),

  关闭连接(mysql_close),

  选择数据库(mysql_select_db),

  发送sql(mysql_query,不同类型sql的返回值不同),

  解析结果集资源(mysql_num_rows结果集行数,mysql_fetch系列获得结果集中数据,结果集指针,遍历结果集)

  其他相关函数:受影响行数(mysql_affected_rows),新增数据的ID(mysql_insert_id),设置结果集指针(mysql_data_seek)

  注册成功跳转功能,分页功能(一次性获取,按页获取)

 

HTTP协议:超文本传输协议,b/s架构项目遵循的基本协议,浏览器服务器通信的基本原理(请求连接(TCP/IP协议),连接成功,浏览器发送请求,服务器处理请求,浏览器处理结果,关闭连接),HTTP协议两部分(请求,响应),url,特点(支持客户/服务器模式,简单快速[只需请求方法和路径],灵活[任意数据],无连接[每次连接只处理一个请求],无状态[事务处理没有记忆能力])

HTTP请求:

  四部分(请求行,请求头,空行,请求主体)

  请求行(请求方式,请求文件,协议/版本)

  请求头(host,accept-encoding,referer,connection,accept-language,cookie,user-agent,accept,content-length(post),if-modified-since(get),content-type(post))

  空白行

  请求主体(post请求数据)

  telnet模拟请求

HTTP响应:

  四部分(状态行,响应头,空行,响应主体),

  状态行(协议/版本,状态码,状态说明),

  响应头(server,date,last-modified,content-length,content-type,location,refresh,content-encodeing,cache-control),

  空行,

  响应主体(内容),header之前不能输出,header设置cookie

函数调用前不能输出的函数:session_start,setcookie,header,output_buffering

常用回应状态信息:

  1XX(服务器接收请求,继续处理),

  2XX(成功,200),

  3XX(重定向,302重定向,304没有修改),

  4XX(请求错误,404找不到,403禁止),

  5XX(服务器错误,502无效响应)

PHP模拟响应和请求:

  响应(跳转,刷新,发送图片,下载(application/octet-stream,content-disposition:attachment;filename),

  请求(fsockopen,fwrite,feof,fgets,get请求,post请求)

 

面向对象:面向过程(操作流程)和面向对象(操作主体),oop(一种软件设计架构思想)

基本概念:类(对象的抽象),对象(类的实例化/类类型(自定义数据类型)),实例化,成员(类中的变量,函数,常量)

语法操作:

  定义类(class),

  实例化(new,带括号,不带括号),

  强制转换(object),stdClass(空类),

  访问修饰限定符(var,public,protected,private,区别),

  对象访问成员(->),

  类中成员只有三个(属性,方法和常量,不能echo),

  属性定义的值必须是固定值,如何访问私有属性(方法,$this)

内存说明:类,对象,方法,属性(从空间使用上划分,非内存划分)

魔术方法:构造方法(初始化),析构方法(释放资源,unset对象),构造方法私有化

构造方法兼容:类名方法

大小写区分:属性,数组下标和变量

对象传递:引用传递

对象比较:==(同类对象且属性值相同),===(同一对象)

DB类:类文件命名(类名.class.php)

自动加载:实例化对象前必须有类定义,自动加载(__autoload),自动加载原理,自动加载冲突(spl_autoload_register)

类常量:定义(const),内存划分,访问(类访问,范围解析操作符,对象访问(方法)),self关键字,self和this区别

静态成员:定义(static),属性,方法,访问(范围解析操作符),静态属性与常量的访问区别

静态方法与非静态方法区别($this)

魔术方法:__toString()(echo对象),__clone()(复制成不同对象,克隆不走构造方法,阻止克隆(private))

单例模式:概念(一个类只有一个对象),原因(省资源),原理(三私一公)

工厂模式:概念(产生对象),原因(方便管理),工厂单例模式

 

面向对象不一定有类(js)

Oop三大特性:封装,继承,多态

封装:数据和数据操作,制作类的过程,隐藏对象的属性和实现细节(私有化),对外提供使用接口(限制读和写)

继承:一个对象直接使用另一个对象的属性和方法,减少代码的重复性

多态:接口的多种不同的实现方式,PHP中没有

继承:语法(extends),继承原理,继承成员控制(protected),继承访问(子类访问父类,父类访问子类)

继承冲突:重写,控制级别(子类弱于父类),访问父类同名方法(parent)

PHP单继承,链式继承(多继承),继承的使用(表类继承DB类)

特殊类:不能被继承的类和只能被继承的类,final类,final方法(可以被继承但不能别重写),abstract类(不能实例化),abstract方法

项目设计:项目大,团队多(接口规范,抽象类规范),项目小(不使用)

接口:专门规定类的结构,语法(interface),接口体(常量和方法,不能实现方法,只能public),实现接口(implements),子类必须实现接口所有方法,实现多个接口

面试题:PHP是否支持多继承?如何模拟?接口是不是类?接口是不是抽象类?

PHP重载:用户操作不存在或者不可用的成员属性或者方法时的处理

属性重载:__get(),__set(),__isset()(isset和empty时调用),__unset()(unset调用)

方法重载:__call(),__callStatic()

重载意义:限定用户操作的条件,纠错

 

对象保存与还原:file_put_contents保存,file_get_contents获取,对象不能直接保存

序列化:serialize

反序列化:unserialize,PHP_Incomplete_Class,得不到原对象原因(资源释放),引入类文件即可得到原对象,自动加载类,数据库连接失效

对象保存与还原:__wakeup(),__sleep()

对象判断:instanceof,继承对象同属于子类和父类

对象涉及方法:class_exists,interface_exists,method_exists,get_class(得到对象类名),get_parent_class(得到父类名)

对象遍历:属性遍历,常规foreach遍历,类内foreach遍历($this),类内具体属性遍历(iterator预定义接口)

 

【PDO】:PDO,功能(方便移植),原理,配置(扩展)

PDO主要类:PDO(数据库连接,sql传输),PDOStatement(结果集,预处理),PDOException(PDO异常处理)

PDO类:构造函数(dsn数据源,用户名,密码),对象销毁(没有提供,unset,null),执行SQL(无结果集exec(增删改),lastInsertId;有结果集PDOStatement query),错误处理(errorCode,errorInfo)

PDOStatement类:相关函数(rowCount,columnCount),遍历结果集(fetch[FETCH_ASSOC,FETCH_NUM,FETCH_BOTH,FETCH_OBJ,FETCH_BOUND],bindColumn,fetchAll,fetchColumn,fetchObject,setFetchMode),预处理(prepare,execute[array参数],bindParam[推荐,先绑定后赋值],bindValue[不推荐,先赋值后绑定,每次都要绑定]),事务处理(beginTransaction,commit,rollBack)

PDO属性设置:setAttribute,getAttribute,属性名与值(PDO::ATTR_AUTOCOMMIT(1,0),PDO::ATTR_CASE(PDO::CASE_LOWER,PDO::CASE_UPPER,PDO::CASE_NATURAL),PDO::ATTR_ERRMODE(PDO::ERRMODE_SILENT,PDO::ERRMODE_WARNING,PDO::ERRMODE_EXCEPTION),PDO::ATTR_PERSISTENT(TRUE,FALSE))

PDOException类:try-catch-throw

反射:reflection反射机制,反射(ReflectionClass::export(类)),反射类内部(new ReflectionClass(类),getConstants,getProperties,isStatic,getMethods)

 

Ecshop安装:虚拟主机,gd库扩展,配置数据库,配置后台管理员,安装测试数据,访问后台

购物系统:仿造ecshop制作一个小型的商品管理与购物系统

功能:后台用户登录(表单,session,cookie,验证码),商品分类管理(无限极分类),商品管理(文件处理,缩略图,水印处理,分页,商品批量管理,所见即所得编辑器使用),时间允许(前台商品浏览,购物车动作,用户管理等)

设计项目:从项目管理者角度设计项目(项目架构(框架,源码,开发模式),代码结构(项目目录划分,功能划分)

当前流行开发模式:二次开发,框架开发

数据架构:数据大小,更新频率;两大数据库阵营(SQL,NOSQL),初级架构(表,表功能,表结构,表内数据关系)

前台和后台:前台(用户看,显示数据),后台(管理员看,管理数据),前后台按功能划分,美工和程序员按工作内容划分

项目目录结构,代码分部:项目分前台后台,admin为后台目录;前后台公共部分前台includes下,后台公共文件admin/includes,前后台都有默认访问入口index.php

项目代码设计:数据是核心,代码是访问和管理数据;数据存放在mysql里,PHP通过db.class.php访问数据库(includes下);逻辑与显示分开;公共功能用类封装(文件上传,图片处理,分页)

后台用户登录功能设计:登录表单(登录,验证码,退出,找回密码,记住密码),admin/templates/login.php,代码由简单到复杂;一类事务请求一个PHP文件(登录:admin/privilege.php)

后台项目初始化:运行环境(错误级别,错误显示),基本目录常量,配置文件系统,公共代码(自动加载函数,跳转等),admin/includes/init.php

Admin/includes/init.php:编码设置(header),目录常量(__DIR__,反斜杠处理,ROOT_DIR,ADMIN_DIR,INCLUDE_DIR,ADMIN_INCLUDE_DIR,ADMIN_TEMPLATE_DIR),5.3低版本目录常量(__FILE__)

配置文件系统:/config/config.php,数据库连接信息,二维数组(便于区分)

加载配置文件:admin/includes/init.php,配置文件目录常量,配置文件全局化($GLOBALS[‘config’])

运行环境设置:ini_set()(error_reporting,display_errors),错误级别关系

登录界面:从ecshop拿,js文件,image文件,css文件

登录功能:privilege.php实现,引入初始化文件,引入login.php文件,action(区分动作),if分支判断动作

用户登录表单设计:请求privilege.php,设计隐藏域act,$_REQUEST(GPC,request_order,variables_order)

验证用户信息:设计管理员表(库,表,字段(id,用户名,密码,注册时间,上次登录时间和IP)),插入一条数据,接收用户提交数据进行验证,数据库操作(使用DB类,每张表一个类(/includes/adminTable.class.php))

表类设计:继承db类,属性(table_name,fields)

验证调用表类:自动加载(/includes/function.php),初始化文件引入公共函数库,实例化表对象(传入数据库连接信息,连接数据库),修改实例化方式(db类中自动调用配置文件),使用用户名和密码验证用户(正确得到用户信息,错误返回FALSE),修改用户密码(md5加密)

工作原理分析:用户请求到得到验证结果

验证结果处理:界面跳转(PHP中header,js中document.location.href,HTML中refresh),创建跳转模板/admin/templates/redirect.php,跳转函数admin_redirect在/includes/function.php,privilege中调用跳转函数

 

验证用户是否登录:定义变量判断,get传参,会话数据

开启会话机制:默认关闭(php.ini的session.auto_start),session_start开启,$_SESSION(访问会话数据),session实现用户登录判断

Session原理:session_start()开启session并读取session文件内容到$_SESSION,脚本结束将$_SESSION内容写到session文件,然后释放$_SESSION变量

会话周期:浏览器关闭session失效,浏览器与服务器会话流程

Cookie会话技术:服务器在浏览器保存数据,cookie原理,session与cookie的区别

Cookie使用:设置cookie,获得cookie($_COOKIE和$_REQUEST),修改$_COOKIE(再次访问无效),cookie变量有效期,session失效原理,清除cookie(setcookie),cookie目录区分,cookie跨域,cookie变相保存数组

Session文件:存储(php.ini中session.save_path)

Cookie文件:浏览器指定的存储目录,IE和FF区别,FF查看cookie文件

Session登录判定:用户登录时session记录用户信息,index.php中判定session信息,初始化文件开启session

模拟session实现跨脚本

框架布局后台:使用ecshop后台布局,index.php

Index.php实现:与privilege.php处理方式一致,使用ecshop的模板

退出登录:清楚session,跳转到privilege.php登陆页,top.php(target属性)

用户信息显示:$_SESSION,用户上次登录时间(登录后修改上次登录时间)

Session深入:$_SESSION只能是关联数组,session可以保存对象,session过期受cookie影响,session文件销毁(session_destroy,$_SESSION,setcookie),session分层(session.save_path,手动建立文件夹)

禁用cookie后session使用(其他方式让浏览器带sessionID),a标签自动携带sessionID(session.use_trans_id,session.use_only_cookie),PHP脚本传递(手动添加,session_id(),session_name())

 

验证码:验证码意义(防恶意请求),原理(Completely Automated Public Turing Test to Tell Computers and Humans Apart (全自动区分计算机和人类的图灵测试),将验证码内容放到图片上),验证码流程(生成,保存到session中,添加到图片上,用户输入,验证),对比ecshop验证码

GD库:图像处理扩展,GD处理图片流程(创建图片资源(已有或者新建),操作图片(裁剪图片,修改图片,填充图片,缩略图,写验证码),保存或者输出,释放资源)

制作验证码:获得验证码内容,验证码写到session,验证码写到图片,验证码图片显示到表单

封装验证码类:复杂化验证码方法(背景颜色随机,文字颜色随机,添加像素点,添加干扰线)

项目应用验证码:请求动作获得验证码图片,验证用户登录时使用验证码,新增验证验证码方法(验证码类内),点击验证码图片更换验证码(js)

保存用户登录信息:cookie存储记录标识(用户ID),判断用户是否登录(判断session,判断cookie),增加通过用户ID获取用户信息方法,危险

 

制作商品分类:数据表设计(主键,分类名,排序,父ID),插入数据,category.php,商品分类列表界面,修改连接(menu),商品分类类,调用商品分类的方法,模板显示分类数据

无限极分类:原理(找顶级分类,找子分类),非递归实现(指定父分类),递归(递归点,递归出口),递归原理,缩进(层级标识),根据排序字段排序

构造表全名:表名,db类表前缀,db类中增加表名构造,表类中使用

给字段属性赋值:添加获得表结构方法(获得所有键,主键)

分类文件访问验证:将登录验证放到init.php,引入init.php文件验证,分离需要验证的请求(登录相关不需要验证,$_SERVER[‘SCRIPT_NAME’],basename(),dir_name())

分类操作:增加分类(新增表单,提交表单,处理表单数据,分类入库),分类指定上级分类,数组接收数据提交数据,删除分类(提示用户(js),判断分类是否可被删除(是否末级),删除分类)

 

编辑分类功能:流程(用户点击菜单进入编辑,显示分类数据,用户编辑操作,提交表单,处理编辑数据)

重封装通过id获取数据方法(重复,放到db类),表单添加隐藏分类ID

商品分类完成:没有商品数量,分类列表缓存(判断缓存,更新缓存),无限极分类缩放

商品管理:数据表设计(仿照ecshop),数据插入,goods.php,完善商品列表(菜单连接,动作处理,数据对象操作,列表模板,图标)

分页:流程(确定数据显示数量,确定页数,limit),分页跳转(首页,上一页,下一页,末页,数字页,下拉页)

项目分页:修改配置文件(每页显示数据条数),修改列表功能(页码,每页显示数目参数),修改列表功能(获得总记录数,数据,二维数组),修改调用列表功能

分页类:单独分页不含数据处理(参数),HTML(标签,ID)

删除商品:处理方法(回收站),增加删除标志(修改数据表),删除流程(确认(js),修改删除标志,修改列表功能,更新列表)

回收站操作:分页显示(配置文件,分页类使用),恢复

 

新增商品:流程(连接,动作,表方法,模板,选项卡功能)

插入功能重复:新增插入方法(db类,验证数组信息,数组拼凑SQL,返回插入结果),调用插入功能

文件上传:post,enctype(mutipart/form-data),$_FILES(专门接收文件数据,字段说明,错误说明(0没有问题,1超出大小,2超出大小,3部分上传,4没有上传,6没有临时文件夹,7文件写入临时文件夹出错)),文件上传原理(PHP服务端),移动临时文件(move_uploaded_file),文件验证(大小,类型,重命名,strrchar)

图片上传类:配置文件(上传大小,上传类型(字符串),上传路径),上传命名规则(不重复,保持原来后缀,易于识别(前缀)),文件上传流程(错误判断,文件大小判断,文件类型判断,重命名,是否上传成功,返回新文件名),文件处理失败商品仍上传(错误提示)

商品插入流程回顾:收集表单数据,设置初始值(点击量),上传文件判断,制作缩略图判断,调用模型,插入数据

 

制作缩略图:流程(获得图片资源(原始图,目标图),处理(采用,复制),保存或者输出,释放资源),采样(矩形区域确定)

封装缩略图制作:数据获取(原图大小,目标图大小,函数类型使用),缩略图比例(宽高比),缩略图制作流程细化(计算原图宽高和缩略图最大尺寸,确定缩略图大小,创建图片资源(原图,缩略图),采样复制,保存输出,销毁资源)

缩略图补白:缩略图大小固定(不够的地方补白,制作缩略图背景)优劣(方便设计显示,与原图不一致)

水印制作:图片上的标识,两种(文字,图片),基本流程(原图,水印图,合并)

项目水印:配置文件,流程详细(获得原图资源,判断水印图资源,获得水印图资源,获得图片宽高,判断水印位置,计算水印位置,判断合并结果,保存,返回水印图名称),修改上传图片的名字为水印图

MVC:软件设计典范(模型Model,视图View,控制器Controller),输入处理和输出的分离,MVC框架(功能划分M,V,C),PHP代码发展(混编,显示和逻辑分离,数据逻辑与业务逻辑分离),action(C处理一类事务,C包含多个Action),区分(模块module,模型model,模板template)

自动安全更新方法:拼凑sql语句,更新,流程(清理无效字段,拼凑sql语句(更新部分,条件),强制设定条件(判断条件,自动分析条件),返回执行结果)

自动删除:根据ID进行删除(单个=,数组in),流程(参数添加引号,拼凑删除条件,返回删除结果)

 

Session入库:session入内存,session入库(修改session存储机制),session入库原理,修改session系统(session读写功能),修改流程(准备读写方法,告知session系统(session_set_save_handler())

Session表设计:字段(sessionID,数据,过期时间)

Session方法完善:读(根据sessionID数据库查询),写(根据sessionID,session数据写入或者更新数据),开启(提取公共连接数据库代码),数据库连接资源作用域,销毁(根据sessionID删除数据),回收(根据配置清理过期session,expire字段),session配置(gc_maxlifetime,gc_probobility,gc_divisor)

封装session类:构造函数(设置session处理器,数组传递参数,开启session,开启父类构造函数),完善各个方法

Session方法执行顺序(读在回收前),修改读方法(不读取过期数据,读判断expire),session销毁(停止执行写方法)

 

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template