ログインの大まかな流れ。
前提
・join/index.php(登録画面) ・join/checked.php(登録確認画面) ・login.php(ログイン画面) ・index.php(ログインされた画面)
formのactionは空にしておく
あと各フォルダの最初にこれを忘れない
session_start();
require('../dbconnect.php');
これで、つながる
$_SESSION['join'] = $_POST;
後これがPOSTにある値をセッションにさせたやつ
HTMLにて変数で代入する
例 この場合だと打たれた名前が表示されるようになる
<dd>
<?php print (htmlspecialchars($_SESSION['join']['name'],ENT_QUOTES));?>
</dd>
これを各それぞれの値にやる
あとこれめちゃくちゃやる、もうほぼこれ。
DB接続->登録情報をINSERT
ここでドキドキのDB接続
if(!empty($_POST)) {
$statement= $db->prepare('INSERT INTO members SET name=?, email=?, password=?, picture=?, created=NOW()');
$statement -> execute(array(
$_SESSION['join']['name'],
$_SESSION['join']['email'],
// 「sha1」というのは記号化してくれるもの(不可逆)
sha1($_SESSION['join']['password']),
$_SESSION['join']['image'],
));
終わったらデータが残らないように削除して完了。
unset ($_SESSION['join']);
header('Location: thanks.php');
exit();
これでDBにINSERTされた。
ログイン画面で呼び出し
さて…
if($_POST['email'] !='' && $_POST['password'] !== '' ) {
$login = $db ->prepare('SELECT * FROM members WHERE email=? AND password=?');
$login ->execute(array(
$_POST['email'],
sha1 ($_POST['password'])
));
$member = $login->fetch();
if($member) {
$_SESSION['id'] = $member['id'];
$_SESSION['time'] = time();
header('Location: index.php');
exit();
最初の段落から
POSTのEメール・パスワードがともに埋まってる時
→DB接続(memberのテーブルでEメール・パスワードの値が?をさがして!)
→POSTにあるこれさがして!
↓
取得して$memberにわかりやすくして!
↓
SESSIONとmemberのID一緒だったらindex.phpにいっていいよ!
って感じ?
違うIDの人が入らないように
if (isset($_SESSION['id']) && $_SESSION['time'] +3600 > time() ) {
$_SESSION['time'] = time();
$members = $db->prepare('SELECT * FROM members WHERE id=?');
$members ->execute(array($_SESSION['id']));
$member= $members -> fetch();
} else {
header('Location: login.php');
exit();}
ん~、多分IDとパスワードの値が入ってたらそのログインした時間を現在の時間に上書きする。 そして、ログインしたユーザーの情報を持ってくることができた。
一通りは以上!
ps.用語意識して覚えてないから説明するの抽象的になってしまうなぁ