【问题标题】:HTML form that searches text (php?)搜索文本的 HTML 表单 (php?)
【发布时间】:2011-08-19 00:37:56
【问题描述】:

我有一个包含用户名和 IP 地址的文件(大约 10MB)。我希望能够让人们访问我的网站并输入 IP 地址或用户名,然后搜索数据库并返回匹配项。

案例 1:用户在 <form> 中输入“Billy”。输出是IP地址和所有使用过这个IP地址的用户 案例2:用户在<form>中输入ip地址。输出是所有使用过这个IP地址的用户名。

不幸的是,我在这里是一个真正的菜鸟,我查过 w3schools,但还没有真正找到我想要的,甚至没有找到我应该如何做到这一点。

我可能会有一个 HTML <form>,用户可以在其中输入 IP 或用户名和单选按钮,用户可以在其中指定他们刚刚输入的是 IP 还是名称。在这之后我很难过,在<form> 中我应该有一个action="blah.php" 还是我可以创建一个局部变量来接受这个值?

编辑: 我想通过直接注入 html 来在一个 html 文件中完成这一切。可能使用$desc=$_POST['ipaddress']; 或类似的?我应该在表单标签中使用什么样的 action=""?

【问题讨论】:

  • mario 的回答很好,但我建议使用 mysql 数据库作为存储机制,而不是文本文件。
  • 这件事我别无选择,服务器只是将数据吐出一个文本文件。这就是整件事的目的;试图解释这个混乱的意义。 @乔丹
  • 你能访问服务器吗?如果可能,修改服务器的脚本以写入数据库而不是文件。
  • 这是不可能的,因为服务器读取的文件中还有很多其他数据。它需要对服务器本身进行重大改造

标签: php html forms search


【解决方案1】:

我只想创建一个搜索字段:

<form action="search.php">
<input name="q">

然后在 search.php 脚本中只接收字符串:

$q = $_REQUEST["q"];

并遍历文本文件:

$f = fopen("10MB.txt", "r");
while (($line = fgets($f)) !== FALSE) {
   if (strstr($line, $q)) {
       print "<li>found: $line"; 
   }   // outputs name+ip if either one is found in the line
}

这假定文本文件每行包含一个 IP 和用户名。当然,您可以微调输出。如果你愿意,把它分开。但是对于搜索本身,如果表单发送 IP 地址或用户名进行搜索,则无关紧要。它会匹配文本文件中的任何一个。

【讨论】:

  • 啊,太棒了:)!无论如何,我希望 HTML 和 PHP 都在同一个文件中,例如,只需将 PHP 插入带有 的 html 文件中,&lt;form action=""&gt; 应该是什么样子?只是文件本身的同一个链接?
  • action= 属性可以指向当前文件。要让它同时包含 html/form 和处理逻辑,只需使用 if (isset($_POST["button"])) { 之类的东西来包含上述搜索逻辑,或者 } else { 打印常规 HTML 页面部分。
  • 感谢您的回答,我会尽快尝试:)
【解决方案2】:

您如何存储用户名和 IP 地址?如果您使用的是 mysql 之类的 sql 数据库,那么您可以使用它的搜索功能或更专用的搜索工具,例如 lucene 或 sphinx。

这里有一些你可以参考的参考资料。

http://www.w3schools.com/PHP/php_mysql_select.asp

http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html

http://lucene.apache.org/java/docs/index.html

http://sphinxsearch.com/docs/current.html

【讨论】:

  • 用户名和 IP 地址在一个文本文件中乱七八糟,因为服务器只是将它们吐出来。
猜你喜欢
  • 2017-05-14
  • 1970-01-01
  • 2011-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多