2010-06-06 16 views
19

Mam prosty formularz, który znajduje się wewnątrz ramki IFRAME. Kiedy użytkownik kliknie na SUBMIT, przekierowuje do określonej strony na moim serwerze. Funkcja używać do przekierowania jestPHP "header (location)" wewnątrz IFRAME, aby załadować w _top lokalizacji?

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

Ale chcę nowa strona, aby otworzyć w miejscu _top, a nie wewnątrz samej IFRAME, które używam. Jak mogę powiedzieć przeglądarce, aby otworzyła nową stronę w _topie nie wewnątrz IFRAME? Z góry dzięki.

+0

Co zrobić, jeśli nie masz dostępu do elementu FORM, a także nie masz dostępu do kodu strony PARENT? – Doug

Odpowiedz

26

Nie można osiągnąć pożądanego efektu w PHP. To jest coś, co trzeba zrobić z JavaScript lub dodać atrybut target do <form>:

<form ... target="_top"> 
+0

+1 dobre rozwiązanie. Jednakże może to zepsuć wszelkie sprawdzanie błędów po stronie serwera, jeśli chcesz przekierować użytkownika na oryginalną stronę w przypadku błędu. – jeroen

+0

To było najprostsze rozwiązanie na razie :) Ale kiedy nie wiem ... :) Lepiej zapytać, dobrze :) – Spoonk

+0

@jeroen Wykonuję sprawdzenie pola za pomocą javascript na mojej prostej stronie .html. Nie potrzebuję przekierowania w przypadku pustych pól. Używam alertu :) – Spoonk

11

Można użyć javascript, aby korzystać z rodzicem. Można echo z JavaScript w PHP .. więc strona dominująca ma to:

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

w skrypcie php, to echo

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

powód, dla którego nie można nazwać parent.document. Lokalizacja jest taka, ponieważ jest tylko do odczytu - aby to zrobić, musisz mieć dostęp do funkcji nadrzędnej.

+1

To jest lepsze rozwiązanie dla sho. –

4

możemy wykorzystać skrypt tak:

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

Najlepszym i najprostszym rozwiązaniem jest użycie element docelowy forma

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

zarówno parametrów docelowych działa dobrze

1

Możesz połączyć się ze stroną za pomocą <a href="pagename.php?Break=Y">Break Out</a> lub użyć kodu

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

następnie użyć następującego kodu w nagłówku strony z

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> 

<? }?> 
7

prosty sposób bezpośrednio w PHP przekierować strony nadrzędnej zamiast iframe:

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

die; ISN być koniecznie konieczne, ale jest to dobre "na wszelki wypadek", aby zapobiec dalszemu kontynuowaniu skryptu, na przykład, jeśli javascript jest wyłączony w przeglądarce użytkownika.

Powiązane problemy