验证码确保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)保存上传文件的临时文件夹有错误

时间: 2024-10-25 00:29:03

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

Thinkphp 验证码、文件上传

一.验证码 验证码参数 例题:登录时验证下验证码 LoginController.class.php <?php namespace Home\Controller; use Think\Controller; class LoginController extends Controller { public function Login() { if(empty($_POST)) { $this->display(); } else { //判断验证码是否正确 $code = $_POST[

Asp.Net 无刷新文件上传并显示进度条的实现方法及思路

相信通过Asp.Net的服务器控件上传文件在简单不过了,通过AjaxToolkit控件实现上传进度也不是什么难事,为什么还要自己辛辛苦苦来 实现呢?我并不否认"拿来主义",只是我个人更喜欢凡是求个所以然.本篇将阐述通过Html,IHttpHandler和 IHttpAsyncHandler实现文件上传和上传进度的原理,希望对你有多帮助. 效果图: 本文涉及到的知识点:1.前台用到Html,Ajax,JQuery,JQuery UI 2.后台用到一般处理程序(IHttpHandler)和

NHibernate输出SQL语句

用了NHierbate之后,很少需要写原生的SQL语句,由于总是看不到SQL语句,所以有时候对SQL调优非常不利.因此产生了让NHibernate输出它所生成的SQL语句的想法,以便于后续调优. 一.在控制台输出SQL语句 在控制台程序中,要查看NHibernate所生成的SQL语句,方法非常简单,只需要改下配置文件就OK了. <property name="show_sql">true</property> <property name="fo

如何将Hibernate生成的SQL语句打印到日志文件

背景:项目开发需要. 1 操作 只需要在log4j.properties中加入以下两行代码即可 #输出sql语句到日志 log4j.logger.org.hibernate.SQL=debug #将对应的参数占位符?换成传入的参数 log4j.logger.org.hibernate.type=trace 实验效果: 2017-09-05 16:51:26 [DubboServerHandler-thread-1] DEBUG org.hibernate.SQL (104) - select c

6月19 使用tp框架生成验证码及文件上传

ThinkPHP中自带能生成验证码的类:ThinkPHP/Library/Think/Verify.class.php 默认情况下,验证码的字体是随机使用 ThinkPHP/Library/Think/Verify/ttfs/目录下面的字体文件,我们可以指定验证码的字体 汉字的验证码:ThinkPHP/Library/Think/Verify/zhttfs/添加中文的字体格式 更改字体:ttf格式 关于验证码的一些知识点: 1.例题:通过验证码实现用户的登录,并利用jquery实现点击图片验证码

无刷新的的文件上传

一. 通过iframe来实现无刷新的的文件上传,其实是有刷新的,只是在iframe里面隐藏了而已 简单的原理说明: <form id="form1" method="post" action="upload.do" enctype="multipart/form-data"  target="uploadframe" > <input type="file" id=&q

无刷新假象 &nbsp; 实现简易文件上传

传统的上传文件功能,点击"上传"后页面会短暂地空白,等待服务器的响应:为了提高网站的处理效率,采用模拟Ajax的无刷新假象技术,我们可以让页面在局部刷新的情况下,实现文件上传. demo.html  <script type="text/javascript">      function callback(filename){          //"$()"是封装在单独js文件中的函数:document.getElementByI

springmvc的文件上传和JWT图形验证码

相关pom依赖 <dependency> <groupId>commons-fileupload</groupId> <artifactId>commons-fileupload</artifactId> <version>1.3.3</version> </dependency> springmvc-servlet.xml <?xml version="1.0" encoding=&

Javascrpt无刷新文件上传

最近工作中遇到上传文件问题,主要需求是一步点击上传,兼容ie8+,当时用的dojox/form/uploader控件,这两天扒了一下源码,明白了原理拿出来分享一下. 总体思路如下: 1.对于支持XMLHttpRequest2的浏览器使用FormData通过ajax上传 2.对于ie10一下的浏览器使用iframe异步上传,还需后台服务器做相应处理,这部分也是dojo/request/iframe上传文件的原理. 一.使用FormData上传文件 FormData最频繁使用的功能就是表单序列化及创