找不到页面时重定向

时间:2014-04-16 18:14:49

标签: php html search redirect location

好的,所以我前几天在这里发布,这是一个很大的帮助,所以我决定回来。我有相同代码的另一个问题。我想添加另一个来源,我使用了=" $ location_url2"然后我添加了第二个" $ content"匹配代码。这两个来源之间的差异是" $ location_url"如果找不到任何内容,则返回空白页面,但是" $ lcation_url2"如果找不到任何内容,则重定向到index.php,但将扩展名保留在网址上......我使用的代码:

<?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 code:

<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>

1 个答案:

答案 0 :(得分:0)

这可能很难做到,除非你绝对确定这两个链接什么也没找到就什么都没有。如果两个位置中的任何一个返回类似404的内容,则您的脚本会将404解释为实际内容并重定向到那里......您可能需要寻找另一种方法来确定网站是否“包含内容”

您可以像这样检查200的标题:

$header=get_headers($url,true);

然后测试$ header [0]中有“200”...但它使它变得狡猾的代码。如果在任何时候其中一个URL返回任何意外输出,并在标题中使用HTTP / 1.1 200 OK,那么您的脚本会认为一切正常

您的代码中还有很多冗余。现在即使$ location_url中有内容,也会下载$ location_url2,这只会烧掉资源并使你的脚本速度慢于所需...

我会沿着这个方向前进:(请记住,你高度依赖于网址的回报):

<?

$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");
    }
}