2014-11-13 2 views
0

Это моя регистрационная форма php. В этом коде есть что-то не так. Мой код не сохранял данные в базе данных при вводе данных, и он не проверял, есть ли такое же имя пользователя или адрес электронной почты в базах данных, и если я вводим пароль1! = Пароль2, то есть «Предупреждение: mysqli_query() ожидает параметр 1 для mysqli, ресурс, указанный в C: \ xampp \ htdocs \ tugas3 \ register.php в строке 27 " " Warning: mysqli_num_rows() ожидает, что параметр 1 будет mysqli_result, null указан в C: \ xampp \ htdocs \ tugas3 \ register.php в строке 28 ". Помогите мне решить эту проблему. Я использую XAMPP для своей базы данных. Имя моей базы данных - TUGASPPW, а имя таблицы - это пользователи.Как сделать регистрационную форму с php и mysql

<?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="[email protected]" type="email"><span><?php echo $errorEmail; ?></span><br> 
    <input name="submit" type="submit" value=" Submit "> 

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

+1

Вы смешиваете 'mysql_ *' и 'mysqli_ *' – itachi

+0

Вы не можете смешивать функции mysql_ * и mysqli_ *. Измените все, чтобы использовать функции mysqli или pdo и избавиться от лишенных mysql_ *. –

+0

Вам нужно изменить 'AND' на' OR' в вашем 'query', чтобы в конечном итоге вы не использовали разные имена пользователей, используя один и тот же адрес электронной почты или одно и то же имя пользователя, используя разные адреса emailaddresses. – RST

ответ

0

первую очередь проверьте подключение вы подключаетесь с MySQL и selcteing youur дб с MySQLi это создать проблемы также вы excuting запрос с MySQLi, так что вы не можете получить должного результата оттуда пользователь mysql для выбора db и выделения запроса.

$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"; 
} 
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

без расчесывания смешивания mysql_ * и mysqli_ * изменения

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

в

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

но лучшего использования MySQLi или PDO

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="[email protected]" type="email"><span><?php echo $errorEmail; ?></span><br> 
    <input name="submit" type="submit" value=" Submit "> 

</form> 
</div> 
</div> 
</body> 
</html> 
+0

@Glen Swift. Ожидаемый ответ, используя PDO. – SHAZ