关于php验证的函数问题

林伟盛 发布于 2014/11/19 10:30
阅读 181
收藏 0
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 执行的话,或者打印出来,格式也不太对。


加载中
1
inuxor
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;



0
大王叫我来卖萌
大王叫我来卖萌
unset($_POST['verify']);
0
Tuesday
Tuesday

unset($arr['verify']);


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

这是什么写法?

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

完整代码


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' 格式不太对

希望大家指出问题

0
inuxor
inuxor
你都会用逗号拼,就不会用and拼?
林伟盛
林伟盛
希望指教
0
林伟盛
林伟盛

引用来自“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掉了

}

返回顶部
顶部