注册表单PHP

注册表单PHP,php,html,mysql,css,Php,Html,Mysql,Css,我是PHP和MySQL的初学者,我正在尝试为我目前正在从事的一个项目创建这个注册表单,这里是PHP脚本,顺便说一句。。如果有很多错误,那是因为我才刚刚开始 我遇到的问题是,如果电子邮件或用户名匹配,它不会检查数据库,因为如果匹配,它应该拒绝 PHP代码: <?php //register php error_reporting(0); $regUsername = $_POST['reg-username']; $regEmail = $_POST['reg-email'];

我是PHP和MySQL的初学者,我正在尝试为我目前正在从事的一个项目创建这个注册表单,这里是PHP脚本,顺便说一句。。如果有很多错误,那是因为我才刚刚开始

我遇到的问题是,如果电子邮件或用户名匹配,它不会检查数据库,因为如果匹配,它应该拒绝

PHP代码:

    <?php

//register php

error_reporting(0);

$regUsername = $_POST['reg-username'];
$regEmail = $_POST['reg-email'];
$regPassword = $_POST['reg-password'];

if(isset($regUsername) && isset($regEmail) && isset($regPassword)){
        $connect = mysql_connect('localhost', 'root', '');
        $selectDB = mysql_select_db('supermazad');
        $query = mysql_query("INSERT INTO users (username, email, password) VALUES ('$regUsername', '$regEmail', '$regPassword')");
        $checkIfSame = mysql_query("SELECT * FROM users WHERE username AND email LIKE '$query' ");
        echo '<h1 class="successMessage">You have successfully registered!</h1>';
}
            if($regUsername || $regEmail == $checkIfSame){
            echo '<h1 class="errorMessage">The username or e-mail already exists.</h1>';
        }

?>


将用户名和电子邮件插入数据库后,您试图检查数据库中是否已存在用户名和电子邮件。您应该通过选择注册中提供的用户名和电子邮件,或者在用户名和电子邮件字段上设置唯一键约束,事先进行检查。

将用户名和电子邮件插入数据库后,您试图检查数据库中是否已存在该用户名和电子邮件。您应该事先通过使用注册中提供的用户名和电子邮件进行选择,或者在用户名和电子邮件字段上设置唯一键约束进行检查。

我认为您应该在
$selectDB=mysql\u select\u db('supermazad')之后这样做

$checkIfSame = mysql_query("SELECT * FROM users WHERE username LIKE '".$regUsername."' OR email LIKE '".$regEmail."' ");
if (mysql_num_rows($checkIfSame ) > 0) {
    echo '<h1 class="errorMessage">The username or e-mail already exists.</h1>';
} else {
    //insert new user here
    $query = mysql_query("INSERT INTO users (username, email, password) VALUES ('$regUsername', '$regEmail', '$regPassword')");
}

