2017-07-22 3 views
0

Je crée un simple site Web qui fonctionne sur mon rpi 3 et j'ai eu quelques problèmes à ma page d'inscription. Tout d'abord de tout cela est ma base de données actuelle (id est défini à incrémentation automatique et le nom est utilisateurs):PHP MySQL Page d'enregistrement ne fonctionne pas

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

J'ai essayé de taper Nom d'utilisateur: Mot de passe propriétaire: Test et alors qu'il doit générer « Ce nom est déjà utilisé. " il a fait "Quelque chose s'est mal passé!", et quand je fais un test pour le nom d'utilisateur et le mot de passe, il donne la même sortie au lieu de créer un compte.

register.php (page principale):

<?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

Vérifiez '$ rypassword'; devrait être '$ rpassword' pour correspondre à votre requête d'insertion SQL – Juned

Répondre

1

Vous accéder à des données utilisateur dans la entré mauvaise façon. Ces déclarations mysqli_real_escape_string(...) devraient ressembler à ceci:

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

également, manquant des citations dans votre requête INSERT, que l'on devrait ressembler à ceci:

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

Sidenote: En savoir plus sur prepared statement parce droit maintenant vos requêtes sont susceptibles d'une attaque par injection SQL. Voir aussi how you can prevent SQL injection in PHP.