首页 文章

如何使用php和mysql进行注册表单

提问于
浏览
0

这是我的php注册表 . 这段代码有问题 . 当我输入数据时,我的代码没有将数据保存到数据库,并且它没有检查数据库中是否有相同的用户名或电子邮件,如果我输入了密码1!= password2,则存在“警告:mysqli_query()期望参数1为mysqli,资源在第27行的C:\ xampp \ htdocs \ tugas3 \ register.php中给出“”警告:mysqli_num_rows()期望参数1为mysqli_result,在C:\ xampp \ htdocs \ tugas3 \ register中给出null第28行的.php“ . 帮我解决这个问题 . 我正在使用XAMPP作为我的数据库 . 我的数据库名称是TUGASPPW,表名是Users .

<?php
$error=''; // Variable To Store Error Message
$errorName='';
$errorPass='';
$errorEmail='';
if (isset($_POST['submit'])) {
if (empty($_POST['username']) || empty($_POST['password1']) || empty($_POST['password2']) ||  empty($_POST['email'])) {
    $error = "Semua data harus terisi";
}
else    {
    // Define $username and $password
    $username=$_POST['username'];
    $password1=$_POST['password1'];
    $password2=$_POST['password2'];
    $email=$_POST['email'];
    // Establishing Connection with Server by passing server_name, user_id and password as a parameter
    $connection = mysql_connect("localhost", "root", "");
    // To protect MySQL injection for Security purpose
    $username = stripslashes($username);
    $password1 = stripslashes($password1);
    $password2 = stripslashes($password2);
    $email = stripslashes($email);
    $username = mysql_real_escape_string($username);
    $password1 = mysql_real_escape_string($password1);
    $password2 = mysql_real_escape_string($password2);
    $email = mysql_real_escape_string($email);
    // Selecting Database
    $db = mysql_select_db("TugasPPW", $connection);
    $query = ("select * from Users where email='$email' AND username='$username'");
    $result = mysqli_query($connection,$query);
    $numResults = mysqli_num_rows($result);
    if($password1 != $password2){
        $errorPass = "Password yang anda masukkan tidak sama";
    }
    elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) // Validate email address
    {
        $errorEmail =  "Invalid email address please type a valid email!!";
    }
    elseif($numResults>=1){
        $errorName = "Username or email already exsist";
    }

    else{
        mysql_query("insert into users(name,email,password)  values('".$username."','".$email."','".md5($password1)."')");
        header("location: login.php");
    }
}
}
?>

<!DOCTYPE html>
<html>

<head>
   <title>Login Form in PHP with Session</title>
   <link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
<div id="main">
<h1>Pendaftaran</h1>
<span><?php echo $error; ?></span>

<div id="login">
<form action="" method="post">
    <label>UserName :</label>
    <input id="name" name="username" placeholder="username" type="text"><span><?php echo $errorName; ?></span><br>
    <label>Password :</label>
    <input id="password1" name="password1" placeholder="**********" type="password"><span><?php echo $errorPass; ?></span><br>
    <label>Ulangi Password :</label>
    <input id="password2" name="password2" placeholder="**********" type="password"><span><?php echo $errorPass; ?></span><br>
    <label>Email :</label>
    <input id="email" name="email" placeholder="yourname@email.com" type="email"><span><?php echo $errorEmail; ?></span><br>
    <input name="submit" type="submit" value=" Submit ">

</form>
</div>
</div>