$checkIfSame=mysql\u查询(“从用户名为'.$regUsername.''或电子邮件为'.$regEmail.''的用户中选择*”;
如果(mysql_num_rows($checkIfSame)>0){
回显“用户名或电子邮件已存在”;
}否则{
//在此处插入新用户
$query=mysql_query(“在用户(用户名、电子邮件、密码)中插入值(“$regsername”、“$regEmail”、“$regPassword”);
}
此外,您的帖子中有以下内容:

如果电子邮件或用户名匹配


所以你应该使用
,而不是

我认为你应该在
$selectDB=mysql\u select\u db('supermazad')之后这样做

$checkIfSame = mysql_query("SELECT * FROM users WHERE username LIKE '".$regUsername."' OR email LIKE '".$regEmail."' ");
if (mysql_num_rows($checkIfSame ) > 0) {
    echo '<h1 class="errorMessage">The username or e-mail already exists.</h1>';
} else {
    //insert new user here
    $query = mysql_query("INSERT INTO users (username, email, password) VALUES ('$regUsername', '$regEmail', '$regPassword')");
}

$checkIfSame=mysql\u查询(“从用户名为'.$regUsername.''或电子邮件为'.$regEmail.''的用户中选择*”;
如果(mysql_num_rows($checkIfSame)>0){
回显“用户名或电子邮件已存在”;
}否则{
//在此处插入新用户
$query=mysql_query(“在用户(用户名、电子邮件、密码)中插入值(“$regsername”、“$regEmail”、“$regPassword”);
}
此外,您的帖子中有以下内容:

如果电子邮件或用户名匹配

所以你应该使用
,而不是

  • 请使用mysqli而不是mysql,因为它更安全
  • 删除错误报告(0)
  • 不要使用“like”,因为它可能会有很多结果
  • mysql查询的语法错误
  • 试试这个,如果有错误就调试一下,但我认为这是可行的

        $regUsername    = $_POST['reg-username'];
    $regEmail       = $_POST['reg-email'];
    $regPassword    = $_POST['reg-password'];
    
    if(isset($regUsername) && isset($regEmail) && isset($regPassword)){
            $mysqli         = mysqli_connect("localhost","root","","supermazad") or die("Error " . mysqli_error($mysqli)); 
            $queryInsert    = "INSERT INTO users (username, email, password) 
                                VALUES 
                              ('$regUsername', '$regEmail', '$regPassword')"; 
            mysqli_query($mysqli, $queryInsert); //this will insert the data from db
    
            $queryUser  = "SELECT username,email FROM users WHERE username = '$regUsername' AND email = '$regEmail'"; // this will authenticate and uses an exact match
            $result     = $mysqli->query($queryUser);
            $row        = mysqli_fetch_array($result);
    
            echo '<h1 class="successMessage">You have successfully registered!</h1>';
    }
                if($regUsername == $row['username'] && $regEmail == $row['email']){ //this check if email and username are match with database $row['username'] store username from mysql field and $row['email'] do the same
                echo '<h1 class="errorMessage">The username or e-mail already exists.</h1>';
            }
    
    $regUsername=$\u POST['reg-username'];
    $regEmail=$_POST['reg-email'];
    $regPassword=$_POST['reg-password'];
    if(isset($regUsername)&&isset($regEmail)&&isset($regPassword)){
    $mysqli=mysqli_connect(“localhost”、“root”、“supermazad”)或die(“Error”).mysqli_Error($mysqli));
    $queryInsert=“插入用户(用户名、电子邮件、密码)
    价值观
    (“$regsername”、“$regEmail”、“$regPassword”);
    mysqli_query($mysqli,$queryInsert);//这将插入数据库中的数据
    $queryUser=“选择用户名,来自用户名为“$regUsername”和电子邮件为“$regEmail”的用户的电子邮件;//这将进行身份验证并使用精确匹配
    $result=$mysqli->query($queryUser);
    $row=mysqli\u fetch\u数组($result);
    echo“您已成功注册!”;
    }
    如果($regUsername==$row['username']&&&$RegeEmail==$row['email']){//检查电子邮件和用户名是否与数据库$row['username']匹配,从mysql字段存储用户名,$row['email']执行相同的操作
    回显“用户名或电子邮件已存在”;
    }
    
    顺便说一句,这对初学者来说是正常的,但请在不久的将来改进您的编码,使其更干净、更有条理

  • 请使用mysqli而不是mysql,因为它更安全
  • 删除错误报告(0)
  • 不要使用“like”,因为它可能会有很多结果
  • mysql查询的语法错误
  • 试试这个,如果有错误就调试一下,但我认为这是可行的

        $regUsername    = $_POST['reg-username'];
    $regEmail       = $_POST['reg-email'];
    $regPassword    = $_POST['reg-password'];
    
    if(isset($regUsername) && isset($regEmail) && isset($regPassword)){
            $mysqli         = mysqli_connect("localhost","root","","supermazad") or die("Error " . mysqli_error($mysqli)); 
            $queryInsert    = "INSERT INTO users (username, email, password) 
                                VALUES 
                              ('$regUsername', '$regEmail', '$regPassword')"; 
            mysqli_query($mysqli, $queryInsert); //this will insert the data from db
    
            $queryUser  = "SELECT username,email FROM users WHERE username = '$regUsername' AND email = '$regEmail'"; // this will authenticate and uses an exact match
            $result     = $mysqli->query($queryUser);
            $row        = mysqli_fetch_array($result);
    
            echo '<h1 class="successMessage">You have successfully registered!</h1>';
    }
                if($regUsername == $row['username'] && $regEmail == $row['email']){ //this check if email and username are match with database $row['username'] store username from mysql field and $row['email'] do the same
                echo '<h1 class="errorMessage">The username or e-mail already exists.</h1>';
            }
    
    $regUsername=$\u POST['reg-username'];
    $regEmail=$_POST['reg-email'];
    $regPassword=$_POST['reg-password'];
    if(isset($regUsername)&&isset($regEmail)&&isset($regPassword)){
    $mysqli=mysqli_connect(“localhost”、“root”、“supermazad”)或die(“Error”).mysqli_Error($mysqli));
    $queryInsert=“插入用户(用户名、电子邮件、密码)
    价值观
    (“$regsername”、“$regEmail”、“$regPassword”);
    mysqli_query($mysqli,$queryInsert);//这将插入数据库中的数据
    $queryUser=“选择用户名,来自用户名为“$regUsername”和电子邮件为“$regEmail”的用户的电子邮件;//这将进行身份验证并使用精确匹配
    $result=$mysqli->query($queryUser);
    $row=mysqli\u fetch\u数组($result);
    echo“您已成功注册!”;
    }
    如果($regUsername==$row['username']&&&$RegeEmail==$row['email']){//检查电子邮件和用户名是否与数据库$row['username']匹配,从mysql字段存储用户名,$row['email']执行相同的操作
    回显“用户名或电子邮件已存在”;
    }
    
    顺便说一句,这对初学者来说是正常的,但请在不久的将来改进您的编码,使其更干净并组织起来

    $checkIfSame = mysql_query("SELECT * FROM users WHERE username LIKE '".$regUsername."' OR email LIKE '".$regEmail."' ");
    if (mysql_num_rows($checkIfSame ) > 0) {
        echo '<h1 class="errorMessage">The username or e-mail already exists.</h1>';
    } else {
        //insert new user here
        $query = mysql_query("INSERT INTO users (username, email, password) VALUES ('$regUsername', '$regEmail', '$regPassword')");
    }
    

    $checkIfSame=mysql\u查询(“从用户名为'.$regUsername.''或电子邮件为'.$regEmail.''的用户中选择*”;
    如果(mysql_num_rows($checkIfSame)>0){
    回显“用户名或电子邮件已存在”;
    }否则{
    //在此处插入新用户
    $query=mysql_query(“在用户(用户名、电子邮件、密码)中插入值(“$regsername”、“$regEmail”、“$regPassword”);
    }
    
    试试这个: