首頁  >  文章  >  後端開發  >  第五天 ThinkPHP手把手快速拼接網站(五)

第五天 ThinkPHP手把手快速拼接網站(五)

WBOY
WBOY原創
2016-08-08 09:22:251040瀏覽

      6月11日,晴天。 「梅子留酸軟齒牙,芭蕉分綠與窗紗。日長睡起無情思,閒看兒童捉柳花。」

         寫

Login模組的login方法  ,主要是改M方法為D方法

<?php
class LoginAction extends Action {
	function index() {
		// 配置页面显示内容
		$this->assign ( 'title', '后台管理系统' );
		$this->display ();
	}
	
	// 用户登录页面
	function login() {
		header ( "Content-Type:text/html; charset=utf-8" );
		
		$username=$_POST['username'];
		$password=md5($_POST['password']);
		
		$User = D ( "User" ); // 参数的User必须首字母大写,否则自动验证功能失效!
		if (! $User->create ()) {
			$this->error ( $User->getError () );
		} else {
			// 查找输入的用户名是否存在
			if ($User->where ( "username ='$username' AND password = '$password'" )->find ()) {
				session ( username, $username );
				$url = U ( '/Index/index/username/' . $username );
				redirect ( $url, 5, '跳转中...' );
			} else {
				$this->error ( '用户名或密码错误' );
			}
		}
}
            其中,$User ); 表示實例化User模型,會匯入目前專案下面的Lib/Model/UserModel.class.php文件,然後實例化UserModel類,所以,實際上的程式碼可能和下面的等效:
<span style="font-family:Comic Sans MS;font-size:14px;">                               import('@.Model.UserModel');
                               $User = new UserModel();</span>
      對象後,將自動收集提交過來的表單資料。 在將表單寫入資料表之前,常常會有一些資料的偵測(提交的使用者名稱是否符合要求)與處理(如範例中的驗證碼的比對)。 create() 方法就支援資料的自動驗證與自動完成。

           Sharp            <span></span><span></span><span></span><span></span><span></span><span></span><span></span>
自訂User模型類別

admin/Lib/Model/UserModel.class .php

<?php
/*
 * 自定义User模型类
 * 功能:1.完成自动验证功能
 */
class UserModel extends Model{		
	//自动验证成员属性(二维数组,每个数组代表一个验证规则)
	//array(&#39;验证字段&#39;,&#39;验证规则&#39;,&#39;错误提示&#39;,&#39;验证条件&#39;,&#39;附加规则&#39;,&#39;验证时间&#39;),
	//验证字段:表单中的字段名称,也可以是表单中的一些辅助字段,例如验证码,重复密码等
	//验证规则:
	//错误提示:出现错误,抛出一个什么样的提示告知用户
	//验证条件:参考手册6.15 (共有0,1,2三种值)
	//附加规则:比如使用正则表达式验证,callback函数验证等,默认使用正则验证
	//验证时间:1.新增时验证 2.编辑时验证 3.全部清况下验证
	protected $_validate=array(
		array(&#39;username&#39;,		&#39;require&#39;,		&#39;用户名必须非空&#39;),
		array(&#39;username&#39;,		&#39;callback_checklen&#39;,	&#39;用户名过长或过短&#39;,	0,	&#39;callback&#39;),
		array(&#39;password&#39;,		&#39;require&#39;,		&#39;密码必须非空&#39;	),
		array(&#39;repassword&#39;,	&#39;require&#39;,		&#39;请重复输入密码&#39;		),
	//	array(&#39;password&#39;,		&#39;repassword&#39;,&#39;两次输入的密码不一致,请重新输入&#39;,		0,	&#39;confirm&#39;),
		array(&#39;verify&#39;,&#39;require&#39;,&#39;验证码必须填写!&#39;),
		array(&#39;verify&#39;,&#39;callback_checkCode&#39;,&#39;验证码错误!&#39;,0,&#39;callback&#39;),  //使用回调函数checkCode
	);
	
	//字段长度验证回调函数(ThinkPHP会自动帮我们传递参数)
	function callback_checklen($data){
		if(strlen($data)>15 || strlen($data)<5){
			return false;
		}
		return true;
	}
	//验证码回调函数(ThinkPHP会自动帮我们传递参数)
	function callback_checkCode($data){
		if(md5($data)!=$_SESSION[&#39;verify&#39;]){
			return false;
		}
		return true;
	}
	
	//自动完成,在create时自动执行
	//array(&#39;填充字段&#39;,&#39;填充内容&#39;,&#39;填充条件&#39;,&#39;附加规则&#39;);
	//填充字段 
	protected $_auto=array(
			array(&#39;password&#39;,&#39;md5&#39;,3,&#39;function&#39;),
			array(&#39;ip&#39;,&#39;callback_returnip&#39;,1,&#39;callback&#39;),
			array(&#39;createtime&#39;,&#39;time&#39;,1,&#39;function&#39;),
	); 
	
	function callback_returnip(){
			return $_SERVER[&#39;REMOTE_ADDR&#39;];	
	}
}
?>
        
   驗證規則的定義是統一的規則,定義格式為:
array(     
        array(验证字段1,验证规则,错误提示,[验证条件,附加规则,验证时间]),    
        array(验证字段2,验证规则,错误提示,[验证条件,附加规则,验证时间]),    
 ...... );
說明

驗證欄位:(必須)需要驗證的表單欄位名稱,這個欄位不一定是表單欄位,也可以是一些資料庫的一些輔助字段,例如確認密碼和驗證碼等等。有個別驗證規則和欄位無關的情況下,驗證欄位是可以隨意設定的,例如expire有效期限規則是和表單欄位無關的。 如果定義了欄位對應的話,這裡的驗證欄位名稱應該是實際的資料表欄位而不是表單欄位。 驗證規則:(必須)要進行驗證的規則,需要結合附加規則,如果在使用正規驗證的附加規則情況下,系統還內建了一些常用正規驗證的規則,可以直接作為驗證規則使用,包括: require 欄位必須、email 信箱、url URL位址、currency 貨幣、number 數字。 提示訊息:(必須)用於驗證失敗後的提示訊息定義驗證條件:(可選)包含以下幾種情況:Model::EXISTS_VALIDATE 或0 存在欄位就驗證(預設)Model::MUST_VALIDATE 或1 必須驗證Model::VALUE_VALIDATE或2 值不為空的時候驗證      3.編寫資料庫表think_news




plIndexindex.html



     修改編輯新聞按鈕如下:

CREATE TABLE `think_news` (
  
	`id` int(11) NOT NULL AUTO_INCREMENT,
  
	`author` int(11) NOT NULL,
 
	`subject` varbinary(256) NOT NULL,
 
	`createtime` int(11) NOT NULL,
 
	`lastmodifytime` int(11) NOT NULL,
  
	`message` mediumtext NOT NULL,
  
	 PRIMARY KEY (`id`)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;
       其中,'__PUBLIC__'表示站點公共目錄,'__URL__'站點公共目錄,'__URL__'6 adminLibActionIndexAction.class.php中加入函數news
 <li><a class="shortcut-button" href="__URL__/news"><span> <img src="__PUBLIC__/Images/admin/icons/pencil_48.png" alt="icon" /><br />
        编辑新闻 </span></a></li>

以上就介紹了第五天 ThinkPHP手把手快速拼接網站(五),包括了方面的內容,希望對PHP教程有興趣的朋友有所幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn