如何在发送表单数据之前从get变量中删除字符


How can I remove characters from get variables before sending form data?

我有一个表单,用户可以在其中输入要支付的租金金额。

<form action="search_results.php" method="get">
  <input type="text" name="rent" value="$" />
</form>

当用户输入他们的租金金额时,我使用jQuery在字段中保留美元符号。

$('input[name=rent]').keyup(function() {
   $(this).val(function(i,v) {
     return '$' + v.replace('$',''); //remove existing, add back.
   });
 });

当表单发送到search_results.php页面时,它会发送到附带以下get变量的url:

http://www.domain.com/search_results.php?rent=%24

当页面开始加载时,会显示以下错误消息:

警告:mysqli_error()只需要1个参数,中给定的0/nfs/c09/h01/mnt/12345/domains/www.domain.com/html/search_results.php在线551

我很确定这个错误的发生是因为我的sql语句使用$_GET['rent']变量对所有低于输入租金金额的房源进行排序,而使用美元符号无法做到这一点。

如何在美元符号字符发送到search_results.php页面之前从输入字段中删除,或者如何从search_results.php页面的url中删除%24,然后重新加载页面?

试试这个:

$('form').submit(function(){
  $('input[name=rent]').val($('input[name=rent]').val().replace('$', ''))
})

这应该有效:

$('form').submit(function(){
  $('input[name=rent]').val(function(index, valueWith$){
    return valueWith$.substring(1);
  });
  return true;
});

好吧,这里有一个更好的解决方案-你可以在他通过后过滤数据:

$rent = str_replace('$','',$_GET['rent']);
$rent = str_replace('%24','',$rent);

顺便说一句,我建议你学习更多关于SQL注入的知识。

发生此错误是因为您没有向它提供mysqli资源。

if (!mysqli_query($link, $query)) {
   printf("Errormessage: %s'n", mysqli_error($link));
}

您只是这样调用这个函数:mysqli_error();