PHP «header (location)» внутри IFRAME, чтобы загрузить в _top месте?

У меня простая форма, которая находится внутри IFRAME. Когда пользователь нажимает на SUBMIT, он перенаправляется на определенную страницу на моем сервере. Функция, которую я использую для перенаправления,

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

Но я хочу, чтобы новая страница открывалась в _top месте, а не внутри того же IFRAME, который я использую. Как я могу сказать браузеру открыть новую страницу в _top не внутри IFRAME? Заранее спасибо.

Solutions Collecting From Web of "PHP «header (location)» внутри IFRAME, чтобы загрузить в _top месте?"

Вы не можете добиться желаемого эффекта в PHP. Это то, что вам нужно сделать с JavaScript или добавить target атрибут в <form> :

 <form ... target="_top"> 

Вы можете использовать javascript для доступа к родительскому объекту. Вы можете повторить javascript на своем PHP .. поэтому ваша родительская страница имеет следующее:

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

и в вашем php-скрипте вы эхо

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

Причина, по которой вы не можете вызвать parent.document.location, состоит в том, что она доступна только для чтения – для этого вам нужно иметь функцию, доступную для родителя.

Простой способ непосредственно в PHP перенаправить родительскую страницу, а не iframe:

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

die; не обязательно необходимо, но это хорошо «на всякий случай», чтобы предотвратить продолжение сценария, например, если javascript отключен в браузере пользователя.

мы можем использовать javascript следующим образом:

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

Лучше всего и проще всего использовать целевой элемент формы

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

любой из целевых параметров работает нормально

Вы можете ссылаться на страницу с помощью <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> <? }?>