Заголовок PHP не перенаправляет в iframe, ошибки не отображаются - PullRequest
2 голосов
/ 30 января 2012

У меня есть iframe, который выполняет работу на стороне сервера и отображает изображение.Мы используем iframe для динамического отображения изображения.Пользователь нажимает на изображение загрузки, мы показываем счетчик и перезагружаем iframe с новым изображением.Моя цель состоит в том, чтобы избежать повторной отправки страницы подтверждения формы, которая появляется, если пользователь попадает на страницу с помощью кнопки «назад».

По сути, страница, которая является источником iframe, представляет собой php-файл, который проверяеттри условия:

1) Была ли установлена ​​переменная с именем redirect?Если да, то 'urldecode ()' и используйте его как img src.

2) Был ли загружен файл?Если это так, сохраните его в БД и перенаправьте на эту страницу с путем к изображению в виде переменной GET

header('Location : mypage?redirect=path%2Fto%2Fimg.jpg'); 
die('upload');

3) Ничего не загружено?Возьмите то, что у нас есть из БД, затем перенаправьте на эту страницу с путем в качестве переменной GET

header('Location : mypage?redirect=path%2Fto%2Fimg.jpg'); 
die('default'); 

И что у нас на родительской странице есть

<iframe id='myframe' src='mypage.php'>

Проблема в том,мы никогда не получим перенаправление.Однако страница действительно умирает, поэтому вместо изображения профиля мы видим белый квадрат со строкой upload или default из вызова die().

При использовании header() внутри iframe, он ведет себя как обычно?Я хотел бы перенаправить содержимое iframe.

Спасибо за ваше время.

Ответы [ 4 ]

4 голосов
/ 30 января 2012

Я только что повторил это в моей тестовой среде. Ваш заголовок неверный, пробел не должен быть между Location и :

Работает

header('Location: mypage?redirect=path%2Fto%2Fimg.jpg'); 
die('default'); 

Не работает

header('Location : mypage?redirect=path%2Fto%2Fimg.jpg'); 
die('default'); 
2 голосов
/ 30 января 2012

Лучший способ избежать повторной отправки формы - использовать перенаправление после отправки. Вместо того, чтобы обрабатывать данные непосредственно после POST, вы должны перенаправить браузер пользователя. Посмотрите на этот документ для получения дополнительной информации:

http://en.wikipedia.org/wiki/Post/Redirect/Get

У вас также могут быть проблемы с конкретным браузером и / или кешем. Попробуйте добавить эти заголовки, чтобы избежать проблем с кешем:

header («Cache-Control: no-cache, must-revalidate»); // HTTP / 1.1

header («Истекает: сб, 26 июля 1997 г., 05:00:00 по Гринвичу»); // Дата в прошлом

1 голос
/ 30 января 2012

Если я прав в том, что вы делаете, я бы сделал следующее:

Без перенаправления , просто <img src="path_to_img.jpg" />, где path_to_img.jpg - это $_GET["redirect"]переменная или, если есть проблема, что-то основано на этом.

Нет IFrame , но PHP include ()

0 голосов
/ 06 ноября 2013

Помимо вашей проблемы с "лишним пробелом", Заголовок (местоположение) PHP не работает внутри фреймов !

(я не смог найти это документально, но я сам боролся с этим, поэтому написал фиктивный сценарий для проверки, и это правда).

РАБОТАЕТ : при вызове "автономно" он будет перенаправлен в Google

<?php
header ('Location: http://www.google.com/');
exit ();
?>

НЕ РАБОТАЕТ : когда вышеуказанный скрипт загружается в iframe

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>test</title>
    <meta name="author" content="Neil Hillman">
</head>
<body>

<iframe src='./redirect.php'
    id='redirect'
    name='redirect'
    height='500'
    scrolling='auto'
    style='border: 1px solid grey;'>
</iframe>

</body>
</html>

Попробуйте сами!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...