質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

313閲覧

PHP SESSION  ログイン時に値が残ってることについて

TakehiroArakaki

総合スコア13

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

2クリップ

投稿2019/02/12 06:35

編集2022/01/12 10:55

sessionの使い方がまだわかりません。

<?php session_start(); $err = []; $char = []; $miss =[]; $name = $_POST["name"]; $email = $_POST["email"]; function validation_name($char){ if (strlen($char) > 5){ $err = "文字数が多すぎます"; return $err; } } function validation_email($miss){ if ($miss == "" ) { $err = "メールアドレスを入力してください"; return $err; // 検証フィルタメールが正しくない場合実行処理 }elseif (!filter_var($miss, FILTER_VALIDATE_EMAIL)){ $err = "メールアドレスの形式が不明です"; return $err; } } if (isset($_POST["send"])) { unset($_POST["send"]); // 入力が正常の場合値がNULLのためNULLでない場合$errに代入する if(validation_name($name) !== NULL) {$err[0] = validation_name($name);} if(validation_email($email) !== NULL) {$err[1] = validation_email($email);} $_SESSION["name"] = $_POST["name"]; $_SESSION["email"] = $_POST["email"]; unset($_POST); if(count($err) === 0){ header("Location:confirm.php"); } } ?> <!DOCTYPE html> <html lang="ja" dir="ltr"> <head> <meta charset="utf-8"> <title></title> </head> <body> <?php if($err >= 0){ foreach ($err as $error){ echo '<p>'.$error.'</p>'; } } ?> <form action="input.php" method="post"> <table> <tr> <h1>名前</h1> <input type="text" name="name" value="<?php echo ($_SESSION["name"])?$_SESSION["name"]: "" ?>"> </tr> <tr> <h1>メールアドレス</h1> <input type="text" name="email" value="<?php echo ($_SESSION["email"])?$_SESSION["email"]: "" ?>"></br> <div> <input type="submit" name="send"value="送信する"> </div> </tr> </table> </form> </html>

リロード時にセッション残した値を出力することはできましたが、ログイン時にもセッションで保存された内容が出力してしまい困っています。誰か教えてください(><)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/02/12 06:37

コードは ```php ``` ↑上記のように```(バッククォート3つ)で「囲う」必要があり、前後には改行が必要です。 質問投稿前にプレビューで確認してください(PCなら画面右側に出ています)
TakehiroArakaki

2019/02/12 06:41

mts10806さん 編集しました。ご指摘ありがとうございます。
guest

回答1

0

リロード時にセッション残した値を出力することはできましたが、ログイン時にもセッションで保存された内容が出力してしまい

見たところどこにもセッション変数を破棄する処理が書かれていませんね。
$_POSTをunset()(を含めた変更)はすべきではありません。

confirm.phpにだけ渡せばいいのでしたら、当該PHPでは冒頭でセッションの実行有無を確認した上でsession_destroy()するか$_SESSIONに設定されて不要となるキーを個別にunset()すべきでしょうね。
むしろinputに値を再表示させるのも$_SESSIONからではなく$_POSTから値(の有無、変数の存在チェックも含めて)を表示させるべきではないでしょうか?
いずれにしてもXSS対策のため、エスケープはしてくださいね。

投稿2019/02/12 06:53

編集2019/02/12 07:00
m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問