2017-01-22 21 views
1

phpとmysqで登録フォームを作成するときに問題があります。 私はcontactus.phpとhome.phpの2つのファイルを持っています。 contactus.phpため のコードは以下の通りです:home.phpためmysqlのPHP登録フォーム

<?php 
    session_start(); 
    $db = mysqli_connect("localhost", "wadca2user", "password123", "p1514432db");  
    if(isset($_POST['register_btn'])){ 
     session_start();   
     $username = mysql_real_escape_string($_POST['username']); 
     $email  = mysql_real_escape_string($_POST['email']); 
     $password = mysql_real_escape_string($_POST['password']); 
     $password2 = mysql_real_escape_string($_POST['password2']); 

     if($password == $password2){ 
      $password = md5($password); // stored before 
      $sql  = "INSERT INTO users(username,email,password) Values('$username','$email','$password')"; 
      mysqli_query($db, $sql); 
      $_SESSION['message'] = "Your are now logged in"; 
      $_SESSION['username'] = $username; 
      header("location: home.php"); 
     }else{ 
      $_SESSION['message'] = "The two passwords do not match"; 
     } 
    } 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <link href="css/maincss.css" rel="stylesheet" type="text/css"/> 
    </head> 
    <body> 
     <div class="header"> 
      <h1>Register</h1> 
     </div> 

     <form method="post" action="contactus.php"> 
      <table> 
       <tr> 
        <td>Username:</td> 
        <td><input type="text" name="username" class="textInput"></td> 
       </tr> 
       <tr> 
        <td>Email:</td> 
        <td><input type="email" name="email" class="textInput"></td> 
       </tr> 
       <tr> 
        <td>Password:</td> 
        <td><input type="password" name="password" class="textInput"></td> 
       </tr> 
       <tr> 
        <td>Password again:</td> 
        <td><input type="password" name="password2" class="textInput"></td> 
       </tr> 
       <tr> 
        <td></td> 
        <td><input type="submit" name="register_btn" value="Register"></td> 
       </tr> 
      </table> 
     </form> 
    </body> 
</html> 

コードは以下の通りです:

<?php 
    session_start(); 
?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <link href="css/maincss.css" rel="stylesheet" type="text/css"/> 
    </head> 
    <body> 
     <div class="header"> 
      <h1>Register</h1> 
     </div> 
     <h1>Home</h1> 
     <div> 
      <h3>Welcome<?php echo $_SESSION['username']; ?></h3> 
     </div> 
    </body> 
</html> 

私はをクリックして提出した後、home.phpに行くことになっています。しかし、それは成功しません。私はどこに問題があるのか​​分かりません。ここで

はmysqlの「ユーザー」テーブルenter image description here

+2

あなたはAPIを混合している - mysqliのとMySQL - > 'mysqli_connect()'と 'mysql_real_escape_stringのは()' – Sean

+1

そして今は、あなたのパスワード – Strawberry

+0

を変更し、ユーザ名は、おそらくそれが動作 – Strawberry

答えて

2

使用PDOで、この(下記)の仕事を行う必要があり、それはSQLインジェクション(多くのための準備要求を確認してください)に対して安全です。 MD5は使用しないでください。推奨されません。sha1()またはsha256()を試してください。 編集:あなたはpassword_hash()も持っています。これはかなりいいです。

<?php 
session_start(); 
$servername = "localhost"; 
$username = "wadca2user"; 
$password = "password123"; 
$conn = null; 
try { 
    $conn = new PDO("mysql:host=$servername;dbname=p1514432db", $username, $password); 
    // set the PDO error mode to exception 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    echo "Connected successfully"; 
    } 
catch(PDOException $e) 
    { 
    echo "Connection failed: " . $e->getMessage(); 
    } 
if(isset($_POST['register_btn']) && !is_null($conn)){ 
    $username = $_POST['username']; 
    $email  = $_POST['email']; 
    $password = $_POST['password']; 
    $password2 = $_POST['password2']; 

    if($password === $password2){ 
     $password = md5($password); // stored before 
     $request = $conn->prepare("INSERT INTO users (username,email,password) VALUES (:username, :email, :password)"); 
     $request->bindParam(':username', $username); 
     $request->bindParam(':email', $email); 
     $request->bindParam(':password', $password); 
     $request->execute(); 
     $_SESSION['message'] = "Your are now logged in"; 
     $_SESSION['username'] = $username; 
     header("location: home.php"); 
    }else{ 
     $_SESSION['message'] = "The two passwords do not match"; 
    } 
} 
?> 
+0

おかげでユニークになりたいです! – xhinvis