先週の続き
ではlogin.phpを名前を変えて保存して
user_form.phpをつくりましょう(ユーザーの登録画面)
入力を一つ増やしてユーザ名、パスワード、ニックネームにします
ボタンの文字は「登録」で
post先もmake_user.phpに変更
ここまで
--->user_form.php
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>ユーザフォーム</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div id="container">
<h1>ユーザー登録</h1>
<form method="post" action="make_user.php">
<table>
<tr>
<th><label for="u_id">ユーザ名</label></th>
<td><input type="text" name="u_id" id="u_id"></td>
</tr>
<tr>
<th><label for="pass">パスワード</label></th>
<td><input type="password" name="pass" id="pass"></td>
</tr>
<tr>
<th><label for="nickname">ニックネーム</label></th>
<td><input type="text" name="nickname" id="nickname"></td>
</tr>
</table>
<p><button type="submit">登録</button></p>
</form>
</div>
</body>
</html>
続けてmake_user.php(ユーザ登録処理)を作る
本来なら、アカウントがすでに存在しているかどうかの判定が必要
今回はそれなしで作成しちゃうとのこと
かつ正しく情報が飛んでくる前提で。
作りたいSQL文はINSERT文になりますね。
とりあえずここまで
--->make_user.php
<?php
session_start();
require_once("config.php");
$sql="INSERT INTO users(u_id,pass,nickname) VALUES(:u_id,:pass,:nickname);
$stmt=$pdo->prepare($sql);
$stmt->bindValue(":u_id",$_POST["u_id"],PDO::PARAM_STR);
//passwordのハッシュ
$pass=password_hash($_POST["pass"],PASSWORD_DEFAULT);//第二引数を定数で指定(時代が変わってもOK)
$stmt->bindValue(":pass",$pass,PDO::PARAM_STR);
$stmt->bindValue("nickname",$_POST["nickname"],PDO::PARAM_STR);
$stmt->execute();
//ログインしたことにして、タイムラインにダイレクトに転送
$_SESSION["login"]=true;
$_SESSION["u_id"]=$_POST["u_id"];
$_SESSION["nickname"]=$_POST["nickname"];
//ページに留まるのは危険なので移動
header("Location: index.php");
exit();
?>