0

ユーザーがフォームに入力した情報を伝達またはエコーしようとしています。ユーザーが入力する必要のあるフォームは3つあり、すべて異なるページにあります。4ページ目に到達するまでに、このすべての情報を挿入する必要があります。 mysqlデータベースにすべて一緒に。

これで、データをデータベースに配置するSQLクエリが作成されました。これにより、データは正常に入力されますが、データは最後のページにのみ入力されます。これは、ユーザーが入力する最後のフォームです。ユーザーが以前のフォームに入力したその他の以前の情報は、値を使用していてもmysqlに入力されません。

データを次のページに引き継ぐためにセッションを作成する必要があると思うので、そのようにしようとしていますが、機能しません。

1ページ/フォーム1:

<?php
session_start();
?>

<form class="" method="post" action="register_p2.php">

                <div class="row first_name">
                    <input type="text" id="first_name" name="first_name" placeholder="First Name" />
                </div>

                <div class="row last_name">
                    <input type="text" id="last_name" name="last_name" placeholder="Last Name" />
                </div>

                <div class="row email">
                    <input type="email" id="email" name="email" placeholder="Email"  />
                </div>

                <input type="submit" value="Next >"  />

            </form>

2ページ/フォーム2:

<?php
session_start();
// other php code here

$_SESSION['first_name'] = $first_name;
$_SESSION['last_name'] = $last_name;
$_SESSION['email'] = $email;
?>

<form name="myForm" method="post" action="register_p3.php" onsubmit="return validateForm()" >

                <div class="row date_of_birth">
                    <input type="text" id="date_of_birth" name="date_of_birth" placeholder="D.O.B 10/02/1990" />
                </div>

                <div class="row number">
                    <input type="text" id="contact_number" name="contact_number" placeholder="Mobile Number" />
                </div>

                <div class="row confirm">
                    <input type="text" id="confirm" name="confirm" placeholder="Are You a UK resident?"  />
                </div>

                <input type="submit" value="Next >"  />

            </form>

3ページ/form3:

    <?php
    session_start();
    // other php code here

    $_SESSION['first_name'] = $first_name;
    $_SESSION['last_name'] = $last_name;
    $_SESSION['email'] = $email;
    $_SESSION['dat_of_birth'] = $date_of_birth;
    $_SESSION['number'] = $number;
    ?>

<form class="" method="post" action="register_p4.php">

                <div class="row date_of_birth">
                    <input type="text" id="display_name" name="display_name" placeholder="Display Name" />
                </div>

                <div class="row password">
                    <input type="password" id="password" name="password" placeholder="Password" />
                </div>

                <div class="row password2">
                    <input type="password" id="password2" name="password2" placeholder="Password (Confirm)"  />
                </div>

                <input type="submit" value="Next >"  />

            </form>

そして最後のページで、私はそのようなすべての情報を収集し、それをデータベースに入力しようとします。

<? ob_start(); ?>
<?php
// GET ACCOUNT INFORMATION FROM FORM AND ASSIGN VARIABLES
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$email = $_POST['email'];
$date_of_birth = $_POST['date_of_birth'];
$contact_number = $_POST['contact_number'];
$display_name = $_POST['display_name'];
$password = $_POST['password'];
?>
<?php
/*
// ECHO ACCOUNT INFORMATION
echo "<strong> Account Information: </strong>";
echo "<br />";
echo First Name: ";
echo "<br />";
echo $first_name;
echo "<br />";
echo "<br />";
echo "Last Name: ";
echo "<br />";
echo $last_name;
echo "<br />";
echo "<br />";
echo "Email: ";
echo "<br />";
echo $email;
echo "<br />";
echo "<br />";
echo "Password: ";
echo "<br />";
echo $password;
echo "<br />";
echo "<br />";
echo "date_of_birth: ";
echo "<br />";
echo $date_of_birth;
echo "<br />";
echo "<br />";
echo "Contact_number: ";
echo "<br />";
echo $contact_number;
echo "<br />";
echo "<br />";
echo "display_name: ";
echo "<br />";
echo $display_name;
echo "<br />";
echo "<br />";
*/
?>
4

3 に答える 3

3

すべてのフォームを1 つのフォームに結合します。

そのすべての情報が 1 つのフォーム送信に含まれていても問題はありません。


現在の方法は、(おわかりのように) 以前に送信されたものを追跡し、それをセッション ファイルに保存しておく必要があることを意味します。

すべてが 1 つの形式である場合、問題は発生しないはずです。

複数のページに「分割」したい場合は、JavaScript マジックを使用して、フォームが複数のページにあるかのように見せることができますが、実際には 1 つの<form>要素であり、ユーザーが起動しているときにのみ表示される異なるフィールドセットがあります。フォームの次の部分に移動します。

于 2013-01-28T16:43:08.710 に答える
0

2ページ目にあなたは書く

$_SESSION['first_name'] = $first_name;
$_SESSION['last_name'] = $last_name;

そのページには$first_nameがないため、SESSION-varsを何も上書きしていません。したがって、最後のページで、前のページのSESSION変数が空であるのは正しいことです。

以前のページの変数のみを保存すると、機能するはずです

その他のポイント:sql-queryで使用する前に、変数をサニタイズすることを本当に望んでいます...?

于 2013-01-28T16:48:25.467 に答える
0

しかし、それは答えられています:

2 ページでこれを変更します。

<?php
session_start();
// other php code here

$_SESSION['first_name'] = $first_name;
$_SESSION['last_name'] = $last_name;
$_SESSION['email'] = $email;
?>

に:

<?php
session_start();
// other php code here

$_SESSION['first_name'] = $_POST['first_name'];
$_SESSION['last_name'] =  $_POST['last_name'];
$_SESSION['email'] =  $_POST['email'];
?>

3 ページのコードを次のように変更します。

$_SESSION['dat_of_birth'] = $_SESSION['date_of_birth'];
$_SESSION['number'] = $_SESSION['number'];
?>

など、他のページでは $_SESSION['varname'] = $_POST['varname']; を保存するだけです。そして最後に、最後のページで: に変更します: (updated)

<?php ob_start(); ?>
<?php
session_start();
// GET ACCOUNT INFORMATION FROM FORM AND ASSIGN VARIABLES
$first_name = $_SESSION['first_name'];
$last_name = $_SESSION['last_name'];
$email = $_SESSION['email'];
$date_of_birth = $_SESSION['date_of_birth'];
$contact_number = $_SESSION['contact_number'];
$display_name = $_POST['display_name'];
$password = $_POST['password'];
?>

$first_name = $_SESSION['first_name']; にする必要はありません。$_SESSION['first_name']; をエコーするだけです。それはメモリを節約します...

于 2013-01-28T16:53:43.017 に答える