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.

ログイン画面作成(備忘録) section72(続)

Last updated at Posted at 2020-07-19

現在は、check.phpにindex.phpで入力した値が入っていない

渡す方法は「session」と「cookie」の2パターンあるが
今回は「session」の方法で渡すのがベスト

cookieを使ってindex.phpの入力値をブラウザにずっと保存しておく必要性はなく、
個人情報なので危険なためです。

POSTで渡す方法もありますが、今回はcheck.phpで書き直す機能も使うので、
index.phpとcheck.phpの間で情報の行き交いあるため、
POSTでいちいち渡すのは非効率になる。

簡易登録などの一時的なやりとりは「session」が最適になる。
よって、入力画面で入力したデータをsessionで保存してみる。

※セッションとは:WEBアプリにおいて、各ユーザー固有のデータを格納するための仕組み
ユーザー毎に異なるログイン情報やカートなどの機能実現のためにセッションを使用する。


スクリプト先頭にsession_start()ファンクションを記述してセッションを開始する。

セッションに値を保存するというのは header()の直前、エラーが起こっていないことが
確認出来たら、セッションに値を入力していく。

if(empty($error)) {
	$_SESSION['join'] === $_POST;
	header('Location: check.php');
	exit();
}

 
$_SESSION['']のjoinというキーに$_POSTの値を保存する。

これでcheck.phpの方でもsessionの値が参照できる。


次にcheck.phpのコード記述をしていく
スクリプト先頭にsession_start()ファンクションを記述してセッションを開始する。

if(!isset($_SESSION['join'])){
	header('Location: index.php');
    exti();
}

$_SESSION['join'])の値を検査する。
$_SESSION['join'])の値が入っていなければ(!isset)、index.phpファイルに画面を戻す。


次にindex.phpで'$_SESSION['join'])'に格納されている
ニックネーム、メールアドレス、パスワード情報をそれぞれcheck.phpで取り出して、表示する。

<dt>ニックネーム</dt>
 <dd>
  <?php print(htmlspecialchars($_SESSION['join']['name'],ENT_QUOTES));?>
< /dd>

htmlspecialchars()は安全に画面表示させるための記述

'$_SESSION['join'])'というのは2次元配列(配列が2段回になった状態)になっている。
理由はindex.phpの方で、'$_SESSION['join'])'という配列に$_POSTをセットしているから。
$_POSTは元々配列なので取り出す記述として、'['join']['name']'といったjoin配列の中のnameを取り出すという
記述方法になる。

0
0
0

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?