开发者社区> 问答> 正文

关于php验证的函数问题 - php报错

"

我在设置一个登陆验证,从 页面$_POST过来一个数组,包含 user,password,verify的信息。

假设 $arr = $_POST;//获取的字段,包含 user,password,verify的信息

       $table = 'admin_user';//表名

我需要查询,并且验证用户名密码是否匹配,设置一个函数

function select($table,$arr){

$str = '`'.implode('`,`', array_keys('$arr')).'`'; 
    foreach($arr as $val){
        $val = "'".$val."'";
}
    $arr = "'".implode("','", $arr)."'";
    $sql = "select * from `{$table}`where {$str} = {$arr}";

现在的问题是,怎么把数组中不需要的元素 verify 验证码去掉,然后进行比对

}

如果mysql_query 执行的话,或者打印出来,格式也不太对。


"

展开
收起
montos 2020-06-04 16:57:28 1274 0
1 条回答
写回答
取消 提交回答
  • "

    <a href=""http://my.oschina.net/kopa"" target=""_blank"" rel=""nofollow"">@林伟盛

    <pre class=""brush:php; toolbar: true; auto-links: false;"">$not_needed = ['verify', ];

    foreach($post as $item => $value){ if(!in_array($item, $not_needed)){ $here[] = '' . $item . '="' . $value . '"'; } }

    $here = implode(' and ', $here); $sql = 'select * from table_name where ' . $here;



    ######unset($_POST['verify']);######

    unset($arr['verify']);


    $str = '`'.implode('`,`', array_keys('$arr')).'`'; 

    这是什么写法?

    ######回复 @Tuesday : 打错了,哈######回复 @林伟盛 : array_keys('$arr') 单引号呢, 你确定?######print_r出来 `user`###### 打印出来,select * from `admin_user`where `user`,`password` = 'kopa','3363064' 格式不太对。选择数据库和对比账号密码,应该是`user`='kopa'这样,求解怎么破######

    完整代码


    function select($table,$arr){
    unset($arr['verify']);
    $str = '`'.implode('`,`', array_keys($arr)).'`';
    foreach($arr as $val){
    $val = "'".$val."'";
    }
    $arr = "'".implode("','", $arr)."'";
    $sql = "select * from `{$table}`where {$str} = {$arr}";
    print_r($sql);
    // $query = mysql_query($sql);
    // return $query;


    }
    打印出来的效果:

    打印出来,select * from `admin_user`where `user`,`password` = 'kopa','3363064' 格式不太对

    希望大家指出问题

    ######你都会用逗号拼,就不会用and拼?######希望指教######

    引用来自“inuxor”的评论

    @林伟盛

    $not_needed = ['verify', ];
    
    foreach($post as $item => $value){
    	if(!in_array($item, $not_needed)){
    		$here[] = '`' . $item . '`="' . $value . '"';
    	}
    }
    
    $here = implode(' and ', $here);
    $sql = 'select * from table_name where ' . $here;



    感谢你的指导

    已经做出来了,也学到了很多东西。谢谢。

    function select($table,$arr){
        foreach ($arr as $key => $value) {
        $here[] = '`'.$key.'`='.$value;
    }
        $here = implode(' and ', $here);
        $sql = "select * from $table where ".$here;
        print_r($sql);
    //验证码环节在提交的时候unset掉了

    }

    "
    2020-06-04 17:47:35
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PHP安全开发:从白帽角度做安全 立即下载
PHP 2017.北京 全球开发者大会——高可用的PHP 立即下载
复杂PHP系统性能瓶颈排查及优化 立即下载