web-dev-qa-db-ja.com

PHP "header(location)" IFRAME内、_topロケーションにロードするには?

IFRAME内にある単純なフォームがあります。ユーザーが[送信]をクリックすると、サーバー上の特定のページにリダイレクトされます。リダイレクトに使用する関数は

 header ('Location: mypage2.html');
exit ();

しかし、新しいページを、使用しているのと同じIFRAME内ではなく、_topの場所に開くようにします。 IFRAME内ではなく、_topで新しいページを開くようブラウザに指示するにはどうすればよいですか?前もって感謝します。

22
Spoonk

PHPで目的の効果を達成することはできません。これは、JavaScriptから行うか、target属性を<form>に追加する必要があります。

<form ... target="_top">
30
Michal M

Javascriptを使用して親にアクセスできます。 PHPでjavascriptをエコーアウトできます。したがって、親ページには次のようになります。

function changeURL( url ) {
    document.location = url;
}

あなたのPHPスクリプトでは、エコーします

<script>
   parent.changeURL('mypage2.html' );
</script>

Parent.document.locationを呼び出せない理由は、読み取り専用であるためです。それを行うには、親で使用可能な関数を用意する必要があります。

11
Dan Heberden

PHPで直接iframeではなく親ページをリダイレクトする簡単な方法:

echo "<script>top.window.location = '/mynewpage.php'</script>";
die;

die;は必ずしも必要ではありませんが、たとえば「javascript」がユーザーのブラウザで無効になっている場合など、スクリプトがそれ以上続行しないようにするために「万が一に」良い方法です。

9
Andrew

次のようなjavascriptを使用できます。

target.window.location='locationpage.html';
top.window.location='mypage2.html';
4
bungdito

最善かつ最も簡単なことは、フォームターゲット要素を使用することです

<form action="..." target="_top"> 
<form action="..." target="_parent">

どちらのターゲットパラメーターも正常に機能します

1
Dimgba Kalu

<a href="pagename.php?Break=Y">Break Out</a>を使用してページにリンクするか、コードを使用できます

<?php header("Location: pagename.php?Break=Y"); ?>

次に、ページのヘッダーで次のコードを使用します

if(isset($_GET['Break'])) // 
    {
    $BreakFrame = true;
    $BreakToPage = "pagename.php";

    }

<script language="JavaScript" type="text/javascript">
function changeURL( url ) {
    document.location = url;
}
</script>

<?php if($BreakFrame) { ?>

<script language="JavaScript" type="text/javascript">
parent.changeURL('<?=$BreakToPage?>' );
</script>

<? }?>
1
Jas

_topに読み込むページで、ヘッダーに次のコードを追加します

<script type="text/javascript">
if (top != self) top.location.href = location.href;
</script>
0
Doberon