前提・実現したいこと
前回(解決ずみ)からの続きでログイン画面を制作途中なのですが
教本にあった新規登録のチェック画面に、書き直す機能を付け足そうと$_SSESIONを使って制作していました。
↓(こんなの)
if ($_REQUEST['action'] == 'rewrite') {
$_POST = $_SESSION['join'];
header('Location: check.php');
exit();
}
実際コードを書いて試しているといつの間にかよくわからなくなってきて
色々いじりすぎて($_SESSIONを$_POSTにしてみたり)自分では理解できないことが起こって困っています。
最初の新規登録画面ではセッションに値を入れてもいないのにチェック画面に行くとセッションに
値が入っているではありませんか(var_dump()で確認済み)
もしかしたらセッションに関して自分では理解していないことがまだあったりするかもしれないので
質問しました。
もうつ付け足し質問をしたいのですが元々DBに接続はできていたのですが
いじりすぎたせいか送信ができなくなりました。
そこも教えていただきたいです。
エラーメッセージに関しては何も出ていません
login.php <?php ini_set('display_errors', "On"); $name = filter_input(INPUT_POST, 'name'); $email = filter_input(INPUT_POST, 'email'); $password = filter_input(INPUT_POST, 'password'); $err_msg = array(); //var_dump($_SESSION); __確認するとここには値は入っていない__ if (!empty($_POST)) { if ($name === "") { $err_msg['name'] = '入力必須です'; }elseif (strlen($name) > 12) { $err_msg['name'] = '12文字以内で入力してください'; } if ($email === "") { $err_msg['email'] = '入力必須です'; }elseif (strlen($email) > 255) { $err_msg['email'] ='255文字以内で入力してください'; } if ($password === "") { $err_msg['password'] = '入力してください'; }elseif (strlen($password) > 255 || strlen($password) < 6) { $err_msg['password'] = '6文字以上255文字以内で入力してください'; }elseif (!preg_match("/^[a-zA-Z0-9]+$/", $password)) { $err_msg['password'] = '半角英数字で入力してください'; } if (empty($err_msg)) { //var_dump($_SESSION); __ここの時点でも値は入っていなかった__ header('Location: check.php'); exit(); } } //if (isset($_REQUEST['action']) == 'rewrite') { // $arr = array($_SESSION['name'],$_SESSION['email']); // list($name, $email) = $arr; // $error['rewrite'] = true; //} __書き直しするためのコード__ ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="style.css"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>login</title> </head> <body> <h1>登録画面</h1> <form action="" method="post"> <div class="err_msg"><?php if (array_key_exists('name', $err_msg)) : ?><?php echo $err_msg['name']; ?><?php endif; ?></div> <label for=""><span>ユーザーネーム</span> <input type="text" name="name" id="" placeholder="12文字以内" value="<?php echo htmlspecialchars($name, ENT_QUOTES)?>"><br> </label> <div class="err_msg"><?php if (array_key_exists('email', $err_msg)) : ?><?php echo $err_msg['email']; ?><?php endif; ?></div> <label for=""><span>メールアドレス</span> <input type="email" name="email" id="" value="<?php echo htmlspecialchars($email, ENT_QUOTES)?>"><br> </label> <div class="err_msg"><?php if (array_key_exists('password', $err_msg)) : ?><?php echo $err_msg['password']; ?><?php endif; ?></div> <label for=""><span>パスワード</span> <input type="text" name="password" id="" value=""><br> </label> <div class="submit"><input type="submit" value="送信"></div> </form> </body> </html>
check.php <?php session_start(); require ('dbconnect.php'); //__DB接続はちゃんとできてます__ //var_dump($_SESSION); __確認すると値が入っている__ if(!empty($_POST)) { $stmt = $db->prepare('INSERT INTO members SET name=?, email=?, password=?'); $stmt->execute(array( $_SESSION['name'], $_SESSION['email'], $_SESSION['password'] )); unset($_SESSION); //header('Location:----.php'); __DB送信後メインページへ__ //exit(); } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <link rel="stylesheet" href="style.css"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>CloPos login</title> </head> <body> <h1>確認画面</h1> <form action="" method="post"> <label for=""><span>ユーザーネーム</span> <div class="session"><?php echo htmlspecialchars($_SESSION['name'], ENT_QUOTES); ?></div> <br> </label> <label for=""><span>メールアドレス</span> <div class="session"><?php echo htmlspecialchars($_SESSION['email'], ENT_QUOTES); ?></div> <br> </label> <label for=""><span>パスワード</span> <div class="session"><?php echo htmlspecialchars($_SESSION['password'], ENT_QUOTES); ?></div> <br> </label> <a href="login.php?action=rewrite" class="btn-top-radius">書き直す</a> <input type="submit" value="送信" /> </form> </body> </html>
試したこと
$_SSESIONを$_POSTにした
var_dump()で$SESSIONの中身確認
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/09/16 05:23
2021/09/16 10:09
2021/09/16 16:12
2021/09/16 22:55
2021/09/19 08:13
2021/09/19 08:19
2021/09/19 08:32