2017-11-03 22 views
0

私はPHPに接続する際に問題があります。私はPHPを初めて使いました。私はPHPフォームをダウンロードしようとしましたが、このページ用のデータベースを作成しましたが、データベースに何も追加しません。mySqlにPHPページを接続

<html> 

<link href="//db.onlinewebfonts.com/c/a4e256ed67403c6ad5d43937ed48a77b?family=Core+Sans+N+W01+35+Light" rel="stylesheet" type="text/css"/> 
<link rel="stylesheet" href="form.css" type="text/css"> 
<div class="body-content"> 
    <div class="module"> 
    <h1>Create an account</h1> 

    <?php 
session_start(); 
$_SESSION['message'] = ''; 
$mysqli = new mysqli("127.0.0.1", "root", "", "accounts_complete"); 

//the form has been submitted with post 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 

    //two passwords are equal to each other 
    if ($_POST['password'] == $_POST['confirmpassword']) { 

     //set all the post variables 
     $username = $mysqli_real_escape_string($_POST['username']); 
     $email = $mysqli_real_escape_string($_POST['email']); 
     $password = md5($_POST['password']); //md5 has password for security 
     $avatar_path = $mysqli_real_escape_string('images/'.$_FILES['avatar']['name']); 

     //make sure the file type is image 
     if (preg_match("!image!",$_FILES['avatar']['type'])) { 

      //copy image to images/ folder 
      if (copy($_FILES['avatar']['tmp_name'], $avatar_path)){ 

       //set session variables 
       $_SESSION['username'] = $username; 
       $_SESSION['avatar'] = $avatar_path; 

       //insert user data into database 
       $sql = "INSERT INTO users (username, email, password, avatar) " 
         . "VALUES ('$username', '$email', '$password', '$avatar_path')"; 

       //if the query is successsful, redirect to welcome.php page, done! 
       if ($mysqli_query($sql) === true){ 
        $_SESSION['message'] = "Registration succesful! Added $username to the database!"; 
        header("location: welcome.php"); 
       } 
       else { 
        $_SESSION['message'] = 'User could not be added to the database!'; 
       } 
       $mysqli_close();   
      } 
      else { 
       $_SESSION['message'] = 'File upload failed!'; 
      } 
     } 
     else { 
      $_SESSION['message'] = 'Please only upload GIF, JPG or PNG images!'; 
     } 
    } 
    else { 
     $_SESSION['message'] = 'Two passwords do not match!'; 
    } 
} 
?> 


    <form class="form" action="form.php" method="post" enctype="multipart/form-data" autocomplete="off"> 
     <div class="alert alert-error"><?= $_SESSION['message'] ?></div> 
     <input type="text" placeholder="User Name" name="username" required /> 
     <input type="email" placeholder="Email" name="email" required /> 
     <input type="password" placeholder="Password" name="password" autocomplete="new-password" required /> 
     <input type="password" placeholder="Confirm Password" name="confirmpassword" autocomplete="new-password" required /> 
     <div class="avatar"><label>Select your avatar: </label><input type="file" name="avatar" accept="image/*" required /></div> 
     <input type="submit" value="Register" name="register" class="btn btn-block btn-primary" /> 
    </form> 
    </div> 
</div> 
</html> 

パスワードがないため、パスワードは空です。 私を助けることができますか?前もって感謝します。

+5

'$ password = md5($ _ POST ['password']); // md5はセキュリティのためのパスワードを持っています。 '...今私を殺す - ここでは間違っているところがあります。 – CD001

+0

"機能していない"ものを指定できますか?エラーメッセージはありますか? – Connum

+0

@ CD001、私が笑ったコメントを愛するが、私は100%あなたに同意する! – Option

答えて

0

は、実際に多くのミスがありますが、データベースについての質問にベース:

  1. はすべてmysqli_構文は、関数、変数ではありません。だから、最初に$mysqli_という構文で削除するだけで済みます。
  2. mysqliでは、接続変数を最初のパラメータmysqli_の関数に渡す必要があります。

例:

前:$mysqli_query($sql);

後:mysqli_query($mysqli, $sql)

前:$mysqli_close();

後:mysqli_close($mysqli)

+0

ありがとう、私はデータベースを稼働させることができました。mySQLに問題がありました。今では、VALUESを手動でテーブルに割り当てると、フォームの値をDBテーブルに割り当てる方法を理解する必要があります。 – Lorenzo

関連する問題