0

記録のために、私はこのエントリを見ました-まったく同じ質問をしているiframe、phpを介してセッション変数を渡しますが、答えは(Tに続いたとしても)まだうまくいきません。

2 つのページがあります。1 つはランディング ページで、もう 1 つは iframe を介してランディング ページに取り込まれたページです。ランディング ページでセッションを開始し、$_SESSION に値を割り当て、その値を iframe に取り込みます。

ランディングページのコードは次のとおりです。

<?php
session_start(); 
    $_SESSION['vendorname'] = $this->getVendorId(); // store session vendor name data
    echo "Vendor = ". $_SESSION['vendorname']; // test to see if the vendor name was properly set
session_write_close();
?>

<html>
  <body>
    ....blah blah...
    <iframe width="100%" src="http://www.somewhere.com/iframe.php"></iframe>
  <body>
</html>

iframe 内のページのコードは次のとおりです。

<?php
session_start();
?>  

<html> 
  <head>   
    <link href="css/something.css" type="text/css" rel="stylesheet" /> 
  </head>

 <body>
  <?php
     if(isset($_SESSION['vendorname']) && is_array($_SESSION['vendorname'])) {
       echo "vendor = ". $_SESSION['vendorname']; }
     else {
       echo "Meh, back to the drawing board"; }?>

 </body> 
 </html>

ランディング ページでは、$_SESSIONが正しく表示されます。データベースを介してベンダーの名前を取得し、画面に吐き出します。ただし、iframe では、私の失敗メッセージ (「Meh, back to the drawing board」) のみが表示されます。私は何かが欠けています。:(

編集:

Marc B の提案に従って、現在 session_id() をチェックしています。したがって、このコード (ランディング ページ) の場合:

<?php
session_start();
    echo session_id();
    echo "<br>"; 
    $_SESSION['vendorname'] = $this->getVendorId(); // store session vendor name data
    echo "Vendor = ". $_SESSION['vendorname']; //test to see if the vendorname was properly set
    echo "<br>";
    echo session_id();
session_write_close();
?>

次の出力が得られます。

0lq5gb79p52plgd9mcknpife60 ベンダー = SUPERVEND 0lq5gb79p52plgd9mcknpife60

iframe ページで、このコードに対して:

<?php
session_start();
echo session_id();
?>  

<html> 
      <head>   
        <link href="css/something.css" type="text/css" rel="stylesheet" /> 
      </head>

     <body>
<?php
echo session_id();
if(isset($_SESSION['vendorname'])) {
    echo "vendor = ". $_SESSION['vendorname']; }
else {
    echo "vendor = ". $_SESSION['vendorname']; }
?> 

次の出力が得られます。

0lq5gb79p52plgd9mcknpife60 0lq5gb79p52plgd9mcknpife60 ベンダー =

4

1 に答える 1

0

次のように iframe を開始します。

header('P3P: CP="CAO PSA OUR"');
session_start(); 

その後、通常の方法でセッション変数にアクセスできるはずです。

于 2015-02-13T05:42:15.163 に答える