這樣會形成一個問題 就是 字段名和表單name同樣 很不安全啊javascript
所以 須要在model中作個字段映射,(model的命名必須和數據庫中要操做的代表同樣《模型名首字母大寫》)php
protected $_map=array(html
'title1'=>'title', //前面是表單的名字 映射到數據庫中的字段名字java
'neirong1'=>'neirong', //這裏是數值的最後一個值 純php中不要,而在thinkphp中 須要在最後一個也加一個,thinkphp
);數據庫
這樣即可以在action中 用D $news=D("news"); news是模型名字,去掉Model的....安全
要注意的是表單的字段名不能有點ide
要使用模型的自動建立create方法的話,ThinkPHP的表單名稱就是數據表的字段名稱,若是擔憂這樣不夠安全,能夠定義字段映射,來隱藏實際的數據表字段名稱。post
下面的例子就運用了字段映射定義。請注意看表單名稱和字段的對應關係。ui
標題: | |
郵箱: | |
內容: | |
驗證碼: | ABCD |
示例源碼
控制器IndexAction類
<?php class IndexAction extends Action{ // 首頁 public function index(){ $Form = D("Form"); $list = $Form->findAll(); $this->assign('list',$list); $this->display(); } // 處理表單數據 public function insert() { $Form = D("Form"); if($Form->create()) { $Form->add(); $this->redirect(); }else{ header("Content-Type:text/html; charset=utf-8"); exit($Form->getError().' [ <A HREF="javascript:history.back()">返 回</A> ]'); } } // 生成驗證碼 public function verify() { import("ORG.Util.Image"); Image::buildImageVerify(); } } ?>
很明顯,數據表名是form
模型 FormModel 類
<?php class FormModel extends Model { protected $_map = array( 'name'=>'title',//前面是表單裏面的後面是數據表裏面的 'mail'=>'email', 'remark'=>'content', ); // 自動驗證設置 protected $_validate = array( array('name','require','標題必須!'), array('mail','email','郵箱格式錯誤!',2), array('remark','require','內容必須'), array('verify','require','驗證碼必須!'), array('verify','CheckVerify','驗證碼錯誤',0,'callback'), ); // 自動填充設置 protected $_auto = array( array('status','1','ADD'), array('create_time','time','ADD','function'), ); public function CheckVerify() { return md5($_POST['verify']) == $_SESSION['verify']; } } ?>