使用thinkPHP做注册程序的实例

登录界面:

 

数据库和数据表的结构

 

具体的操作步骤如下:

第一步:入口文件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.getElementById('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://www.cnblogs.com/licanhui/p/11174035.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/386411.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

安卓开发面试技能介绍,来一份全面的面试宝典练练手,不吃透都对不起自己

前言 网上有很多对程序员简历的一些指导&#xff0c;这里就不重述&#xff0c;大家可以搜下网上其他大神的总结&#xff0c;结合自身情况修改下。我有几点建议&#xff1a; 1.尽量不要花哨&#xff0c;程序员和设计师或者产品运营还不一样&#xff0c;我们的简历成功与否决定…

安卓开发面试题及答案,一次哔哩哔哩面试经历,年薪50W

没有稳定的工作&#xff0c;只有稳定的能力。 又到了万物复苏的季节&#xff0c;在程序猿这个行当里&#xff0c;作为 Android 开发出生的&#xff0c;在经历了八年的脱发生涯后&#xff0c;有了越来越多的想法和感触 趋势 随着各类移动跨平台的兴起&#xff0c;在 ReactNati…

安卓开发面试题!带着问题深入学习Handler,进阶学习资料!

进大厂本来就很难了&#xff0c;不过做足了准备&#xff0c;你会发现很多问题都迎刃而解了&#xff0c;当然有时候运气也占了一部分&#xff0c;除了运气以外&#xff0c;当然与我自身的努力也是分不开的。运气也是实力的一部分&#xff0c;毕竟天助自助者~ 每次到年底做总结的…

VueJS教程3

目录 13、Vue实例 13.1 动态组件&#xff08;Tab切换、简化版留言板&#xff09;13.2 使用Vue开发TodoList14、Vue CLI14.1 使用vue-cli开发TodoList接着VueJS教程2。 13、Vue实例 13.1 动态组件&#xff08;Tab切换、简化版留言板&#xff09; 参考&#xff1a;https://vuejs.…

春招我借这份PDF的复习思路,论程序员成长的正确姿势

一. 开发背景 想要成为一名优秀的Android开发&#xff0c;你需要一份完备的知识体系&#xff0c;在这里&#xff0c;让我们一起成长为自己所想的那样。 面试总结 面试大厂一定要做好充分的准备&#xff0c;没有准备就去面试完全是去当炮灰的&#xff0c;更是对自己的不负责。再…

T-SQL语句学习(三)

这部分介绍下视图、索引技术。 1、视图&#xff1a;是从一个或几个基本表&#xff08;或视图&#xff09;导出表。视图与基本表不同&#xff0c;是一个虚表。 当基本表中的数据发生变化时&#xff0c;从视图中查询出来的数据也会随之改变。 1.1 定义视图 a、创建视图的语法要求…

普通二本的辛酸Android面试之路,满满干货指导

一、自我介绍 应该算是起点比较高吧&#xff01;985大学毕业后面一直在国外读研。之前准备面试微软但是可能经验不够&#xff0c;没有通过。经过朋友介绍我准备回国&#xff0c;积累一些开发经验。于是我面试了国内大厂BATJ&#xff0c;还有一些其他比较知名的公司&#xff0c…

普通二本的辛酸Android面试之路,算法太TM重要了

前言 编程是一个江湖&#xff0c;江湖之大&#xff0c;鱼龙混杂&#xff0c;一部分江湖人士乃虾兵蟹将&#xff0c;一不小心就被一箭射死&#xff0c;我们称之为“码农”&#xff0c;这些人事江湖的重要组成部分&#xff0c;他们承担着堆砌代码&#xff0c;实现功能设计的使命…

SQL常用日期处理函数(转)

/**datepart()函数的使用 * datepart()函数可以方便的取到时期中的各个部分*如日期&#xff1a;2006-07--02 18&#xff1a;15&#xff1a;36.513* yy:取年 2006* mm:取月 7* dd:取月中的天 2* dy:取年中的天 183* wk:取…

最全的BAT大厂面试题整理,系列篇

前言 看到一篇文章中提到“最近几年国内的初级Android程序员已经很多了&#xff0c;但是中高级的Android技术人才仍然稀缺“&#xff0c;这的确不假&#xff0c;从我在百度所进行的一些面试来看&#xff0c;找一个适合的高级Android工程师的确不容易&#xff0c;一般需要进行大…

最全面试考点与面试技巧,大厂面经合集

前言 对于字节跳动的二面三面而言&#xff0c;FrameworkMVP架构HashMap原理性能优化Flutter源码分析等问题都成高频问点&#xff01;然而很多的朋友在面试时却答不上或者答不全&#xff01;今天在这分享下这些问点的视频解析给大家&#xff0c;希望对有需要的朋友有所帮助&…

阿里云sql监控配置-druid

今天我们说说数据源和数据库连接池&#xff0c;熟悉java开发的同仁应该都了解C3PO&#xff0c;在这里不做过多的赘述了&#xff0c;今天我们说的是阿里DRUID&#xff0c;druid是后起之秀&#xff0c;因为它的优秀很快占领了使用市场&#xff0c;下边我们一起来看看druid数据源的…

最全面试考点与面试技巧,真香!

写在前面 身边有不少去大厂面试的朋友&#xff0c;其中小金面试字节跳动的经历很有意义&#xff0c;在这里分享给大家。小金是末流211计算机专业大三本科生&#xff0c;前几天面试了字节跳动的广州Android开发实习生。下面是他的面试经历&#xff0c;还有一些他自己的经验。 …

最强Android教程!2021年Android面经分享,大厂面经合集

前言 找工作还是需要大家不要紧张&#xff0c;有我们干这一行的接触人本来就不多 难免看到面试官会紧张&#xff0c;主要是因为怕面试官问的问题到不上来&#xff0c;那时候不要着急 &#xff0c;答不上了的千万不然胡扯一些&#xff0c;直接就给面试官说这块我还没接触到&…

最强整理!字节跳动历年Android中高级面试题全收录!附超全教程文档

开头 让我们一起来看看&#xff0c;字节跳动的第三面&#xff0c;面试官都问了什么&#xff1f;&#xff08;第一二面的题目及答案已整理&#xff0c;需要的可以在文末领取&#xff09; 从七月中旬开始&#xff0c;我前前后后差不多一共投递了八十份简历&#xff0c;到目前为…

最新BAT大厂面试者整理的Android面试题目模板,分享PDF高清版

前言 从毕业到现在面试也就那么几家公司&#xff0c;单前几次都比较顺利&#xff0c;在面到第三家时都给到了我offer&#xff01;前面两次找工作&#xff0c;没考虑到以后需要什么&#xff0c;自己的对未来的规划是什么&#xff0c;只要有份工作&#xff0c;工资符合自己的要求…

最新BAT大厂面试者整理的Android面试题目模板,成功入职字节跳动

前言 **一年中第一段跳槽高潮就要来了&#xff0c;**看到同事一个个离职&#xff0c;又有一部分同事已经找到满意的工作&#xff0c;于是自己也盲目的开始面试起来&#xff08;期间也没有准备充分&#xff09;&#xff0c;日夜奔走&#xff0c;简历投了很多家公司&#xff0c;…

算法题+JVM+自定义View,终局之战

关于面试题 打个比方&#xff0c;如果把找工作理解成考大学&#xff0c;面试就是高考&#xff0c;市面上的“真题”就是模拟试卷。我们会很容易倾向于在面试前寻找对应公司的面试“真题”&#xff0c;重点准备&#xff0c;期待“押题”成功。但实际上&#xff0c;即使面试同一…

系统学Android从零开始,搞懂这些直接来阿里入职

开头 很多人说Android开发前景越来越差了 我觉得这个回答是片面的 首先Android应用开发前景差是在最近两年出现的&#xff0c;也就是从2018开始&#xff0c;从那时起移动端的程序员已经慢慢出现供大于求的局面&#xff0c;本人作为移动端开发&#xff0c;深知这一点。 然而也…

Bginfo软件在域的部署和应用

在企业的IT管理中&#xff0c;很多用户都不知道怎么去查看自己计算机的IP地址、登陆帐户。而对于网络管理人员来说&#xff0c;他们可能需要知道用户在域中登录的一些信息&#xff0c;如那些用户登录过&#xff0c;在什么时间登录&#xff0c;IP和MAC地址是多少&#xff1b;需要…