我的网站上有一个搜索字段,用于搜索我使用的数据库。 当我单击搜索字段并输入无文本时,搜索将返回所有结果。
如果没有输入任何内容,我怎么能拥有它呢?
有没有可以帮助我的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);
?>
答案 0 :(得分:8)
您的代码有多个SQL injection vulnerabilities。 Fix 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
}
?>