JoshChen防止前台恶意修改数据
PHP程序員都應(yīng)該知道,前臺(tái)的Form表單是用的非常的多的,包括登錄,注冊(cè),錄一些相關(guān)的信息等等,幾乎都用到表單,而后臺(tái)的代碼,現(xiàn)在都是只穿整個(gè)數(shù)組進(jìn)去后,就可以實(shí)現(xiàn)數(shù)據(jù)庫的添加或修改了。
很多框架都做了這樣的封裝,thinkphp,ecstore等也不例外。
下面將分享個(gè)前臺(tái)防止惡意修改字段的方法。下面將以ecstore開發(fā)為例:
第一步:
首先我們先確認(rèn)一下表的結(jié)構(gòu),我們先舉個(gè)例子:
info表:id(自增ID),name(姓名),sex(性別),age(年齡),我們默認(rèn)都為字符串的類型。
第二步:
前臺(tái)的頁面代碼:
第三步:
后臺(tái)index.php代碼:
<?php $arr = $_POST; $info_mdl = $this->app->model("info"); //修改id為1的數(shù)據(jù) $info_mdl->update($arr,array('id'=>1)); ?>就是這樣,非常方便又快捷的完成了修改功能。
但是你會(huì)發(fā)現(xiàn)如果稍微聰明點(diǎn)的程序員,訪問了你的網(wǎng)站后,按了下F12,查看元素,自己加一個(gè)input或者修改下name="id" ,然后給他賦值。改成別人的ID,你想想會(huì)出現(xiàn)什么狀況呢?
我想你應(yīng)該也清楚了,將會(huì)把目前的這個(gè)ID為1的數(shù)據(jù),將1改成了其他的值了。
所以,教給大家一個(gè)解決的方法:
第四步:
在修改的代碼前使用:
<?php//定義好你自己數(shù)據(jù)庫的字段。放在一個(gè)數(shù)組里$arr_colunm = array('name','sex','age');//進(jìn)行foreach循環(huán)遍歷foreach($_POST as $post_key=>$post_value){//判斷name是否存在于該數(shù)據(jù),如果在則通過,不存在則執(zhí)行下面if條件if(!in_array($_post_key,$arr_colunm)){//清除不是 name,sex,age字段的所有數(shù)據(jù)。unset($_POST[$post_key]);}}//現(xiàn)在再進(jìn)行修改就可以實(shí)現(xiàn)了。$info_mdl->update($_POST); ?>主要就是這樣了,小小細(xì)節(jié),實(shí)現(xiàn)前臺(tái)防止惡意修改,非常實(shí)用,分享給大家了。
?
有Ecstore開發(fā)興趣的朋友可以加我們的交流群:18886538
申請(qǐng)入群時(shí)請(qǐng)說明來自博客園
轉(zhuǎn)載于:https://www.cnblogs.com/cchulong/p/3491237.html
總結(jié)
以上是生活随笔為你收集整理的JoshChen防止前台恶意修改数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用 XML 实现按钮改变焦点设置背景图
- 下一篇: 报表导航