验证码确保php无输出、sql语句的封装性、文件上传的工具类【这三个重点工具类实现】

1.php代码在引入中不会进行结束或者确保结束之后没有空格,来保证php在被包含中没有被输出【防止header和session_start()对输出的控制】
实质上,需要注意的就是,要不就进行输出缓存控制以及php开始标签前没有空格

验证码这个功能需要header和session两个功能【尤其需要注意输出的问题】

【总结:防止php代码中带着一些输出的问题】
(1)在php标签中开始<?php 前顶格
(2)php结束符要不不写,写了就不要在结束之后还有换行【防止该文件被包含之后提前出线输出】
(3)或者通过脚本来控制输出缓存

另外还有编码的问题:
utf-8+
utf-8+BOM:相当于加了UTF8的签名【这就是svn对bom要求的原因】


2.将验证码也作为工具类
现在已经了解过的工具类有:数据库操作类、session入库工具类、验证码、文件上传的工具类

针对这里,也需要对用户的登录状态进行标记【保证重新登录之后不需要再次进行验证。cookie的存活时间和session的存活时间要一致,不然就会浪费或者冲突】
【保存用户名id进行cookie登录的标示】


任何一个跳转都要进行一次强制停止【这一点需要注意,防止下面的代码依旧被执行,带来效率或者代码上的错误】

3.对整个后台的登录处理
【用户的登录,已经登录下的免登录,改密码,删用户,对密码的加密、退出登录、登录密码的保留时间等处理都需要考虑】

【进行多次的分支处理】

【注意:sql语句的写法的灵活使用。也能叫做sql的自动化。sql语句只需要业务层传入即可实现sql的使用】
4.在模型中使用前缀的表的控制【也是在表设置前的配置】
对配置的读取和拼接使用即可。

sql语句中,使用反引号做关键字的声明,可以再sql语句中使用面向对象的调用。【{$this->method()}、{$this->proporty}实现对对象中成员的访问,来实现动态的配置表的前缀,以及表的获取等等。将sql语句的写法更加动态化】

【基于sql语句中使用面向对象的调用方法来实现sql的自动化的写法,使得sql的封装性也能变得非常强】
【这一段的sql的重新拼凑的写法对sql处理的代码的调用严格化,传入要操作的表名,字段等实现对数据库的操作。这样能够做到sql工具类的优化】
【工具类:http://blog.sina.com.cn/s/blog_6568a85d0100ltyj.html。完善工具类实现自动处理(增删改查)的功能,更强的封装性】


5.文件上传类实现:
从浏览器到服务器上上传文件。

数据在存储或传输时,所有数据传输的格式有:字节码,二进制码。
普通字符串上传到服务器上是通过字节码进行传输。
文件上传的编码时二进制码。
默认情况下,浏览器不会处理二进制编码,将数据转为字节码处理。【所以需要进行声明】


【上传文件本质上都是浏览器在做,服务器在接收,跟脚本无关。脚本负责系统管理】

上传文件的步骤:
(1)告诉浏览器,当前表单内,有需要被二进制编码的数据(enctype="multipart/form-data")【声明上传的数据是二进制编码】
(2)服务器指定的脚本下,进行文件的处理【也是两种形式:对字节码保存在$_POST变量内,对二进制编码处理:放在一个临时文件夹内(在sleep处理时间内,可以看到临时文件夹中保存了该文件。否则看不出来)】
(3)对上传到服务器上的文件进行处理【路径,文件类型管理(http协议中就有对文件类型的管理mime类型),文件重命名】【上传文件的信息被保存在$_FILES中,保存文件的相关信息,然后对该信息进行改动,实现类似linux命令来操作文件的相关能力】
【这才是上传文件的实现本质!!!!】
(4)上传成功后返回指定文件的路径


脚本本身就是类似linux脚本一样,也是对服务器资源的处理


【对本质了解之后,完成一个上传文件的工具类】
【注意php.ini中关于文件上传的配置问题(两个配置问题:upload和post对文件的限制)】

【文件上传中出现的错误:$_FILES中的error报错】
(1)两个配置对文件的大小有限制
(2)文件并未上传完或没有上传文件就提交
(3)保存上传文件的临时文件夹有错误

原文地址:https://www.cnblogs.com/shuoshuren/p/4234651.html