Отправка запроса на другой сайт с обратным вызовом для моей исходной страницы - PullRequest
0 голосов
/ 23 сентября 2010

В моем файле test.php я отправил запрос в приложение Flickr, которое использую

header("Location: " . $request);

, где $ request - это URL-адрес, который я пытаюсь найти на Flickr.

Для моего приложения Flickr я должен установить URL обратного вызова.Когда Flickr завершит обработку моего запроса, он вызовет URL-адрес обратного вызова.

Я бы хотел, чтобы URL-адрес обратного вызова был моей исходной страницей test.php.Когда я пытаюсь это сделать, я застреваю в бесконечном цикле, потому что test.php повторно отправляет запрос обратно в Flickr, и Flickr снова вызывает мой test.php (повторяйте до бесконечности, пока браузер не закроется).* Есть ли способ поместить какое-то условие в test.php, чтобы проверить, пришел ли запрос от Flickr, или, по крайней мере, каким-нибудь способом сообщить сценарию, что запрос был отправлен, поэтому не отправляйте его снова.

Я уже пробовал это, где я изменил URL обратного вызова на другую мою страницу, и это прекрасно работает.Я просто смотрю, смогу ли я повторно использовать ту же страницу.

Ответы [ 3 ]

1 голос
/ 23 сентября 2010

Это ужасно.

Два опубликованных решения не будут работать, потому что:

  • Реферер не изменен при перенаправлении (хорошо, он очищается, если это перенаправление мета http, но не если это перенаправление заголовка. Но это не становится чем-то еще таким простым).

  • Установка выхода после отправленного заголовка, как правило, хорошая идея, если после этого выполняется что-то еще, но это не связано с проблемой.

Проще говоря, если это должна быть страница SAME , вам нужно сохранить в файле или базе данных или что-то такое, что перенаправляет счетчик на IP-адрес / пользователя и разрыв или что-то еще, но НЕТ из этого действительно надежно. Вы можете сделать его более безопасным, имея защищенный токен, который нельзя реверсировать и т. Д., Но все это не имеет смысла. Вы также можете использовать куки. Что так же ненадежно.

Что касается вашей проблемы, flickr НЕ перенаправляет обратно в тот же возраст. Что касается их спецификаций, они добавляют? Frob = [frob]. http://www.flickr.com/services/api/auth.spec.html

Проверьте это:

    <?php 
if(!isset($_GET["frob"])) {
header("Location: " . $request);
exit();
}
?>
1 голос
/ 23 сентября 2010

попробуйте проверить referer с помощью $_server['HTTP_REFERER']

[Отредактировано]

Я просто хотел сказать, что вы должны попробовать добавить if condition

// just and example, use some regular expression to check the refere
if($_SERVER['HTTP_REFERER'] != http://flicker.com){ 
header("Location: " . $request);
}else{
 // another code
}

Спасибо

0 голосов
/ 24 сентября 2010

В качестве альтернативы проверке (не) существования $ _GET ["frob"], вы не могли бы установить URL обратного вызова в Flickr равным www.mysite.com/test.php?from_flickr=1, а затем сделать

if (!$_GET['from_flickr']) {
    header('Location: '.$request);
    exit; 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...