2017-07-22 39 views
0

我正在制作一个简单的网站,关闭我的rpi 3,并且在注册页面遇到了一些麻烦。首先,这是我当前的数据库(ID设置为自动增量,并将其命名为用户):PHP MySQL注册页面无法正常工作

+----+----------+----------+ 
| id | username | password | 
+----+----------+----------+ 
| 1 | Owner | idk  | 
+----+----------+----------+ 

我试着输入用户名:用户密码:test,虽然它应该输出“该用户名已被使用。 “它做了“出错了!”,并且当我测试用户名和密码时,它给出了相同的输出,而不是创建一个帐户。

register.php(主页):

<?php 
include("connection.php"); 
session_start(); 
if(isset($_SESSION['login_user'])){ 
    header("Location: welcome.php", true); 
} 
if($_SERVER["REQUEST_METHOD"] == "POST") { 
    $rusername = mysqli_real_escape_string($conn,$_POST['un']); 
    $rypassword = mysqli_real_escape_string($conn,$_POST['pw']); 

    $sql1 = "SELECT id FROM users WHERE username = '$rusername'"; 
    $sql2 = "INSERT INTO users(username, password) values($rusername, $rpassword)"; 

    $result = mysqli_query($conn,$sql1); 
    $row = mysqli_fetch_array($result,MYSQLI_ASSOC); 
    $count = mysqli_num_rows($result); 
    if ($count == 0){ 
     if (mysqli_query($conn,$sql2)) { 
      echo "Account created successfully!"; 
     } else { 
      echo "Something went wrong!"; 
     } 
    } else { 
     $error = "This username is already in use."; 
    } 
} 
?> 

<html> 
    <head> 
     <title>Register</title> 
     <link rel="stylesheet" href="topbar.css"> 
    </head> 

    <body> 
     //Top Bar 
     <div class="topbar"> 
      <a href="index.php">Home</a> 
      <a href="login.php">Login</a> 
      <a href="register.php">Register</a> 
      <a href="about.php">About</a> 
     </div> 

     //Register Form 
     <div align="center"> 
      <h1>Register</h1> 
      <form method="post"> 
       <h4>Username</h4> 
       <input type="text" name="run" required> 
       <h4>Password</h4> 
       <input type="text" name="rpw" required> 
       <br><input type="submit"> 
      </form> 
      <div style="color:#ff0000;"><?php echo $error; ?></div> 
     </div> 
    </body> 
</html> 

connection.php:

<?php 
$servername = "localhost"; 
$dbusername = "root"; 
$dbpassword = "kellan22"; 
$databasename = "accounts"; 

// Create connection 
$conn = mysqli_connect($servername, $dbusername, $dbpassword, $databasename); 

// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} 
?> 
+0

检查'$ rypassword';应该是'$ rpassword'来匹配你的SQL插入查询 – Juned

回答

1

你所访问的用户以错误的方式输入的数据。这些mysqli_real_escape_string(...)语句应该是这样的:

$rusername = mysqli_real_escape_string($conn,$_POST['run']); 
$rpassword = mysqli_real_escape_string($conn,$_POST['rpw']); 

此外,在您的INSERT查询丢失的报价,一个人应该是这样的:

$sql2 = "INSERT INTO `users`(`username`, `password`) values('$rusername', '$rpassword')"; 

旁注:了解prepared statement因为权现在你的查询容易受到SQL注入攻击。另见how you can prevent SQL injection in PHP