2017-11-16 11 views
-1

私は自分のウェブサイトで動作するように単純なレジスタ関数を取得しようとしています。エラーメッセージは下の画像で示されています。単にパラメータから値を取り出してデータベースに書き込むだけです。単純なPHP/MySqlレジスタ関数がパラメータを受け付けていません

Error Messages

PHP:

<?php 
//connection details 
/*$servername = "XXXXXXXXX"; 
$username = "sqlXXXXXXXXX"; 
$password = "password"; 
$dbname = "sqlXXXXXXXXX";*/ 

$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "coursework"; 

$conn = mysqli_connect($servername, $username, $password, $dbname); 

$username=$_POST['name']; 
$email=$_POST['email']; 
$password=$_POST['password']; 
$admin=0; 

$hash = crypt($password); 

//prepared statement 
$stmt = mysqli_prepare($conn, "INSERT INTO USERS (username, email, hash, admin) VALUES (?,?,?,?)"); 

//dealing with the parameters 
mysqli_stmt_bind_param($stmt, "sssi", $username, $email, $hash, $admin); 

mysqli_stmt_execute($stmt); 

//close statement and connection 
mysqli_stmt_close($stmt); 
mysqli_close($conn); 

?> 
+0

あなたはパスワードに同じ変数を使用しています。そのためです。すべてのPOST配列にも値があることを確認してください。あなたはPHPが(http://php.net/manual/en/function.password-hash.php)password_hash'代わりに '使用5.5.0+ている場合 –

+0

は... password_hashは、それが自分の塩のですが生成されます。 –

+2

私はここではろうの耳に落ちているようですが、回答エリアに投稿している人にのみ回答しています。 –

答えて

0

最初のエラーは、あなたのcrypt機能でsaltパラメータを逃したことを伝えます。 thisを確認すると、cryptsaltの使用例が確認できます。

CAREFUL:あなたの塩を失うべきではありません。静的な文字列でも、ユーザーが作成したタイムスタンプ(ユーザーが変更できないもの)のように、ユーザーによって異なる場合もあります。

+0

http://php.net/manual/en/function.crypt.php => * "saltパラメータはオプションです。" –

+0

私は知っていますが、私は後でその問題についてもっと心配しています。 –

+0

saltパラメータはオプションです。しかし、crypt()はsaltを持たない弱いハッシュを作成します。 PHP 5.6以降では、E_NOTICEエラーが発生しません。 「オプションの塩文字列をハッシュをベースにする:少なくとも我々は彼がpassword_hash'ではなく –

関連する問題