加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 在用户输入上使用白名单

发布时间:2020-12-13 17:41:09 所属栏目:PHP教程 来源:网络整理
导读:我有一个简单的表单,使用用户名和密码登录.我想应用白名单只允许某些字符.我不知道是否有人要求这个,但这里是检索用户名和密码的代码: $stmt = $conn2-prepare("SELECT username FROM users WHERE username = ? AND password = ?");$stmt-bind_param("ss",$
我有一个简单的表单,使用用户名和密码登录.我想应用白名单只允许某些字符.我不知道是否有人要求这个,但这里是检索用户名和密码的代码:

$stmt = $conn2->prepare("SELECT username FROM users WHERE username = ? AND password = ?");

$stmt->bind_param("ss",$username,$password);      
$stmt->execute();
$stmt->store_result();

我是否包含以下内容:

preg_replace( "/[^a-zA-Z0-9_]/","",$stringToFilter );

如果是这样,我在哪里将它包含在我的代码中?如果用户尝试输入除白名单之外的内容,会发生什么?

补充:好的,如果是在注册期间,它是使用INSERT来存储用户名和密码?

//insert data
$stmt = $conn2->prepare("INSERT INTO users (username,email,password) VALUES (?,?,?)");

//bind the parameters
$stmt->bind_param('sss',$email,$password);

解决方法

在注册期间在INSERT之前添加过滤代码.过滤后检查字符串是否为空,以便用户名“!! *&%$#()*&#$”不会作为空字符串插入.

$username_clean = preg_replace( "/[^a-zA-Z0-9_]/",$_POST['username'] );

if (!strlen($username_clean)){

    die("username is blank!");
}

$stmt = $conn2->prepare("INSERT INTO users (username,?)");
$stmt->bind_param('sss',$username_clean,$email_clean,$password_clean);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读