Перенаправление, когда страница не найдена

0

Хорошо, поэтому я опубликовал здесь на днях, и это была тонкая помощь, поэтому я решил вернуться. У меня другая проблема с тем же кодом. Я хотел добавить к нему еще один источник, который я использовал = "$ location_url2". Затем я добавил второй "$ content", чтобы он соответствовал коду. разница между двумя источниками: "$ location_url" возвращает пустую страницу, если ничего не найдено, но "$ lcation_url2" перенаправляет на index.php, если ничего не найдено, но сохраняет расширение на url... Код, который я с помощью:

<?php
    if(isset($_POST['search'])) {
        $search_text = $_POST['search'];
        $location_url = "http://cydia.saurik.com/package/{$search_text}/"; 
        $location_url2 = "http://rpetri.ch/cydia/{$search_text}/";
        $content = @file_get_contents($location_url);
        $content2 = @file_get_contents($location_url2);

        if($content) {
            header("Location: {$location_url}");
        } else if($content2) {
            header("Location: {$location_url2}");
        } else {
            header("Location: suggest.php");
        }
    }
?>

Код HTML:

<div id="content">
  <div id="search">
    <form method="POST" name="search" action="search.php">
      <input type="text" name="search" name="placeholder" placeholder="Search Tweaks..."/>
      <input type="submit" name="submit" value="Search"/>
    </form>
  </div>
</div>
Теги:
redirect
search
location

1 ответ

0

это может быть трудно сделать, если вы не уверены, что две ссылки возвращают ничего, когда ничего не найдено. Если какое-либо из двух мест вернет что-то вроде 404, ваш скрипт будет интерпретировать 404 как фактическое содержимое и перенаправить туда... Возможно, вам придется искать альтернативный способ определения того, имеет ли сайт "контент или нет",

Вы можете проверить заголовок для 200 следующим образом:

$header=get_headers($url,true);

а затем протестировать $ header [0], чтобы иметь в нем "200"... это делает его хитроумным кодом. Если в любой момент один из URL-адресов возвращает какой-либо неожиданный вывод с HTTP/1.1 200 OK в заголовке, ваш сценарий будет думать, что все в порядке

В вашем коде также много избыточности. Прямо сейчас $ location_url2 загружается, даже если есть содержимое в $ location_url, которое только сжигает ресурсы и делает ваши скрипты медленнее, чем нужно...

Я бы пошел куда-то рядом с этим: (имейте в виду, что вы сильно зависите от того, что возвращает URL):

<?

$search_text=filter_input(INPUT_POST,"search",FILTER_SANITIZE_ENCODED);

if($search_text!=""){
    $location_url = "http://cydia.saurik.com/package/{$search_text}/";
    $location_url2 = "http://rpetri.ch/cydia/{$search_text}/";

    $content=@file_header($location_url,true);
    if(strpos($content,"200 OK")!==false) 
        header("Location: {$location_url}");
    else{
        $content=@file_header($location_url2,true);
        if(strpos($content,"200 OK")!==false)
            header("Location: {$location_url2}");
        else
            header("Location: http://www.amazingjokes.com");
    }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню