按输入值搜索文件

时间:2017-03-26 14:40:57

标签: php file search

我的文件搜索有问题。我有2个文本表单,我想在文件中输入搜索值。但不知何故,如果我以其中一种形式写输入,它也会显示在其他行中(我不想这样)。此外,我的搜索只能通过搜索选项之一(其中变量是$ search)。

<?php

function f_display(){

global $file;



?>

<form action=<?php echo $_SERVER['PHP_SELF'] ;?>>
    <input type=text name=search value="<?php echo $_GET['search'] ; ?>">
    <input type=submit value=Message_Search>
    </form>
<form action=<?php echo $_SERVER['PHP_SELF'] ;?>>
    <input type=text name=search value="<?php echo $_GET['search'] ; ?>">
    <input type=submit value=Name_Search>
    </form>

    <?php

    $f    = fopen($file,"r");
    $x     = 'bgcolor="#AAAAAA"';
    $y     = 'bgcolor="#FFFFFF"';
    $search =  $_GET['search'];
    $searchname = $_GET['search'];


    echo "<table width=50% border=1><tr><th>&nbsp;</th><th>vardas</th><th>nikas</th><th>pranesimas</th></tr>";

    if (filesize($file)>0){

        while (!feof ($f)) {
            $string = fgets ($f,1000);
            $part = explode ( "|" , $string );


            if ( @stristr($part[2] , $search) == false and $search) continue ;

            echo "<tr $tr_spec ><td><a href = \"index.php?aaa=2&id=$i\"></a></td><td>" . $part[0] . "</td><td>". $part[1]." </td><td>". $part[2] ."</td></tr>";



            if ( @stristr($part[0] , $searchname) == false and $searchname) continue ;

            echo "<tr $tr_spec ><td><a href = \"index.php?aaa=2&id=$i\"></a></td><td>" . $part[0] . "</td><td>". $part[1]." </td><td>". $part[2] ."</td></tr>";

       } // while
    } // if

    fclose ($f);
    echo "</table>";


?>

文件看起来像:

John|J0N|Hello
Peter|P3tE|Wow
Paul|PO|Nice

也许你可以给我一些东西或告诉我我做错了什么?

1 个答案:

答案 0 :(得分:0)

  1. 您没有关闭您创建的功能:relu
  2. 您正在使用已弃用的HTML,function f_display(){您没有使用引号来给出值,而是给出了直接值。好方法是:<input type=submit value=Message_Search>
  3. 在编写
  4. 时,您正在使用<input type="submit" value="Message Search">等不安全的方法
  5. 您正在调用未定义的变量$_SERVER['PHP_SELF'](因为在首次加载时它们尚未定义)并且它可能会产生错误。 (提示:使用filter_input())
  6. 您正在使用HTML5中不再使用的$_GET['search']
  7. 你正在使用爆炸方法,我不知道为什么你不使用strpos(位于哪里是一个单词,这就是你正在尝试的)
  8. 如果你想逐行拆分到最后一个,那么fgets需要它的第二个参数:4096(从https://secure.php.net/manual/en/function.fgets.php中提取,我之前从未使用过该方法)
  9. 您在哪里定义$ tr_spec var?
  10. 现在我会给你我的PHP脚本更正,如果你想使用它,请随意使用它:

    width=50%

    通过评论我解释了一切,但我刚刚纠正了最终脚本问题,你还有一些问题需要解决。我希望这有帮助!