1

ここの経験豊富なphpプログラマーではなく、サイトへの最初のタイマー:)

問題があります。内部でセッション変数を使用しようとしているサイト内で iframe を使用しています。まず、セッション変数を表示して、iframe 内からアクセスできることを確認しようとしています。

    echo "productcheck のセッション ".$_SESSION['productcheck']." 
"; echo "productcheck1 のセッション ".$_SESSION['productcheck1']."
"; echo "productcheck2 のセッション ".$_SESSION['productcheck2']."
"; echo "productcheck3 のセッション ".$_SESSION['productcheck3']."
";

これは、「製品チェックのセッション」を表示するだけで、それぞれの後に何も表示されないため、セッション変数を次のように設定します。

$_SESSION['productcheck'] = $productBox;

$productBox は URL からの GET です。

echo " <iframe src=\"homeview.php?productBox=$product1\" name=\"FRAMENAME\" width=\"594\" height=\"450\" scrolling=\"No\" id=\" FRAMENAME\" allowautotransparency=\"true\" > </iframe >";

奇妙なのは、URL から取得した $productBox 変数を取得してそれを使用すると、コードが機能することです。セッション変数に格納する場合にのみ混乱します。2 番目の $productBox を取得し、それをセッション変数 productcheck1 などに割り当てたいと考えています。残念ながら、一度に 1 つの変数を取得する必要があります。それ以外の場合は、4 つの製品すべてを渡すことができ、セッションについて心配する必要はありません。

おそらく私はこれを複雑にしすぎています。どんな助けでも大歓迎です ありがとう!!

4

2 に答える 2

5

値を設定するスクリプト (およびおそらく <iframe> 要素を出力するスクリプト) と、iframe のコンテンツを生成するスクリプトの両方で session_start() を使用する必要があります。

たとえば、「外側の」スクリプト

<?php // test.php
session_start();
$_SESSION['productcheck'] = array();
$_SESSION['productcheck'][] = 'A';
$_SESSION['productcheck'][] = 'B';
$_SESSION['productcheck'][] = 'C';
session_write_close(); // optional
?>
<html>
  <head><title>session test</title></head>
  <body>
    <div>session test</div>
    <iframe src="test2.php" />
  </body>
</html>

および iframe コンテンツのスクリプト

<?php // test2.php
session_start();
?>
<html>
  <head><title>iframe session test</title></head>
  <body>
    <div>
      <?php
      if ( isset($_SESSION['productcheck']) && is_array($_SESSION['productcheck']) ) {
        foreach( $_SESSION['productcheck'] as $pc ) {
          echo $pc, "<br />\n";
        }
      }
      ?>
    </div>
  </body>
</html>
于 2009-12-27T12:45:13.323 に答える
1

セッション変数がどうなっているのかはわかりませんが、iframe の URL を介して 4 つの変数すべてを確実に渡すことができます。キーと値のペアをアンパサンドで区切るだけです。だから、このようなもの:

file.php?key1=val1&key2=val2&key3=val3 など。

他のファイルにデータを取得しようとしているだけの場合、これはおそらくセッション変数を使用するよりも優れた方法です。

于 2009-12-27T12:48:33.820 に答える