0

1 つのセッション変数を他のページに渡したい。私の最初のページには次のものがあります。

<?php 
session_start();
?>

それから:

<form class="form1" method="post" action="contact2.php" id="form1">
    <ul>
        <li>
            <label for="name">*Name:</label>
            <input type="text" name="name" placeholder="Black Nova"class="required" role="input"          aria-required="true"/>
        </li>
        <li>
            <input id="submit" class="submit .transparentButton" value="Next" type="submit" name="submit"/> 
        </li>
    </ul>
    <br/>
</form>

<?php
  $_SESSION['name'] = $_POST['name'];

  echo $_SESSION['name'];
?>

contact.phpはセッションを開始しましたが、セッション変数を取得できません。

最初のページでアクションを実行しないと、正しい値が得られます$_SESSION['name']が、アクションを実行してもセッション変数は変更されません。なんで?

4

3 に答える 3

1

これは、アクションを指定しないと、フォームがそれ自体 (同じページ) に送信され、最初のページでセッション変数を設定すると、セッション変数が正常に満たされるためです。アクションを 2 番目のページに追加すると、最初のページが $_POST を受信して​​いないため、セッション変数が満たされることはありません。2 番目のページはそうです。

フォーム データを別のページに送信する場合は、送信ページではなく受信ページにセッション データを設定する必要があります。

于 2012-08-22T15:27:48.030 に答える
1

アクションを指定しない場合、フォームは同じページに送信されているため、フォームを$_POSTに割り当てることができるため、価値があります$_SESSIONcontact2.phpフォームが別のページに送信されるときにアクションを実行すると、フォームが$_POSTあるページでは使用できなくなり、セッションはそこから値を取得しません。

アクションを に設定した場合は、そのページでcontact2.phpa を実行してコードを移動できますsession_start()

<?php
$_SESSION['name'] = $_POST['name'];
echo $_SESSION['name'];
?>

そのページにログインすると、セッションをエコーできるはずですcontact2.php

于 2012-08-22T15:25:22.873 に答える
0

フォームで送信をクリックすると、フォームは contact2.php (action="contact2.php") で送信します。contact2.php を作成し、以下のコードを記述します。

  session_start();

  session_regenerate_id();

  $_SESSION['名前'] = $_POST['名前'];

  echo $_SESSION['名前'];
于 2012-08-22T20:17:50.883 に答える