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

締切り済みの質問

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

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
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
<title>確認画面</title>
</head>
<body>
<h3>入力内容を確認してください</h3>
<form method="POST" action="">
<br /><br />
<p>ユーザ名</p>
<br />
<?php print htmlspecialchars($_POST['name'], ENT_QUOTES, 'UTF-8'); ?>
<br />
<p>メールアドレス</p>
<?php print htmlspecialchars($_POST['email'], ENT_QUOTES, 'UTF-8'); ?>
<br />
<p>パスワード</p>
<?php print htmlspecialchars($_POST['password'], ENT_QUOTES, 'UTF-8'); ?>
<br /><br /><br />
<?php print('この内容でよろしければ下の登録ボタンを押してください'); ?>
<br />
<form method="POST" action="dbconnect.php">
<input type="submit" name="completion" value="登録する" />
</form>
<br /><br />
<?php print('変更がある場合は下の戻るボタンを押してください'); ?>
<br />
<form method="POST" action="register.php">
<input type="submit" value="戻る" />
</form>
</body>
</html>

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

投稿日時 - 2014-07-12 20:38:52

QNo.8675551

すぐに回答ほしいです

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

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

回答(1)

ANo.1

>register.phpというページで入力した会員情報を
>confirm.phpというページで最終確認させたい

正直、ひとつのスクリプトにしてしまった方が(locationで遷移させない方が)はるかに楽です。locationヘッダで遷移させる代わりにPOSTデータから内容を表示して(同時にtype="hidden"のinput要素にもセットする)最終確認のフォームを組み立てて exit すればいいだけですから。私なら(というか普通の仕様だと)データベースへの登録も同じスクリプトに書きます(というか、元はひとつで状況に応じて必要な部分をfunctionで呼び出すとかincludeして使うとか・・・)。

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

(けっしてお勧めはしませんが)どうしても今のregister.phpとconfirm.phpの構成のままでやるなら

両方のスクリプトの先頭で

<?php
session_start();

を行ってください。その上でregister.phpの

header('Location: confirm.php');

の直前に

$_SESSION['name'] = $_POST['name'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['password'] = $_POST['password'];

を記述してください。あとはconfirm.phpでこの3つについては$_POSTの代わりに$_SESSIONを使えばいいです。

投稿日時 - 2014-07-12 21:55:23

あなたにオススメの質問