QA@IT

フォーム入力をセッション変数に移し替える

12359 PV

input.htmlで名前と好きな言葉を入力して
確認するボタンを押すと、Not Foundになります。
confirm.phpを確認してもエラーコードが表示されていないため、
原因の特定に詰まっています。
一体何が原因なのでしょうか。
お手数おかけしますが、ご回答頂けると幸いです。
宜しくお願いします。

input.html

<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="utf-8">
<title>入力ページ</title>
<link href="../../css/style.css" rel="stylesheet">
</head>
<body>
<div>
     <form method="POST" action="confirm.php">
        <li><label>名前:
            <input type="text" name="name" placeholder="ニックネーム可" ;>
        </label></li>
        <li><label>好きな言葉:
            <input type="text" name="kotoba"; >
        </label></li>
            <li><input type="submit" value="確認する" ></li>
        </ul>
     </form>
</div>
</body>
</html>

confirm.php

<?php
require_once("util.php");
  //セッションの開始
session_start();
?>

<?php
  //文字エンコードの検証
if (!cken($_POST)) {
 $encoding = mb_internal_encoding();
 $err = "Encoding Error! The expected encoding is " . $encoding;
  //エラーメッセージを出して、以下のコードを全てキャンセルする
  exit($err);
  }
?>

  <?php
  //POSTされた値をセッション変数に受け渡す
  if (isset($_POST[ 'name' ])) {
  $_SESSION[ 'name' ] = $_POST[ 'name' ];
  }
  if (isset($_POST[ 'kotoba' ])) {
  $_SESSION[ 'kotoba' ] = $_POST[ 'kotoba' ];
  }
  //入力データの取り出しとチェック
 $error = [];
  //名前
 if (empty($_SESSION[ 'name' ])) {
      //未設定の時のエラー
 $error[] = "名前を入力して下さい";
  } else {
      //名前を取り出す
  $name = trim($_SESSION[ 'name' ]);
  }
      //好きな言葉
  if (empty($_SESSION[ 'kotoba' ])) {
    //未設定の時のエラー
   $error[] = "好きな言葉を入力して下さい";
   } else {
   //好きな言葉を取り出す
   $kotoba = trim($_SESSION[ 'kotoba' ]);
    }
?>

 <!DOCTYPE html>
<html lang="ja">
<head>
    <meta charset="utf-8">
     <title>確認ページ</title>
     <link href="../../css/style.css" rel="stylesheet">
</head>
<body>
<div>
   <form>
   <?php if (count($error)>0) { ?>

   <span class="error"><?php echo implode('<br>' , $error); ?></span><br> 
   <span>
      <input type="button" value="戻る" onclick="location.href='input.html' ">
    </span>
   <?php } else { ?>

    <span>
      名前:<?php echo es($name); ?><br>
      好きな言葉:<?php echo es($kotoba); ?><br>
      <input type="button" value="戻る" onclick="location.href='input.html' ">
      <input type="button" value="送信する" onclick="location.href='thankyou.php' ">
    </span>
   <?php } ?>
    </form>
  </div>
  </body>
  </html>

thankyou.php

<?php
require_once("util.php");
  //セッションの開始
session_start();
$error = [];
//セッションのチェック
if (!empty($_SESSION[ 'name' ]) && !empty($_SESSION[ 'kotoba' ])) {
 //セッション変数から値を取り出す
$name = $_SESSION[ 'name' ];
$kotoba = $_SESSION[ 'kotoba' ];
} else {
   $error[] = "セッションエラーです。";
}
//HTMLを表示する前にセッションを破棄する
killSession();
?>

<?php
//セッションを破棄する
function killSession() {
//セッション変数の値を空にする
$_SESSION = [];
//セッションクッキーを破棄する
if (isset($_COOKIE[session_name()])) {
   $params = session_get_cookie_params();
   setcookie(session_name(), '', time()-36000, $params[ 'path' ]);
   }
  //セッションを破棄する
  session_destroy();
  }
?>

 <!DOCTYPE html>
<html lang="ja">
<head>
     <meta charset="utf-8">
     <title>完了ページ</title>
<link href="../../css/style.css" rel="stylesheet">
</head>
<body>
<div>
   <?php if (count($error)>0) { ?>

   <span class="error"><?php echo implode('<br>' , $error); ?></span><br> 
   <a href="input.html">最初のページに戻る</a>
   <?php } else { ?>

  <span>      
      次のように受付けました。ありがとうございました。
      <HR>
      <span>
      名前:<?php echo es($name); ?><br>
      好きな言葉:<?php echo es($kotoba); ?><br>
      <a href="input.html" >最初のページに戻る</a>
      </span>
    ![イメージ説明](b7ceeacaaf230a2870de71296ebfcb07.png)ジ説明](e36de721560d927d28e5c0d7f1175c90.png)hp } ?>
  </div>
  </body>
  </html>

__________2018-07-31_12.07.00.png

__________2018-07-31_12.07.08.png

__________2018-07-31_12.07.23.png

回答

confirm.phpをconfirm.phpで名前をつけてました。

編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。