PHP注册表格

PHP注册表格,php,mysql,Php,Mysql,我是PHP新手,所以我很难制作简单的注册表单。我的问题是,当我想注册时,除了密码,所有数据都会发送到我的数据库。错误在哪里 我的数据库是mySQL。请尝试几次用户\u pwd在my db中没有输出 php singup表单: <form class="signup-form" action="includes/signup.inc.php" method="POST"> <input type="text" name="first" placeholde

我是PHP新手,所以我很难制作简单的注册表单。我的问题是,当我想注册时,除了密码,所有数据都会发送到我的数据库。错误在哪里

我的数据库是mySQL。请尝试几次用户\u pwd在my db中没有输出

php singup表单:

<form class="signup-form" action="includes/signup.inc.php" method="POST">
            <input type="text" name="first" placeholder="Name">
            <input type="text" name="last" placeholder="Surname">
            <input type="text" name="email" placeholder="E-mail">
            <input type="text" name="uid" placeholder="ID">
            <input type="password" name="pwd" placeholder="Password">
            <button type="submit" name="submit">Sing up</button>
        </form>

高唱
php-singup.inc.php:

<?php


if(isset($_POST['submit'])){
    include_once 'db.php';

    $first = mysqli_real_escape_string($conn,$_POST['first']);
    $last = mysqli_real_escape_string($conn,$_POST['last']);
    $email = mysqli_real_escape_string($conn,$_POST['email']);
    $uid = mysqli_real_escape_string($conn,$_POST['uid']);
    $pwd = mysqli_real_escape_string($conn,$_POST['pwd']);
    // error handlers
    // all fields not empty
    if(empty($first) || empty($last) || empty($email) || empty($uid) || empty($pwd) ){
        header("Location: ../signup.php?signup=empty");
        exit();
    }
    else{
        // check spelling
        if(!preg_match("/^[a-zA-z]*$/", $first) || !preg_match("/^[a-zA-z]*$/", $last)){
            header("Location: ../signup.php?signup=invalid");
        exit();
        }
        else{
            if(!filter_var($email, FILTER_VALIDATE_EMAIL)){
        header("Location: ../signup.php?signup=email");
        exit();
            }
            else{
                $sql = "SELECT * FROM users WHERE user_uid = '$uid'";
                $result = mysqli_query($conn, $sql);
                $resultCheck = mysqli_num_rows($result);
                if($resultCheck>0){
                    header("Location: ../signup.php?signup=usertaken");
                    exit();
                }else{
                    $hashedPwd = password_hash($pwd, PASSWORD_DEFALUT);
                    $sql = "INSERT INTO users (user_first, user_last, user_email, user_uid, user_pwd) VALUES ('$first', '$last', '$email', '$uid', '$hashedPwd');";
                    mysqli_query($conn, $sql);
                    header("Location: ../signup.php?signup=success");
                    exit();
                }
            }
        }
    }
}
else{
    header("Location: ../signup.php");
    exit();
}

  • 请删除$hashedPwd,以便它不会被包括在内
  • 您的db.php可能是罪魁祸首
  • 将PASSWORD\u DEFALUT替换为PASSWORD\u DEFAULT,因为正在执行PASSWORD\u hash命令。进程无法继续,但将给出null返回值

    //$hashedPwd = password_hash($pwd, PASSWORD_DEFALUT);
    $sql = "INSERT INTO users (user_first, user_last, user_email, user_uid,user_pwd) VALUES ('$first', '$last', '$email', '$uid', '$hashedPwd');";
    mysqli_query($conn, $sql);
    header("Location: ../signup.php?signup=success");
    exit();
    
  • 摘自:

    返回值»

    返回哈希密码,失败时返回FALSE

    你有

    $hashedPwd = password_hash($pwd, PASSWORD_DEFALUT);
    
    它很可能返回“false”,因为它不支持哈希模式“PASSWORD\u DEFALUT”

    尝试将其编辑为正确的格式

    $hashedPwd = password_hash($pwd, PASSWORD_DEFAULT);
    

    我希望这能为您解决问题。

    在输入数据库之前回显$sql字符串。将值('piotr','miroddc','pssld@wp.pl","洛莱克","罗莱克",;最后一个输出为空。.如果(!mysqli_query($conn,$sql)){echo(“错误描述:“.mysqli_Error($conn));}我尝试echo pwd和hashedpwd,那么pwd有一个未进行哈希处理的输出。如果对
    ini_集('display_errors','on')进行错误检查;错误报告(E_全部)您会注意到错误和警告。我需要使用它进行保护。我知道它只适用于pwd。我检查ealier$hashedPwd=password\u hash($pwd,password\u DEFALUT);$hashedPwd=password\u hash($pwd,password\u DEFAULT);他们是一样的。。。那么我应该编辑什么呢?DEFA->LUIt值得指出有时不太明显的打字错误,但如果这是一个简单的打字错误,这个问题应该这样结束。是的:D谢谢:D明白了:D我的pw现在看起来是这样的:$2y$10$Bumo0vebSvuq77Adizytveky95nn6Jok0VCY8kbRk/xop0QG.shc6你能选择我的问题吗?!然后我会给你的answear投票,因为我需要15分:D