1

私の質問は、セッション変数を使用して異なる PHP スクリプト間で配列要素をコピーすると、何も出力されないということです。以下は、私の 2 つの PHP ファイルです。

file1.php

<?PHP
     session_start();
        $SQL = "SELECT * FROM tblquestions";

        if ($db_found) {
            $result = mysql_query($SQL);
            $numRows = mysql_num_rows($result); //return number of rows in the table

            echo '<FORM NAME ="form1" METHOD ="POST" ACTION ="file2.php">';
            for ($i = 1; $i <= 2; $i++)
            {
                $db_field = mysql_fetch_assoc($result);
                $qID[$i] = $db_field['QID'];
                $question[$i] = $db_field['Question'];
                $A[$i] = $db_field['qA'];
                $B[$i] = $db_field['qB'];
                $C[$i] = $db_field['qC'];
                echo '<P>';
                print $question[$i];
                echo '<P>';
                echo "<INPUT TYPE = 'Radio' Name = '".$qNum."'  value= 'A'>"; 
                print $A[$i];
                echo '<P>';
                echo  "<INPUT TYPE = 'Radio' Name = '".$qNum."'   value= 'B'>"; 
                print $B[$i];
                echo '<P>';
                echo  "<INPUT TYPE = 'Radio' Name = '".$qNum."'   value= 'C'>"; 
                print $C[$i];
                //if (isset($_POST[$name_Value]))
                $survey_Answers[$i-1] = $_POST[$qNum];
                print '</BR>'.$survey_Answers[$i-1]."</BR>";
                $question_Number = ltrim($qNum,'q');
                $question_Number++;
                $qNum ='q'.$question_Number;
            }

            echo '<p>';
            $_SESSION['answers'] = $survey_Answers;
            echo '<INPUT TYPE = "Submit" Name = "Submit1"  VALUE = "Click here to vote">';

            echo '</form>';
?>

On my Second file (file2.php), I have the following:



<?PHP
    session_start();
    if (isset($_POST['Submit1'])) {
            $results = $_SESSION['answers'];
            print $results[0];
}
?>

しかし、私の file2.php では、次のエラーが発生します: Undefined offset: 0 で、何も出力されません。

4

5 に答える 5

1
echo '<p>';
session_start();

それは機能しません。出力の前に session_start を呼び出す必要があります! ファイルの先頭に置くsession_start()と、大丈夫です。

于 2013-06-24T18:13:23.933 に答える
1

Cookie ベースのセッションを使用するには、ブラウザーに何かを出力する前に session_start() を呼び出す必要があります。

ソース: http://php.net/manual/en/function.session-start.php

session_start()何かを出力する前に呼び出す必要があります。何かを出力する前に、スクリプトの先頭に配置することをお勧めします。

于 2013-06-24T18:14:37.930 に答える
0

PHP のマニュアル ページsession_start()に、問題に非常によく似たコメントがあります。http://php.net/manual/en/function.session-start.php#65944

ストレート配列として、または整数を使用して割り当てられた整数キーを持つ配列は失敗し、データは次のページに渡されないと言われています。

文字列をキーとして使用するようにコードを変更します。

于 2015-01-02T04:11:14.077 に答える
0

セッション データを使用するすべてのページに次のコードを追加してください。そうしないと、エラーが返されます。

<?php
session_start();
?>
于 2013-06-24T18:31:13.767 に答える
0

file1.php ではsession_start();、file2.php と同じコードの最初の行にする必要があります

于 2013-06-24T18:17:24.130 に答える