首頁  >  文章  >  後端開發  >  ThinkPHP自動驗證失敗的解決方法

ThinkPHP自動驗證失敗的解決方法

不言
不言原創
2018-06-06 15:43:472053瀏覽

這篇文章主要介紹了關於ThinkPHP自動驗證失敗的解決方法,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下

引用ThinkPHP2.0開發手冊:ThinkPHP手冊類型檢查只是針對資料庫層級的驗證,所以系統也內建了資料物件的自動驗證功能來完成模型的業務規則驗證,而大多數情況下面,資料物件是由表單提交的$_POST資料建立。

複製程式碼 程式碼如下:

/* 
* 登陆 
*/ 
public function Login(){ 
if($_POST['submit']){ 
$DB = D('Login');//自定义Model处理 
//if里面就是ThinkPHP的自动验证了. 
if(!$DB->create()){ 
$this->redirect(&#39;Index/Login&#39;, &#39;&#39;, 3, &#39;错误信息: &#39;.$DB->getError().&#39;<br/>系统将于3秒后返回重新登陆...&#39;); 
}else{ 
$con[&#39;LoginName&#39;] = $_POST[&#39;username&#39;]; 
$con[&#39;LoginPwd&#39;] = md5($_POST[&#39;userpwd&#39;]); 
$list = $DB->where($con)->find(); 
if(count($list)>0){ 
echo &#39;ok&#39;; 
}else{ 
$this->redirect(&#39;Index/Login&#39;, &#39;&#39;, 3, &#39;错误信息: 用户名或密码错误<br/>系统将于3秒后返回重新登陆...&#39;); 
} 
} 
return ; 
} 
//这里只是将模板文件的地址封装了一下. 
A(&#39;Public&#39;)->ShowPage(&#39;login&#39;); 
}

複製程式碼 程式碼如下:

<?php 
class LoginModel extends Model { 
// 设置数据表 
protected $tableName = &#39;admin&#39;; 
// 自动验证设置 
protected $_validate = array( 
array(&#39;username&#39;,&#39;require&#39;,&#39;用户名必须!&#39;, 1), 
array(&#39;userpwd&#39;,&#39;require&#39;,&#39;密码必须!&#39;, 1), 
); 
/* 自动填充 如果不能自动验证,将这段代码取消注释看看. 
protected $_auto = array( 
array(&#39;status&#39;,&#39;1&#39;,self::MODEL_INSERT), 
array(&#39;create_time&#39;,&#39;time&#39;,self::MODEL_INSERT,&#39;function&#39;), 
);*/ 
/*引用ThinkPHP2.0开发手册:ThinkPHP手册类型检查只是针对数据库级别的验证,所以系统还内置了数据对象的自动验证功能来完成模型的业务规则验证,而大多数情况下面,数据对象是由表单提交的$_POST数据创建。需要使用系统的自动验证功能,只需要在Model类里面定义$_validate属性 
*/ 
/*它这里说了,只需要在Model类里面定义$_validate属性,但是在使用ThinkPHP2.1的时候,的的确确不能通过验证,$DB->getError()无错误原因返回,且刷新的时候$DB->getError()返回"令牌表单错误" 
*/ 
} 
?>

相關推薦:

利用ThinkPHP內建的ThinkAjax實作非同步傳輸技術的實作方法

以上是ThinkPHP自動驗證失敗的解決方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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