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等)
软件结构:cs,bs,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处理(标记识别),标记(<?php?>, <script language=”php”></script>默认,<?短标签?>,<%asp标签%>非默认,需开启;不建议使用),最末尾标记可以忽略(建议忽略: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)
运算符:算术运算符(+,-,*,/,%),赋值运算符(=,+=,-=,*=,/=,%=,.=),比较运算符(>,<,>=,<=,==,===,!=,!==),错误抑制符(@),自操作运算符(++,--),字符串运算符(.),三目运算符(? :),逻辑运算符(&&and,||or,!),位运算符(&,|,^,~,<<,>>)
原码反码补码:正数原码反码补码一样,负数符号位除外求反,+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销毁(停止执行写方法)
在线编辑器:ckeditor,简介,引入(js引入,调用),保存编辑数据,配置ckeditor(高度,工具栏),ckfinder,配置文件上传(开启上传,上传目录)