当前位置: 首页 > news >正文

Thinkphp 简单表单提交验证

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

具体的操作步骤如下:

第一步:入口文件index.php内容 (此文件基本是属于固定的格式)

<?php

define('THINK_PATH','./ThinkPHP/');

define('APP_NAME','MyApp');

define('APP_PAHT','./MyApp/');

require_once THINK_PATH.'ThinkPHP.php';

$app=new App();

$app->run();

?>

 

第二步:Active文件夹中的IndexAction.class.php文件内容

<?php

class IndexAction extends Action

{

 public function Index()

 {

  $this->display();//渲染到模板index.html

 }

 

 // 生成验证码  

 public function verify()//这是一个固定的格式

 {  

  import("ORG.Util.Image");  

  Image::buildImageVerify();  

 }  

 

 //检验验证码是否正确  

 public function verifyCheck()

 {     

  if (md5($_POST['verifyTest']) != Session::get('verify'))

  {  

   die('验证码错误');  //如果验证码不对就退出程序

  } 

 }   

 

  function insert()

  {

  header('Content-Type:text/html; charset=utf-8');//防止出现乱码

  $this->verifyCheck();//调用本类的函数,

  $Pagemodel = D("user");

  $vo = $Pagemodel->create();

  if(false === $vo) die($Pagemodel->getError());

  $topicid = $Pagemodel->add(); //add方法会返回新添加的记录的主键值

  if($topicid) echo "数据库添加成功";

  else throw_exception("数据库添加失败");

 }

}

?>

 

第三步:写模板文件,也就是写LIB文件夹中的HTML文件

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>无标题文档</title>

  <style type="text/css">

    #form1

 {

  width:250px;

  height:250px;

  margin:20px auto;

  border:1px #039 solid;

  padding:20px 20px;

 }

  </style>

  <script type='text/javascript'>

 function freshVerify()

 {  

   document.getElementByIdx_x('verifyImg').src='__URL__/verify/'+Math.random();  

 }  

  </script>  

</head>

<body>

  <form name="form1" id="form1" method="post" action="__URL__/insert">

    注册帐号:<br /><br />

    帐号:<input type="text" name="user" id="user" maxlength="16" /><br /><br />

    密码:<input type="password" name="password" id="password" maxlength="16" /><br /><br />

    Q&nbsp;&nbsp;Q:<input type="text" name="qq" id="qq" maxlength="16" /><br /><br />

   

    验证码:<input type='text' name='verifyTest' size="5"> 

    <img style='cursor:pointer' title='刷新验证码' src='__URL__/verify' id='verifyImg' onClick='freshVerify()'/> <br /><br />

      

    <input type="submit" name="btn1" id="btn1" value="提交" />

    <input type="reset" name="btn2" id="btn2" value="重置" />

  </form>

</body>

</html>

注意:

1、也就是一个form,action="__URL__/insert"表示提交到当前Action类(即IndexAction.class.php文件中)的insert函数;

2、此模板(静态网页)中的各个name要与user数据表的各个字段是一样的名字,否则在insert函数中数据不能自动进库。

3、验证码的刷新由静态网页负责。值相等由IndexAction类的verifyCheck()负责。

 

第四步:写Model类,在model目录中,文件名为:UserModel.class.php

<?php

  class UserModel extends Model//User与数据库中数据表的名字相同

  {

   var $_validate=array  //自动验证

   (

   array('user','require','账号不能为空',1),  //1表示必须验证

   array('qq','number','QQ号必须是数字,注册失败!',2),//2表示不为空时要验证

   array('user','','此帐号己经存在!',0,'unique','add')  //不能有同时账号出现

   );   

   var $_auto=array

   (

         array('password','md5','add','function'),  //密码用md5加密后填入数据表中

         array('create_time','time','add','function')  //在增加时自动将时间擢填入表中

   );

  }

?>

注解:

1、文件名,类名必须用user,因为数据库中对应的是user表;

2、其实只要写一个框架就行了:

  class UserModel extends Model

  {

  }

但为什么还要var $_validate=array()和var $_auto=array()呢?那是因为:

var $_validate=array()是自动验证的意思,var $_auto=array()是自动填充的意思。

自动验证就是验证数据的格式是否正确,自动填充就是你不输入的值,它自动给你灌进去,比如'create_time'建立时间,我们在模板中没有这个,但这里它就自动进库了。


转载于:https://my.oschina.net/leohouse/blog/651154

相关文章:

  • 为了媳妇的一张号,我与百度医生杠上了
  • zend studio 的注册码-php的编辑器
  • Android 权限大全中英对照
  • Nightmare --- 炸弹时间复位
  • HDU 5655 CA Loves Stick 水题
  • 跟着实例学习ZooKeeper的用法: Barrier
  • Partition4:增加分区
  • Oracle创建表空间
  • succ
  • 新技能,利用Reflector来修改dll引用
  • 溢出隐藏
  • .Net转前端开发-启航篇,如何定制博客园主题
  • NTFS For Mac 的特点有哪些
  • 第十次课作业(风险管理、项目收尾、知识产权)
  • 5.jenkins使用Email Extension Plugin插件配置邮件通知
  • @jsonView过滤属性
  • [iOS]Core Data浅析一 -- 启用Core Data
  • [译] React v16.8: 含有Hooks的版本
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Android Studio:GIT提交项目到远程仓库
  • bearychat的java client
  • Codepen 每日精选(2018-3-25)
  • gitlab-ci配置详解(一)
  • JS 面试题总结
  • Js基础——数据类型之Null和Undefined
  • MySQL-事务管理(基础)
  • oldjun 检测网站的经验
  • Python语法速览与机器学习开发环境搭建
  • Synchronized 关键字使用、底层原理、JDK1.6 之后的底层优化以及 和ReenTrantLock 的对比...
  • 利用DataURL技术在网页上显示图片
  • 前端代码风格自动化系列(二)之Commitlint
  • 如何设计一个比特币钱包服务
  • 实现菜单下拉伸展折叠效果demo
  • 由插件封装引出的一丢丢思考
  • 自制字幕遮挡器
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • #LLM入门|Prompt#2.3_对查询任务进行分类|意图分析_Classification
  • (10)ATF MMU转换表
  • (6)设计一个TimeMap
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (HAL库版)freeRTOS移植STMF103
  • (笔试题)合法字符串
  • (附源码)springboot人体健康检测微信小程序 毕业设计 012142
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (转)我也是一只IT小小鸟
  • (转)详解PHP处理密码的几种方式
  • *p=a是把a的值赋给p,p=a是把a的地址赋给p。
  • .NET Standard、.NET Framework 、.NET Core三者的关系与区别?
  • .NET 材料检测系统崩溃分析
  • .NET 使用 ILRepack 合并多个程序集(替代 ILMerge),避免引入额外的依赖
  • .net用HTML开发怎么调试,如何使用ASP.NET MVC在调试中查看控制器生成的html?
  • @Data注解的作用
  • [ vulhub漏洞复现篇 ] Celery <4.0 Redis未授权访问+Pickle反序列化利用
  • [Android 数据通信] android cmwap接入点
  • [ARM]ldr 和 adr 伪指令的区别