こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

他ページの入力内容を出力するには

PHPあまり詳しくないです。
会員登録ページなるものを作っています。
register.phpというページで入力した会員情報をconfirm.phpというページで最終確認させたいのですが、その際に入力した情報がconfirm.phpに反映されません。

regiser.php
<?php
$a = (!empty($_POST['name']));
$b = (!empty($_POST['email']));
$c = (!empty($_POST['password']));
$d = (!strlen($_POST['password']) < 4);
if (isset($_POST['check'])) {
if ($a && $b && $c && $d) {
header('Location: confirm.php');
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
</head>
<body>
<h3>新規登録</h3>
<form method="POST" action="">
<div class="container">
<label for="name">ユーザ名(20文字以内)</label>
<br />
<input type="text" id="name" name="name"
maxlength="20" />
</div>
<?php
if (isset($_POST['check'])) {
if (empty($_POST['name'])) {
print('※ユーザ名を入力してください'); }
}
?>
<br /><br />
<div class="container">
<label for="email">メールアドレス(100文字以内)</label>
<br />
<input type="text" id="email" name="email"
maxlength="100" />
</div>
<?php
if (isset($_POST['check'])) {
if (empty($_POST['email'])) {
print('※メールアドレスを入力してください'); }
}
?>
<br /><br />
<div class="container">
<label for="password">パスワード(4文字以上20文字以内)</label>
<br />
<input type="password" id="password" name="password"
maxlength="20"/>
</div>
<?php
if (isset($_POST['check'])) {
if (empty($_POST['password'])) {
print('※パスワードを入力してください');
} elseif (strlen($_POST['password']) < 4) {
print('※パスワードは4文字以上で入力してください'); }
}
?>
<br /><br />
<input type="submit" name="check" value="確認する" />
</form>
</body>
</html>


confirm.php
<?php
$a = (!empty($_POST['name']));
$b = (!empty($_POST['email']));
$c = (!empty($_POST['password']));
$d = (!strlen($_POST['password']) < 4);
if (isset($_POST['check'])) {
if ($a && $b && $c && $d) {
header('Location: confirm.php');
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
</head>
<body>
<h3>新規登録</h3>
<form method="POST" action="">
<div class="container">
<label for="name">ユーザ名(20文字以内)</label>
<br />
<input type="text" id="name" name="name"
maxlength="20" />
</div>
<?php
if (isset($_POST['check'])) {
if (empty($_POST['name'])) {
print('※ユーザ名を入力してください'); }
}
?>
<br /><br />
<div class="container">
<label for="email">メールアドレス(100文字以内)</label>
<br />
<input type="text" id="email" name="email"
maxlength="100" />
</div>
<?php
if (isset($_POST['check'])) {
if (empty($_POST['email'])) {
print('※メールアドレスを入力してください'); }
}
?>
<br /><br />
<div class="container">
<label for="password">パスワード(4文字以上20文字以内)</label>
<br />
<input type="password" id="password" name="password"
maxlength="20"/>
</div>
<?php
if (isset($_POST['check'])) {
if (empty($_POST['password'])) {
print('※パスワードを入力してください');
} elseif (strlen($_POST['password']) < 4) {
print('※パスワードは4文字以上で入力してください'); }
}
?>
<br /><br />
<input type="submit" name="check" value="確認する" />
</form>
</body>
</html>


できればあまりこの形は変えたくありません…。
action部分をconfirm.phpに変えると、入力値が空だったりするエラー時にconfirm.phpに飛ばないようにする方法が分かりません。
回答よろしくお願いします。

投稿日時 - 2014-07-12 17:11:41

QNo.8675315

すぐに回答ほしいです

質問者が選んだベストアンサー

register.phpとconfirm.phpの違いがわからない・・・。この二つのスクリプトはどういう使い分けなんですか?

>できればあまりこの形は変えたくありません…。

>action部分をconfirm.phpに変えると、入力値が空だったりするエラー時に
>confirm.phpに飛ばないようにする方法が分かりません。

普通「確認画面」は入力内容を表示して、確認ボタン(と入力画面に戻るボタン)だけにします。

#locationで遷移させずにregister.phpの中で表示・確認・登録まで
#やってしまうことの方が多いかな。

最低でもregister.phpで入力が「全部問題なかったら」confirm.phpに遷移すべきです(入力がありさえすれば遷移するというのはダメです)。で、(locationで遷移したらPOSTデータは消えるので)遷移する前にセッション変数にでも入れておいてconfirm.phpでセッション変数から表示すればいいと思います。

投稿日時 - 2014-07-12 18:45:38

補足

register.phpは登録に必要なアドレスやパスワード等を入力する画面です。
confirm.phpは入力したアドレス等をデータベースに登録する前に、この内容でいいかという確認をする画面です。

元々入力が全部問題無いときにconfirm.phpに移動させるつもりでした。
説明不足ですみません。

セッションはどこに入れて開始すればよいのでしょうか?

投稿日時 - 2014-07-12 19:00:41

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問