0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

【PHP備忘録】ログインの流れ

Posted at

ログインの大まかな流れ。

前提

・join/index.php(登録画面) ・join/checked.php(登録確認画面) ・login.php(ログイン画面) ・index.php(ログインされた画面)

formのactionは空にしておく

あと各フォルダの最初にこれを忘れない

session_start();
require('../dbconnect.php');

これで、つながる

$_SESSION['join'] = $_POST;

後これがPOSTにある値をセッションにさせたやつ

HTMLにて変数で代入する

例 この場合だと打たれた名前が表示されるようになる

check.php
		<dd>
		<?php print (htmlspecialchars($_SESSION['join']['name'],ENT_QUOTES));?>
        </dd>

これを各それぞれの値にやる
あとこれめちゃくちゃやる、もうほぼこれ。

DB接続->登録情報をINSERT

ここでドキドキのDB接続

check.php
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'],
));

終わったらデータが残らないように削除して完了。

check.php
unset ($_SESSION['join']);
header('Location: thanks.php');
exit();

これでDBにINSERTされた。

ログイン画面で呼び出し

さて…

login.php
  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の人が入らないように

index.php
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.用語意識して覚えてないから説明するの抽象的になってしまうなぁ

0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?