2017-07-22 53 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