如何停止搜索返回所有结果?

时间:2011-10-25 15:33:56

标签: php javascript mysql

我的网站上有一个搜索字段,用于搜索我使用的数据库。 当我单击搜索字段并输入无文本时,搜索将返回所有结果。

如果没有输入任何内容,我怎么能拥有它呢?

有没有可以帮助我的JavaScript?

谢谢!

詹姆斯

<?php

$conn = mysql_connect("---", "", "");

if (!$conn) {
echo "Unable to connect to DB: " . mysql_error();
exit;
}



{

$search = "%" . $_POST["search"] . "%";
$searchterm = "%" . $_POST["searchterm"] . "%";

}

if (!mysql_select_db("weezycouk_641290_db1")) {
echo "Unable to select mydbname: " . mysql_error();
exit;
}

$sql = "SELECT name,lastname,email 
FROM   test_mysql
WHERE  name LIKE '%".$search."%' AND lastname LIKE '%".$searchterm."%'";

$result = mysql_query($sql);

if (!$result) {
echo "Could not successfully run query ($sql) from DB: " . mysql_error();
exit;
}

if(document.getElementById('search').value == '')
return false;

if(document.getElementById('searchterm').value == '')
return false;

if (mysql_num_rows($result) == 0) {
echo "No rows found, nothing to print so am exiting";
exit;
}


while ($row = mysql_fetch_assoc($result)) {
echo '<br>';
echo '<br>';
echo '<div class="data1">';
echo $row["name"];
echo '</div>';
echo '<br>';
echo '<div class="data2">';
echo $row["lastname"];
echo '</div>';
echo '<br>';
echo '<div class="data3">';
echo $row["email"];
echo '</div>';
}

mysql_free_result($result);

?>

4 个答案:

答案 0 :(得分:8)

停在那儿! SQL注入!

您的代码有多个SQL injection vulnerabilitiesFix them immediately

固定?我们继续吧。

在决定执行搜索之前,请检查搜索词是否为空字符串。如果是,请不要执行搜索。例如:

$search = // whatever the user typed; it's a good idea to trim() it
if(empty($search)) {
    // return no results
}
else {
    // do whatever you normally do
}

如果没有什么可以搜索的话,您也可以更改搜索功能(更有可能是搜索SQL查询)返回没有结果,这基本上可以让您在代码中更深入地移动上面的if 。恕我直言,如果if留在这里是最好的,所以我不认可这种做法。

使用Javascript处理详细信息:如果您的搜索基于表单提交,如果搜索字段为空,则最好完全阻止提交(使用Javascript)礼貌用户。但是,除之外,您应该使用PHP检查而不是而不是

有关代码中的示例,我们需要查看您的HTML。

答案 1 :(得分:1)

对于非常基本的控制,你可以做类似的事情。

if(document.getElementById('searchField').value == '')
   return false;

答案 2 :(得分:1)

您可以拒绝提交搜索表单,只要使用Javascript在搜索字段中填写任何内容,或者您​​在相应的php文件中阻止搜索。​​

PHP:

if(empty($_GET['search'])){ // or whatever your field's name is
  echo 'no results';
}else{
  performSearch(); // do what you're doing right now
}

javascript使用jQuery(如果你使用它):

$('#searchform').submit(function(){ // replace 'searchform' your form's id
  return $('#search').val() != ''; // and 'search' with your search field's id
});

答案 3 :(得分:0)

我不会使用JavaScript(因为这可以被用户关闭)。

在处理查询时,我会使用您的服务器端语言。

e.g。在PHP中这样的东西可以工作:

<?php
//processes
if (trim($_GET['search'])=='') {
  //dont query anything
} else {
  // do your query
}

//output
if (trim($_GET['search'])=='') {
  ?>
  <p>Sorry, your search has returned no results.</p>
  <?php
} else {
  // output results
}

?>