在功能中使用trim时无法编辑

时间:2018-03-31 08:06:34

标签: php html5

我正在设计一个应用程序,在我的模态中遇到一个奇怪的错误,我无法编辑条目

下面是显示错误的模式:

 <?php
    include_once dirname(dirname(dirname(__FILE__))) . "/const.php";
    include_once PHP_PATH . "/config1.php";
    include_once CONFIG_PATH.'/modal/routemgmt/route_mgmt.php';

   function sanitize($input) {
   if (is_array($input))
        return array_map('sanitize', $input);
    else
        return htmlspecialchars(trim($input));
}

    // Sanitize all the incoming data
    $sanitized = array_map('sanitize', $_POST);
    $reason = $sanitized['reason'];

    if($reason == "insert"){
        $staffs = [];
        $stops = [];
        $name = $sanitized['rname'];
        $code = $sanitized['rcode'];
        $desc = $sanitized['rdesc'];
        $vnum = $sanitized['vnum'];
        $stf = $_POST['staff'];
        $st = isset($_POST['stops'])? $_POST['stops']: [];
        $st = [];
    //    foreach($staffs as $staff){
    //        $stf[] = array_map('sanitize', $staff);
    //    }
    //    if(isset($stops)){
    //        foreach($stops as $stop){
    //            $st[] = array_map('sanitize', $stop);
    //        }
    //    }

        $val = insertRoute($conn,$name, $code, $desc, $vnum, $stf, $stops);
        echo $val;
    }

    if($reason == "view"){
        $id = $sanitized['id'];
        $val = [];

        $val = viewRoute($conn,$id);
        echo json_encode($val);
    }

    if($reason == "edit"){
        $stf = [];
        $stp = [];
        $id = $sanitized['pkid'];
        $name = $sanitized['rname'];
        $code = $sanitized['rcode'];
        $desc = $sanitized['rdesc'];
        $vnum = $sanitized['vnum'];
        $estaffs = $_POST['estaff'];
        $estops = $_POST['estops'];
        $edel = $_POST['del'];

        foreach($estaffs as $val){
            $stf[] = array_map('sanitize', $val);
        }
        foreach($estops as $val){
            $stp[] = array_map('sanitize', $val);
        }
        $cnt = 0;$n_stp = [];
        for($i = 0; $i<sizeof($stp); $i++){
            if($stp[$i]['stat'] != "Exist"){
                $n_stp[$cnt] = $stp[$i];
                $cnt++;
            }
        }

        $val = editValues($conn,$id, $name, $code, $desc, $vnum, $stf, $n_stp, $edel);
        echo $val;
    }

    if($reason == "delRoute"){
        $id = $sanitized['id'];
        $val = delRoute($conn,$id);
        echo $val;
    }

I tried changing the function to :

    function sanitize($input) {
        return htmlspecialchars(trim($input));
    }

但后来它开始给我以下错误

<b>Warning</b>:  trim() expects parameter 1 to be string, array given in <b>C:\xampp\htdocs\gurukul\demo2\controller\routemgmt\route_mgmt.php</b> on line <b>7</b><br />

据我所知,它在修剪中传递数组而不是字符串。 有人可以指导我如何解决这个问题?尝试了一些调试步骤,但没有成功

1 个答案:

答案 0 :(得分:0)

在这个函数中,你将在if语句中返回数组,而它应该始终是一个字符串。

<强>替换

   function sanitize($input) {
   if (is_array($input))
        return array_map('sanitize', $input);
    else
        return htmlspecialchars(trim($input));
}

。通过

   function sanitize($input) {
   if (is_array($input))
        return sanitize($input);
    else
        return htmlspecialchars(trim($input));
   }

您需要将值返回为字符串而不是数组。不要弄乱$_POST一个。

全部替换:

array_map('sanitize', $val);

。通过

sanitize($val);