zoukankan      html  css  js  c++  java
  • JoshChen防止前台恶意修改数据

    PHP程序员都应该知道,前台的Form表单是用的非常的多的,包括登录,注册,录一些相关的信息等等,几乎都用到表单,而后台的代码,现在都是只穿整个数组进去后,就可以实现数据库的添加或修改了。

    很多框架都做了这样的封装,thinkphp,ecstore等也不例外。

    下面将分享个前台防止恶意修改字段的方法。下面将以ecstore开发为例:

    第一步:

    首先我们先确认一下表的结构,我们先举个例子:

    info表:id(自增ID),name(姓名),sex(性别),age(年龄),我们默认都为字符串的类型。

    第二步:
    前台的页面代码:

    <form id="form1" action="index.php" method="post">
        <input type="text" name="name" />
        <input type="text" name="sex" />
        <input type="text" name="age" />
    </form>

    第三步:

    后台index.php代码:

    <?php
    $arr = $_POST;
    $info_mdl = $this->app->model("info");
    //修改id为1的数据
    $info_mdl->update($arr,array('id'=>1));
    ?>

    就是这样,非常方便又快捷的完成了修改功能。

    但是你会发现如果稍微聪明点的程序员,访问了你的网站后,按了下F12,查看元素,自己加一个input或者修改下name="id" ,然后给他赋值。改成别人的ID,你想想会出现什么状况呢?

    我想你应该也清楚了,将会把目前的这个ID为1的数据,将1改成了其他的值了。

    所以,教给大家一个解决的方法:

    第四步:

    在修改的代码前使用:

    <?php
        //定义好你自己数据库的字段。放在一个数组里
        $arr_colunm = array('name','sex','age');
        //进行foreach循环遍历
        foreach($_POST as $post_key=>$post_value){
            //判断name是否存在于该数据,如果在则通过,不存在则执行下面if条件
            if(!in_array($_post_key,$arr_colunm)){
                //清除不是 name,sex,age字段的所有数据。
                unset($_POST[$post_key]);
            }
        }
        //现在再进行修改就可以实现了。
        $info_mdl->update($_POST);
    ?> 

    主要就是这样了,小小细节,实现前台防止恶意修改,非常实用,分享给大家了。

    有Ecstore开发兴趣的朋友可以加我们的交流群:18886538

    申请入群时请说明来自博客园

  • 相关阅读:
    Codeforces Round #445 A. ACM ICPC【暴力】
    “玲珑杯”ACM比赛 Round #1
    HDU 6034 Balala Power!【排序/进制思维】
    2017多校训练1
    POJ 3620 Avoid The Lakes【DFS找联通块】
    Educational Codeforces Round 1D 【DFS求联通块】
    Openjudge1388 Lake Counting【DFS/Flood Fill】
    洛谷 P1506 拯救oibh总部【DFS/Flood Fill】
    小白书 黑白图像【DFS/Flood Fill】
    SSOJ 2316 面积【DFS/Flood Fill】
  • 原文地址:https://www.cnblogs.com/cchulong/p/3491237.html
Copyright © 2011-2022 走看看