プログラミング独学の初心者、MySQL初めて数日の者です。
入力フォームから取得したデータをMySQLに送るプログラミングで、操作確認済みです。
しかしパスワードがハッシュ化されていなくて、実装しようと試みたところでつまづいてしまいました。
register.php
1$Name=filter_input(INPUT_POST,"Name"); 2$Ad=filter_input(INPUT_POST,"Ad"); 3$Pw=filter_input(INPUT_POST,"Pw"); 4 5 //プリペアドステートメント 6 $stmt = $mysqli->prepare('INSERT INTO user_list (user_name,user_ad,user_pw) VALUES (?,?,?)'); 7 8 if($stmt){ 9 //プレースホルダへ実際の値を設定する 10 $stmt->bind_param('sss',$Name,$Ad,$Pw); 11 12 if($stmt->execute()){ 13 echo "お名前は".$Name."さん<br>"; 14 echo "メールアドレスは".$Ad."<br>"; 15 echo "で登録いたしました。<br><br>"; 16 }else{ 17 echo $stmt->errno . $stmt->error; 18 } 19 20 //ステートメント切断 21 $stmt->close(); 22 }else{ 23 echo $mysqli->errno . $mysqli->error; 24 } 25
以下参考ページと実際に使用したい部分抜粋しました。
参考ページ
<?php /* 引数バリデーションとか、省略 */ // ハッシュを作る $hash = password_hash($_REQUEST['password'], PASSWORD_BCRYPT); // 保存する $sql = 'INSERT INTO users (name, hash) VALUES(:name, :hash)'; $stmt = $pdo->prepare($sql); $stmt->execute([ ':name'=>$_REQUEST['name'], ':hash'=>$hash ]); /* 以降の処理 */
この$stmt->execute([ ':name'=>$_REQUEST['name'], ':hash'=>$hash ]);を
上記の自分の式に埋め込みにはどう書けばいいでしょうか?
また、$stmt = $pdo->prepare($sql);にあたるものもないかと思いますが、これはどういった役割を果たしているのでしょうか?
ご教授願います。
回答3件
あなたの回答
tips
プレビュー