[PHP-users 9463] header()を使用したフレーム全体のリロード

Tadashi Oh-Ya php-users@php.gr.jp
Fri, 23 Aug 2002 20:04:12 +0900


おおやと申します。
どちらかと言えばHTMLの話になるのですが...

header()を使用してフレーム全体をリロードすることは可能なのでしょうか?

目的としては、
・phplibによるログイン情報を画面上部のメニュー部分に
  表示させておきたい。(利便性のため)
・初回のログイン作業は画面下部のbody部分で行ないたい。(見栄えのため)
・初回ログイン終了時に即座に上部メニュー画面にログイン情報を
  反映したい。(利便性のため)
の三点があります。

そのためにはフレーム全体を初回に一回だけリロードできれば良いと考え、
下記のコードを書いてみたのですが、ログイン終了時に下部フレームの中
で新たにフレームが分割されて表示されてしまいました。

他には phplibで使用するloginform.ihtmlのフォームタグの中で TARGET=_top
としてみたり、header("Location: mainframe.php TARGET=_top")として
みたりしましたが、いずれも成功しませんでした。

-----------------------------------------------------------------
<?php //mainframe.php

include("prepend.php");
page_open(array("sess" => "HOGE_Session"));

if (!isset($init)){ $init = ""; }
$sess->register("init");

print("<FRAMESET ROWS=\"20%, 80%\">");
print("<FRAME NAME=\"menu\" SRC=\""
       . $sess->url("./contents.php?dsp_mode=menu")
       . "\">");
print("<FRAME NAME=\"body\" SRC=\""
       . $sess->url("./contents.php?dsp_mode=body")
       . "\">");
print("</FRAMESET>");

page_close();
?>
-----------------------------------------------------------------

-----------------------------------------------------------------
<?php //contents.php

include("prepend.php");

if($dsp_mode == "menu"){ // メニュー表示
  page_open(array("sess" => "KCN_Session"));

  print("ここはMENU<BR>");
  print("現在ログインしているユーザ名は " . $auth->auth["uname"] . "<BR>");
}
 
if($dsp_mode == "body"){ // ボディ表示
  page_open(array("sess" => "KCN_Session",
                  "auth" => "KCN_Auth",
                  "perm" => "KCN_Perm"));

  $sess->register(init);

  if($init == ""){ // セッションの中で最初の表示ならば、
    $init = "done";
    $locstr = "Location: " . $sess->url("./mainframe.php");
    header($locstr); // フレーム全体を一回だけリロードしたい。
  }

print("ここはBODY<BR>");
}
 
page_close();
?>
-----------------------------------------------------------------