2016-05-24 4 views
-2

準備文を使って登録フォームを作成しようとしていて、パスワードのハッシングを行っています。私はelse文で "何か間違ったメッセージが出ました"PHP私のコードに間違いが見つかりません(登録)

if(isset($_POST['save'])){ 

    $username = $_POST["username"]; 
    $password = password_hash($_POST["password"], PASSWORD_BCRYPT); 
    $email = $_POST["email"]; 

    $stmt = $mysqli->prepare("INSERT INTO users (username, password, email) VALUES (?, ?, ?)"); 
    $stmt->bind_param("sss",$username, $password, $email); 

    $stmt->execute(); 

    $nrows = $stmt->affected_rows; 

    if($nrows == 1){ 
     header("Location: http://localhost/test2/Login.php");} 
    else{ 
     echo "<script type='text/javascript'>alert('Something went wrong!')</script>";} 
} 
+2

httpサーバーのエラーログファイルには何が表示されますか?そこでは、どのファイルでどの行が間違っているのかを正確に読み取ることができます。あなたはそのファイルを監視せずにPHPスクリプトをプログラムできません。あなたが無限の推測ゲームの大ファンでない限り。 – arkascha

+0

'$ stmt-> errorInfo()'はあなたに何を伝えますか? – David

+1

@arkascha私は 'mysqli errors'を' echo'しようとしました。これは '' 1行目の 'password 'カラムのデータが長すぎます。パスワードフィールドが 'CHAR(40)'になるようにテーブルが作成されます。それは別のものでなければなりませんか? – Viktor

答えて

1

パスワードフィールドは、CHAR(40)です。 しかし声明

password_hash($_POST["password"], PASSWORD_BCRYPT); 

が問題でなければならない60のchar .. を与えています。

+1

これは、非常に説得力のある理由がない限り、 'VARCHAR(255)'を使用する理由です。 – tadman

関連する問題