飞鸽传书mayfish 数据入库验证
生活随笔
收集整理的這篇文章主要介紹了
飞鸽传书mayfish 数据入库验证
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
我飛鴿傳書專門為大家轉(zhuǎn)載最新技術(shù)文檔,謝謝!來自 YAGAS?的原創(chuàng)作品:
?
一般在把數(shù)據(jù)寫入數(shù)據(jù)庫之前,先對將要寫入的數(shù)據(jù)進行校驗,可以避免出現(xiàn)比較嚴重的安全問題(例如一般性的SQL注入攻擊)。
mayfish 可以靈活的自定義將要執(zhí)行寫入的數(shù)據(jù)內(nèi)容的校驗規(guī)則,以減少開發(fā)人員手動對每一個字段的數(shù)據(jù)進行校驗的麻煩。
例子如下:
一、首先定義數(shù)據(jù)庫模塊
?1?<?php?2?class?MemberModel?extends?AppModel
?3?{
?4?????/**?設(shè)置數(shù)據(jù)庫表名稱?**/
?5?????protected?$tableName?=?"members";
?6?????
?7?????/**
?8??????*?數(shù)據(jù)驗證規(guī)則
?9??????*/
10?????protected?$verify?=?array(
11?????????array("NotEmpty",?"username",?"用戶名不能留空"),
12?????????array("hasOne",???"username",?"此用戶已經(jīng)存在,請換另一個用戶名稱再試一次"),
13?????????array("NotEmpty",?"password",?"密碼不能留空"),
14?????????array("NotEmpty",?"email",????"郵箱地址不能留空"),
15?????????array("isEmail",??"email",????"郵箱地址格式不正確"),
16?????????array("hasOne",??"email",?????"郵箱地址已經(jīng)被占用")
17?????);
18?????
19?????
20?
21?????/**
22??????*?覆蓋父類添加數(shù)據(jù)入庫的方法
23??????*?先對用戶密碼進行md5加密,再調(diào)用父類的方法寫入數(shù)據(jù)庫中
24??????*/
25?????public?function?create($data)?{
26?????????$data?=?array_map("addslashes",?$data);??//將數(shù)據(jù)中的標點符號(單、雙引號)進行安全轉(zhuǎn)義
27?????????$data["password"]?=?md5($data["password"]);
28?????????return?parent::create($data);
29?????}
30?????
31?????
32?}
33??>
?
二、執(zhí)行數(shù)據(jù)寫入操作
?1?????//執(zhí)行寫入數(shù)據(jù)的片段...?2?
?3?????//執(zhí)行數(shù)據(jù)入庫的操作
?4?????private?function?PostData()?{
?5?????????$fields?=?array("username",?"password",?"email");
?6?????????$post???=?array_map("trims",?$_POST);?//清除所有數(shù)據(jù)兩邊多余的空格
?7?????????$post???=?parseHTML($post,?$fields);??//將指定的字段內(nèi)容進行清除HTML處理
?8?????????$data???=?parseFields($post,?$fields);??//提取可以寫入數(shù)據(jù)庫的字段(防止別人繞過你的頁面進行提交一些別有用心的數(shù)據(jù))
?9?
10?????????$DB?=?&?M("member");
11?
12?????????//進行數(shù)據(jù)驗證
13?????????if?(!$DB->verify($data))?{
14?????????????
15?????????????//驗證失敗,取出失敗的原因,并提交到模板頁面中
16?????????????$this->assign("error",?$DB->getVerifyError());
17?
18?????????????//把提交過來的數(shù)據(jù)也提交到模板中(用以實現(xiàn)用戶好像沒有離開過頁面的感覺)
19?????????????$this->assign("default",?$post);
20?????????????
21?????????????//渲染注冊頁面模板
22?????????????$this->display("/register.html");
23?????????}
24?????????else?{
25?????????????//寫入數(shù)據(jù)庫
26?????????????$result?=?$DB->create($data);
27?????????????
28?
29?????????????//返回布爾型,說明數(shù)據(jù)寫入失敗,渲染注冊頁面模板
30?????????????if?(is_bool($result))?{
31?????????????????$this->assign("default",?$post);
32?????????????????$this->display("/register.html");
33?????????????}
34?????????????else?{
35?????????????????//注冊成功,渲染注冊成功頁面模板
36?????????????????$this->assign("username",?$data["username"]);
37?????????????????$this->display("/reg_success.html");
38?????????????}
39?????????}
40?????}
?
?可執(zhí)行驗證的規(guī)則有
NotEmpty? 不能為空
Number???? 只能是整數(shù)
isEmail ? ??? 郵箱地址是否正確
hasOne???? 是否是唯一(是否重復,是否已經(jīng)存在)
Regex?????? 自定義正則表達式
?
驗證的格式為
array(驗證方法, 進行驗證的字段名稱, 驗證錯誤的提示信息)
?
對于正則表達示的驗證
array("Regex", "mobile", '/^13/d{9}$/', "用戶名不能留空")
這里是下載頁面: http://www.freeeim.com/
總結(jié)
以上是生活随笔為你收集整理的飞鸽传书mayfish 数据入库验证的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: VTK修炼之道35:边缘检测_Lapla
- 下一篇: 《飞鸽传书2007怎么用》这种即时通讯技