ThinkPHP示例之:表单提交验证
本示例是表单提交验证处理,提交的时候增加了验证码?防止机器人添加数据。
验
证
码:
刷新验证码
法机关的
哈哈哈[6930@https://www.sodocs.net/doc/985445750.html, 2011-01-07 13:46:37]
惹人是否四大发生的个而归去大哥司法官阿文哥如果吧;lkkk凭空平【上课;浦东司法机关的
233 [chlyyy216@https://www.sodocs.net/doc/985445750.html,2011-04-29 17:18:24]
43
233 [chlyyy216@https://www.sodocs.net/doc/985445750.html,2011-04-29 17:18:32]
43
233 [chlyyy216@https://www.sodocs.net/doc/985445750.html,2011-04-29 17:18:34]
43
233 [chlyyy216@https://www.sodocs.net/doc/985445750.html,2011-04-29 17:18:36]
43
233 [chlyyy216@https://www.sodocs.net/doc/985445750.html,2011-04-29 17:18:37]
43
233 [chlyyy216@https://www.sodocs.net/doc/985445750.html,2011-04-29 17:18:37]
43
233 [chlyyy216@https://www.sodocs.net/doc/985445750.html,2011-04-29 17:18:37]
43
233 [chlyyy216@https://www.sodocs.net/doc/985445750.html,2011-04-29 17:18:38]
43
233 [chlyyy216@https://www.sodocs.net/doc/985445750.html,2011-04-29 17:18:38]
43
233 [chlyyy216@https://www.sodocs.net/doc/985445750.html,2011-04-29 17:18:42]
43
$this->display();
}
// 检查标题是否可用
public function checkTitle() {
if(!empty($_POST['title'])) {
$Form = D("Form");
if($Form->getByTitle($_POST['title'])) {
$this->error('标题已经存在');
}else{
$this->success('标题可以使用!');
}
}else{
$this->error('标题必须');
}
}
// 处理表单数据
public function insert() {
$Form = D("Form");
//验证码验证
if($_SESSION['verify'] != md5($_POST['verify'])) {
$this->error('验证码错误!');
}
if($vo = $Form->create()) {
if($Form->add()){
$vo['create_time'] = date('Y-m-d H:i:s',$ vo['create_time']);
$vo['content'] = nl2br($vo['content']);
$this->ajaxReturn($vo,'表单数据保存成功!',1); }else{
$this->error('数据写入错误!');
}
}else{
$this->error($Form->getError());
}
}
public function verify()
{
$type = isset($_GET['type'])?$_GET['type']:'gif';
import("@.ORG.Image");
Image::buildImageVerify(4,1,$type);
}
}
?>
模型FormModel类
class FormModel extends Model {
// 自动验证设置
protected $_validate = array(
array('title','require','标题必须!',1),
array('email','email','邮箱格式错误!',2),
array('content','require','内容必须',1),
array('title','','标题已经存在',0,'unique','add'),
);
// 自动填充设置
protected $_auto = array(
array('status','1',self::MODEL_INSERT),
array('create_time','time',self::MODEL_INSERT,'function')
Process: 0.341s ( Load:0.049s Init:0.072s Exec:0.220s Template:0.000s ) | DB :2 queries
0 writes | UseMem:886 kb
页面Trace信息
当前页面: /thinkphp21/Examples/Validate/
模板缓存: ./Runtime/Cache/0573c70d8602d961e53f714ea77bd87c.php
请求方法: GET
通信协议: HTTP/1.1
请求时间: 2011-04-29 15:38:15
用户代理: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET CLR 3.5.21022; CIBA; SE 2.X MetaSr 1.0)
会话ID : d86d40vsd35vn5p7q7am4bh3o1
日志记录: 7条日志
[ 2011-04-29T15:38:16+08:00 ] SQL: SHOW COLUMNS FROM think_form
[ RunTime:0.006992s ]
[ 2011-04-29T15:38:16+08:00 ] SQL: SELECT * FROM `think_form` ORDER BY id desc LIMIT 5 [ RunTime:0.001215s ]
[ 2011-04-29T15:38:16+08:00 ] NOTIC: [8] Undefined variable: odd
0573c70d8602d961e53f714ea77bd87c.php 第70 行.
[ 2011-04-29T15:38:16+08:00 ] NOTIC: [8] Undefined variable: odd
0573c70d8602d961e53f714ea77bd87c.php 第70 行.
[ 2011-04-29T15:38:16+08:00 ] NOTIC: [8] Undefined variable: odd
0573c70d8602d961e53f714ea77bd87c.php 第70 行.
[ 2011-04-29T15:38:16+08:00 ] NOTIC: [8] Undefined variable: odd
0573c70d8602d961e53f714ea77bd87c.php 第70 行.
[ 2011-04-29T15:38:16+08:00 ] NOTIC: [8] Undefined variable: odd
0573c70d8602d961e53f714ea77bd87c.php 第70 行.
加载文件: 15
[0] => D:\service\wamp\www\thinkphp21\Examples\Validate\index.php
[1] => D:\service\wamp\www\thinkphp21\ThinkPHP\ThinkPHP.php
[2] => D:\service\wamp\www\thinkphp21\Examples\Validate\Runtime\~runtime.php
[3] => D:\service\wamp\www\thinkphp21\ThinkPHP\Common\convention.php
[4] => D:\service\wamp\www\thinkphp21\Examples\Validate\Conf\config.php
[5] => D:\service\wamp\www\thinkphp21\Examples\config.php
[6] => D:\service\wamp\www\thinkphp21\ThinkPHP\Common\debug.php
[7] => D:\service\wamp\www\thinkphp21\ThinkPHP\Lib\Think\Util\Dispatcher.class.php
[8] => D:\service\wamp\www\thinkphp21\ThinkPHP\Lang\zh-cn.php
[9] =>
D:\service\wamp\www\thinkphp21\Examples\Validate\Lib\Action\IndexAction.class.php [10] =>
D:\service\wamp\www\thinkphp21\Examples\Validate\Lib\Model\FormModel.class.php
[11] => D:\service\wamp\www\thinkphp21\ThinkPHP\Lib\Think\Core\Model.class.php
[12] => D:\service\wamp\www\thinkphp21\ThinkPHP\Lib\Think\Db\Db.class.php
[13] =>
D:\service\wamp\www\thinkphp21\ThinkPHP\Lib\Think\Db\Driver\DbMysql.class.php [14] =>
D:\service\wamp\www\thinkphp21\Examples\Validate\Runtime\Cache\0573c70d8602d96 1e53f714ea77bd87c.php
V 秒百秒年了才接
表单 表单form是Internet和服务器之间进行信息交流的一种重要工具。包括按钮、文本框、单选按钮、复选按钮等,它们被称之为表单对象。表单的使用包括两部分:一是用户界面,提供用户输入数据的元件;另一部分是处理程序,可以是客户端程序而在浏览器执行,也可以是服务器程序,处理用户提交的数据,返回结果。 一.可插入的表单对象 Dreamweaver中,在“插入”面板中,有一个“表单”分类,选择该分类,可插入的表单对象快捷按钮就会出现。如下图: 可插入的对象,从左至右,包括: ?表单 ?文本字段 ?隐藏域 ?文本区域 ?复选框 ?单选按钮 ?单选按钮组 ?列表/菜单 ?跳转菜单 ?图像域 ?文件域 ?按钮 1.插入表单域 要在网页中插入表单对象,首先应该插入一个表单域,否则服务器将无法处理用户填写的信息。操作步骤如下: 步骤1:“插入”面板中,选择“表单”分类,单击左边第1个“表单”按钮,随即插入到网页中一个表单域,表单域在设计视图中显示为一个红色虚线框的范围。如图所示: 如果没有红色虚线框,执行菜单栏“查看/可视化助理/不可见元素”命令即可。 步骤2:设置表单域属性。使用鼠标单击虚线的边框,此时虚线框内出现黑色区域,表示该表单域被选中,属性面板如下: 表单域属性面板包括:
?表单名称:标识表单的唯一名称。 ?动作:指定处理该表单的动态页或脚本的路径。可以键入完整的路径,也可以单击“浏览文件”按钮指定到同一站点中包含该脚本或应用程序页的相应文件夹。如果没有相关程序支持的话,也可以使用E-mail的方式来传输表单信息,这种方式在动作文本框中键入:“mailto:电子邮件地址”。表示提交的信息将会发送到作者的邮箱中。比如 ?方法:用于选择表单数据传输到服务器的方法。可选择速度快但携带数据量小的GET方法,或者数据量大的POST方法。一般使用POST方法。 ?目标:指定打开窗口的方式。 ?MIME类型:指定对提交给服务器进行处理的数据使用MIME编码类型。 ?类:定义好的CSS样式。 2.插入文本域 当浏览者浏览网页需要输入文字资料时,像姓名、地址、E-mail或稍长一些的个人介绍等栏目,在制作时就可以使用文本域,它在浏览器中将显示为一个文本框。 具体操作如下: 步骤1:插入文本域前请确定首先插入了一个表单域,并且将光标放入表单域中。如果在表单域外插入文本域,Dreamweaver会弹出提示框,是否创建一个表单域。 步骤2:在“插入”面板中,选择“表单”分类,单击左边第2个“文本字段”按钮,随即插入到网页中一个文本域。可以在文本域前加入说明的文字,如“用户名”,告知浏览者需要填入的内容的类型。 步骤3:单击文本域,对文本域的属性面板进行设置: 文本域:输入文本字段的名称,该名称在该网页中是唯一的名称。名称不能包含空格或 特殊字符,可以使用字母数字字符和下划线的任意组合。 字符宽度:设置文本域中最多可显示的字符数。 最多字符数:设置单行文本域中所能输入的最多字符数。如果是空白,则可以输入任意 数量的文本。(最好对不同内容的文本域进行不同数量的限制,防止个别浏览者恶意输入大量数据,维护系统的稳定性。) 初始值:输入文本域中默认状态时显示的内容,当浏览者键入资料时初始文本被替代。 类型:显示了当前文本域的类型,包括“单行”、“多行”和“密码”。其中, ---单行是默认选项,只显示一行文本。 ---多行表示插入的文本可显示多行(如图)。
js表单验证代码全集 2008年06月25日星期三下午 03:23 1:js 字符串长度限制、判断字符长度、js限制输入、限制不能输入、textarea 长度限制 2.:js判断汉字、判断是否汉字、只能输入汉字 3:js判断是否输入英文、只能输入英文 4:js只能输入数字,判断数字、验证数字、检测数字、判断是否为数字、只能输入数字 5:只能输入英文字符和数字 6: js email验证、js 判断email 、信箱/邮箱格式验证 7:js字符过滤,屏蔽关键字 8:js密码验证、判断密码 2.1: js 不为空、为空或不是对象、判断为空、判断不为空 2.2:比较两个表单项的值是否相同 2.3:表单只能为数字和"_", 2.4:表单项输入数值/长度限定 2.5:中文/英文/数字/邮件地址合法性判断 2.6:限定表单项不能输入的字符 2.7表单的自符控制 2.8:form文本域的通用校验函数 2.9:js验证手机号,含158,159段的 1. 长度限制
2. 只能是汉字 3." 只能是英文 2. 只能是汉字 3." 只能是英文 1.2 只能是汉字HTML 表单(Form)是 HTML 的一个重要部分,主要用于采集和提交用户输入的信息。
一个简单的 HTML 表单,包含两个文本输入框和一个提交按钮:
比fastdb更强的 nosql数据库 ,比较两个字符串,返回相同的最大的字符串,其他返回空遍历文件夹中最大的文件,表单的验证js以及事件的注册 初始化openldap的初始化状态 ,处理 Oracle SQL in 超过1000 的解决方案 从服务器下载文件的cmd脚本 [Shell/批处理],从国家统计局爬取山东省市区县乡镇 从国家统计局爬取山东省市区县乡镇 ,对内存中的图片数据编解码 对于一些筛选之类的功能使用NSSet or NSMutableS Status ListDelete(Sqlist &L,int i) //删除i位置的数据 { if(i<1||i>L.length) return ERROR; for(int j=i;j<=L.length-1;j++) { L.elem[j-1]=L.elem[j]; } L.length--; return OK; } // 多进程间队列和子类的应用 //多进程间共享内存和全局对象 //分享几个简易的CSS3点击响应动画示例 Status ListInput(Sqlist &L) //数据录入 { if(L.length==-1) return ERROR; cout<<"Length="<
Java中,当表单含有文件上传时,提交数据的如何读取 当提交表单里包含文件上传的时候,即Form的enctype属性值为multipart/form-data时,后台是无法像普通表单那样通过request.getParameter来获取用户提交的数据的。(说实话,我经常因为忘记这个问题而浪费好多调查时间。) 1.// 判断enctype属性是否为multipart/form-data 2.boolean isMultipart = ServletFileUpload.isMultipartContent(request); 3. 4.// Create a factory for disk-based file items 5.DiskFileItemFactory factory = new DiskFileItemFactory();
7.// 当上传文件太大时,因为虚拟机能使用的内存是有限的,所以此时要通过临时文件来实现 上传文件的保存 8.// 此方法是设置是否使用临时文件的临界值(单位:字节) 9.factory.setSizeThreshold(yourMaxMemorySize); 10. 11.// 与上一个结合使用,设置临时文件的路径(绝对路径) 12.factory.setRepository(yourTempDirectory); 13. 14.// Create a new file upload handler 15.ServletFileUpload upload = new ServletFileUpload(factory); 16. 17.// 设置上传内容的大小限制(单位:字节) 18.upload.setSizeMax(yourMaxRequestSize); 19. 20.// Parse the request 21.List> items = upload.parseRequest(request); 22. 23.Iterator iter = items.iterator(); 24.while (iter.hasNext()) { 25.FileItem item = (FileItem) iter.next(); 26. 27.if (item.isFormField()) { 28.//如果是普通表单字段 29.String name = item.getFieldName(); 30.String value = item.getString(); 31.... 32.} else { 33.//如果是文件字段 34.String fieldName = item.getFieldName(); 35.String fileName = item.getName(); 36.String contentType = item.getContentType(); 37.boolean isInMemory = item.isInMemory(); 38.long sizeInBytes = item.getSize(); 39....