繁体   English   中英

此处需要使用php的一点帮助

[英]Little bit of help needed here with php

我正在建立一个基于mysql的注册页面,并希望确认密码与之匹配,我的问题是,即使我的if / else语句正确,形式仍在处理中,我仍可以在mysql db中看到数据。

码:

<?php
require('connect.php');
// If the values are posted, insert them into the database.
if (isset($_POST['username']) && isset($_POST['password'])){
    $username = $_POST['username'];
      $email = $_POST['email'];
    $password = $_POST['password'];
    $confpassword = $_POST['confirm_password'];
    if ($_POST["password"] === $_POST["confirm_password"]) {
    $hashPassword = password_hash($password,PASSWORD_BCRYPT);
    }
    else {
      echo 'Password Match Failed', end;// failed :(
    }
    $query = "INSERT INTO `user` (username, password, email) VALUES ('$username', '$password', '$email')";
    $result = mysqli_query($connection, $query);
    if($result){
        $smsg = "User Created Successfully.";
    }else{
        $fmsg ="User Registration Failed";
    }
}
?>

您可能想查看一个框架来帮助您提供诸如登录之类的常见任务。 它不仅使您的工作变得简单,而且使用成熟的解决方案还具有增加安全性的好处。

就目前而言,您的代码有一些问题。

$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['password'];
...
$query = "INSERT INTO `user` (username, password, email) VALUES ('$username', '$password', '$email')";
$result = mysqli_query($connection, $query);

此代码容易受到SQL注入的攻击,这意味着攻击者可以删除您的数据库或修改其用户帐户以获取管理员访问权限。

您可以使用bcrypt对密码进行哈希处理,这是一个不错的选择,但是您对哈希处理不做任何事情。 而是将普通密码存储在数据库中,从而使其不安全。

$password = $_POST['password'];
$confpassword = $_POST['confirm_password'];
if ($_POST["password"] === $_POST["confirm_password"]) {
    echo 'Password Matched';
}

由于这两个值都是通过POST提交的,因此攻击者可以通过在请求中传递这两个值来轻松绕过身份验证。

由于代码将在满足if或else条件时都继续执行,因此还保存了插入数据的部分。 这就是为什么每次调用脚本都会插入一个用户的原因(或者由于重复的唯一字段而导致数据库错误)。

在这个领域很难为您的问题提供完整的解决方案。 但我首先将注册过程(创建用户)和登录(检查用户是否存在以及他们的密码是否匹配)分开。 只需查看我的个人资料,您就可以轻松获得一些我的社交帐户。 请随时与我联系,我将尝试安排闲聊或环聊会议,以便为您提供更多帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM