dpt8910 2015-11-07 21:19
浏览 39
已采纳

在boolean [duplicate]上调用成员函数bind_param()

This question already has an answer here:

I am currently working through my code and trying to implement measures to protect from SQL injections. My other pages work fine however this page is a little different.

The user is to determine which table they are to delete from, this is by using the $Level variable, (don't worry, this is restricted to three). It worked with the old vulnerable method but doesn't now. Any ideas?

if (isset($_POST['Delete']))
{
$Level = trim($_POST['Level']);
$UserName = trim($_POST['UserName']);
//----------------Check if Exists------------------//
$Check = $conn->prepare("SELECT * FROM ? WHERE UserName = ?");
$Check->bind_param('ss', $Level, $UserName);
$Check->execute();
$result = $Check->get_result();
$count = $result->num_rows;
if ($count>0)
{   
    $Confirm= $UserName . ' Deleted';
    //----------------Delete SQL-------------------//
    $Delete = "DELETE FROM $Level WHERE UserName = '$UserName'";
    $Delete = mysqli_query($conn,$sql);
    header( "refresh:5;url=stratdeleteuser.php" );
}
else 
{
    $Confirm= 'No Matches Found';
}

}

</div>
  • 写回答

1条回答 默认 最新

  • doubishi8303 2015-11-07 22:48
    关注

    An if statement would suffice to protect the user input

    if ($Level == 'strategic' || $Level == 'tactical')
    {
        //----------------Check if Exists------------------//
        $Check = $conn->prepare("SELECT * FROM $Level WHERE UserName = ?");
        $Check->bind_param('s', $UserName);
        $Check->execute();
        $result = $Check->get_result();
        $count = $result->num_rows;
        if ($count>0)
        {   
            $Confirm= $UserName . ' Deleted';
            //----------------Delete SQL-------------------//
            $Delete = $conn->prepare("DELETE FROM $Level WHERE UserName = ?");
            $Delete->bind_param('s', $UserName);
            $Delete->execute();
            $Confirm = $UserName . ' Deleted';
            header( "refresh:5;url=stratdeleteuser.php" );
        }
        else 
        {
            $CheckErr= 'No Matches Found';
        }
    }
    

    I took care of the latter part for you to implement the OO style as Terminus rightfully suggested

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于#hadoop#的问题
  • ¥15 (标签-Python|关键词-socket)
  • ¥15 keil里为什么main.c定义的函数在it.c调用不了
  • ¥50 切换TabTip键盘的输入法
  • ¥15 可否在不同线程中调用封装数据库操作的类
  • ¥15 微带串馈天线阵列每个阵元宽度计算
  • ¥15 keil的map文件中Image component sizes各项意思
  • ¥20 求个正点原子stm32f407开发版的贪吃蛇游戏
  • ¥15 划分vlan后,链路不通了?
  • ¥20 求各位懂行的人,注册表能不能看到usb使用得具体信息,干了什么,传输了什么数据