Thinkphp 簡單表單提交驗證

具體的操做步驟以下:javascript

第一步:入口文件index.php內容 (此文件基本是屬於固定的格式)php

<?phpcss

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

define('APP_NAME','MyApp');java

define('APP_PAHT','./MyApp/');數據庫

require_once THINK_PATH.'ThinkPHP.php';app

$app=new App();框架

$app->run();dom

?>函數

 

第二步: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>

注意:

一、也就是一個form,action="__URL__/insert"表示提交到當前Action類(即IndexAction.class.php文件中)的insert函數;

二、此模板(靜態網頁)中的各個name要與user數據表的各個字段是同樣的名字,不然在insert函數中數據不能自動進庫。

三、驗證碼的刷新由靜態網頁負責。值相等由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')  //在增長時自動將時間擢填入表中

   );

  }

?>

註解:

一、文件名,類名必須用user,由於數據庫中對應的是user表;

二、其實只要寫一個框架就好了:

  class UserModel extends Model

  {

  }

但爲何還要var $_validate=array()和var $_auto=array()呢?那是由於:

var $_validate=array()是自動驗證的意思,var $_auto=array()是自動填充的意思。

自動驗證就是驗證數據的格式是否正確,自動填充就是你不輸入的值,它自動給你灌進去,好比'create_time'創建時間,咱們在模板中沒有這個,但這裏它就自動進庫了。

相關文章
相關標籤/搜索