>  기사  >  백엔드 개발  >  5일차 ThinkPHP의 단계별 빠른 웹사이트 접합 (5)

5일차 ThinkPHP의 단계별 빠른 웹사이트 접합 (5)

WBOY
WBOY원래의
2016-08-08 09:22:25994검색

6월 11일, 화창한 날. "자두는 이를 시리게 하고, 바나나는 녹색과 방충망으로 갈라진다. 긴 하루를 보낸 후 아이들이 버드나무 꽃을 잡는 모습을 보며 잠을 잔다." 🎜>

10. 백엔드 쓰기-계속-2 

1,변경쓰기로그인모듈 로그인 방법 , 주로 M 방식을 D 방식으로 변경                                        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 ( '用户名或密码错误' );
			}
		}
}
'사용자'); <span>$User </span><span>=</span><span> D</span><span>(</span><span>'User'</span><span>);</span><code><span>实例化User模型,会导入当前项目下面的Lib/Model/UserModel.class.php文件,然后实例化UserModel类,所以,实际上的代码可能和下面的等效:</span>가 아래의 현재 프로젝트 Lib/Model/UserModel.class.php 파일로 가져올 User 모델을 인스턴스화한 다음 UserModel 클래스를 인스턴스화한다는 의미이므로 실제 코드는 다음과 동일할 수 있습니다.
<span style="font-family:Comic Sans MS;font-size:14px;">                               import('@.Model.UserModel');
                               $User = new UserModel();</span>
이후 create()가 데이터 개체를 생성한 후 제출된 양식 데이터가 자동으로 수집됩니다.

데이터 테이블에 양식을 작성하기 전에 일부 데이터 감지(제출된 사용자 이름이 요구 사항을 충족하는지 여부) 및 처리(예: 예의 인증 코드 비교)가 있는 경우가 많습니다. create() 메소드는 데이터 자동 확인 및 자동 완성을 지원합니다.                                                                                                      >                                                   모델 클래스.

 2. 쓰기Custom 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,验证规则,错误提示,[验证条件,附加规则,验证时间]),    
 ...... );
설명
유효성 검사 필드: (필수) 확인해야 하는 양식 필드의 이름입니다. 이 필드는 데이터베이스 필드일 필요는 없지만 비밀번호 및 인증 코드 확인과 같은 양식의 일부 보조 필드일 수도 있습니다. 등. 필드와 관련이 없는 개별 유효성 검사 규칙이 있는 경우 유효성 검사 필드를 마음대로 설정할 수 있습니다. 예를 들어 만료 유효성 규칙은 양식 필드와 관련이 없습니다. 필드 매핑이 정의된 경우 여기의 유효성 검사 필드 이름은 양식 필드가 아닌 실제 데이터 테이블 필드여야 합니다.
검증 규칙: (필수) 검증 규칙은 추가 규칙과 결합되어야 합니다. 추가 정기 검증 규칙을 사용하는 경우 시스템에는 일반적으로 사용되는 몇 가지 정기 검증 규칙도 내장되어 있습니다. 다음을 포함하여 직접 확인 규칙으로 사용합니다. 필수 필드는 이메일 주소, URL URL 주소, 통화 통화, 숫자입니다.
프롬프트 메시지: (필수) 검증 실패 후 프롬프트 메시지를 정의하는 데 사용
검증 조건: (선택) 다음 상황을 포함합니다.
모델::EXISTS_VALIDATE 또는 필드가 존재하는지 확인하는 0(기본값)
모델::MUST_VALIDATE 또는 1을 확인해야 합니다.
값이 비어 있지 않은 경우 모델::VALUE_VALIDATE 또는 2를 확인해야 합니다.

3. 쓰기데이터베이스 테이블think_news

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;

5. adminTplIndexindex.html

수정 뉴스 편집 버튼을 다음과 같이 수정하세요.

 <li><a class="shortcut-button" href="__URL__/news"><span> <img src="__PUBLIC__/Images/admin/icons/pencil_48.png" alt="icon" /><br />
        编辑新闻 </span></a></li>
                                                           사이트 공개 디렉터리, '__URL__'<code><span> 其中,'__PUBLIC__'表示</span>은 현재 모듈의 URL 주소를 나타냅니다. <span>站点公共目录,<code>'__URL__'
                                                                     > 🎜>

위 내용은 ThinkPHP 단계별 빠른 웹사이트 접합(5) 5일차 관련 내용을 포함하여 PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.