5 回答

  • 0

    我修复了你的代码 . 下面用下面的代码验证并找出错误 .

    // Establishing Connection with Server by passing server_name, user_id and password as a parameter
        $connection = mysqli_connect("localhost", "root", "","test");
        // To protect MySQL injection for Security purpose
        $username = stripslashes($username);
        $password1 = stripslashes($password1);
        $password2 = stripslashes($password2);
        $email = stripslashes($email);
        $username = mysql_real_escape_string($username);
        $password1 = mysql_real_escape_string($password1);
        $password2 = mysql_real_escape_string($password2);
        $email = mysql_real_escape_string($email);
        // Selecting Database
    
        $query = ("select * from users where email='$email' AND name='$username'");
        $result = mysqli_query($connection,$query);
        $numResults = mysqli_num_rows($result);
    
        if($password1 != $password2){
            $errorPass = "Password yang anda masukkan tidak sama";
        }
        elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) // Validate email address
        {
            $errorEmail =  "Invalid email address please type a valid email!!";
        }
        elseif($numResults>=1){
            $errorName = "Username or email already exsist";
        }
    
        if($errorPass!=='' || $errorEmail!=='' || $errorName!=='')
        {
            echo "error";
        }
        else{
            mysql_query("insert into users(name,email,password)  values('".$username."','".$email."','".md5($password1)."')");
            header("location: login.php");
        }
    
  • 0

    尝试使用PDO连接......

    <?php
    $error=''; // Variable To Store Error Message
    $errorName='';
    $errorPass='';
    $errorEmail='';
    if (isset($_POST['submit'])) {
        if (empty($_POST['username']) || empty($_POST['password1']) || empty($_POST['password2']) ||  empty($_POST['email'])) {
            $error = "Semua data harus terisi";
        }
        else    {
            /////////// changes -- start - SHAZ ////////////////
            $username=trim($_POST['username']);
            $password1=trim($_POST['password1']);
            $password2=trim($_POST['password2']);
            $email=trim($_POST['email']);
            // Establishing Connection with Server using PDO by passing server_name, user_id and password as a parameter
            $host = "localhost"; 
            $dbname = 'TugasPPW'; 
            $user = "root"; 
            $pass="";
            // Connect to DB
            try {
                $connection = new PDO("mysql:host=$host;dbname=$dbname",$user,$pass);
                $connection->exec("SET NAMES utf8");
            } 
            catch (PDOException $e) {
                die ('ERROR : SORRY! Unable to connect with database >>');
            }
    
            $sltQuery = "SELECT * FROM users WHERE email= ? AND username = ?";
            $stmt = $connection->prepare($sltQuery);
            $stmt->bindParam(1,$email);
            $stmt->bindParam(1,$username);
            $stmt->execute();
            // Here to check if record already present
            if($stmt->rowCount()) {
                // Record found in DB
                $error = 'Email/Username already Exists';
            }
            else {
                // no record found in DB
                if($password1 != $password2) {
                    $errorPass = "Password yang anda masukkan tidak sama";
                }
                else if (!filter_var($email, FILTER_VALIDATE_EMAIL)) // Validate email address
                {
                    $errorEmail =  "Invalid email address please type a valid email!!";
                }
                else if($numResults>=1){
                    $errorName = "Username or email already exsist";
                }
                else{
                    $password = md5($password1);
                    $insQuery = 'INSERT INTO users SET name = ?, email = ?, password = ?';
                    $smt = $connection->prepare($insQuery);
                    $smt->bindParam(1,$username);
                    $smt->bindParam(2,$email);
                    $smt->bindParam(3,$password);
                    $smt->execute();
                    if($smt->rowCount()){
                        //Data Inserted Successfully
                    }
                    else{
                        // Failed to insert data
                    }
                    header("location: login.php");
                }
            }    
        }
    }
    ?>
    
    <!DOCTYPE html>
    <html>
    
    <head>
       <title>Login Form in PHP with Session</title>
       <link href="style.css" rel="stylesheet" type="text/css">
    </head>
    
    <body>
    <div id="main">
    <h1>Pendaftaran</h1>
    <span><?php echo $error; ?></span>
    
    <div id="login">
    <form action="" method="post">
        <label>UserName :</label>
        <input id="name" name="username" placeholder="username" type="text"><span><?php echo $errorName; ?></span><br>
        <label>Password :</label>
        <input id="password1" name="password1" placeholder="**********" type="password"><span><?php echo $errorPass; ?></span><br>
        <label>Ulangi Password :</label>
        <input id="password2" name="password2" placeholder="**********" type="password"><span><?php echo $errorPass; ?></span><br>
        <label>Email :</label>
        <input id="email" name="email" placeholder="yourname@email.com" type="email"><span><?php echo $errorEmail; ?></span><br>
        <input name="submit" type="submit" value=" Submit ">
    
    </form>
    </div>
    </div>
    </body>
    </html>
    
  • 0

    没有梳理混合mysql_ *和mysqli_ *的变化

    $result = mysqli_query($connection,$query);
     $numResults = mysqli_num_rows($result);
    

    $result = mysql_query($query);
     $numResults = mysql_num_rows($result);
    

    但最好使用mysqli或pdo

  • 0

    首先检查你的连接,你正在连接mysql和selcteing你的数据库与mysqli它创建问题也是你用mysqli驱逐你的查询所以你无法从用户mysql获得正确的结果选择数据库和执行查询 .

    $dbhost = 'localhost:3036';
    $dbuser = 'root';
    $dbpass = 'rootpassword';
    $conn = mysql_connect($dbhost, $dbuser, $dbpass);
    if(! $conn )
    {
      die('Could not connect: ' . mysql_error());
    }
    $sql = "select * from Users where email='$email' AND username='$username";
    
    mysql_select_db('TugasPPW');
    $retval = mysql_query( $sql, $conn );
    if(! $retval )
    {
      die('Could not get data: ' . mysql_error());
    }
    while($row = mysql_fetch_array($retval, MYSQL_ASSOC))
    {
        print_r($row);
    } 
    echo "Fetched data successfully\n";
    mysql_close($conn);
    if($password1 != $password2){
            $errorPass = "Password yang anda masukkan tidak sama";
        }
        elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) // Validate email address
        {
            $errorEmail =  "Invalid email address please type a valid email!!";
        }
    
  • 0
    $con = mysql_connect("localhost","root","") or die("!server");
     $db = mysql_select_db("your db",$con) or die("! db");
    
    $sql = "select * from Users where email='$email' AND username='$username'";
    
    $query = mysql_query($sql) or die("! query");
    
    $numrows = mysql_num_rows($query);
    
    if($numrows != '')
    {
     echo "user exists";
    }
     else{ 
     echo "create new user";
     }
    

相关问题