0

我正在尝试使用此代码将电子邮件地址作为搜索关键字返回,以便在表单中搜索时提取搜索结果。但是关键字在浏览器中以 user%40domain.com 的形式发布。我需要它注册为 user@domain.com 以便数据库 mysql 查询可以在数据库中找到它。这是现在的代码,它不起作用。

   if (isset($_GET['search']) && tep_not_null($_GET['search'])) {
      $keywords = tep_db_input(tep_db_prepare_input($_GET['search']));
      $search = "where c.customers_lastname like '%" . $keywords . "%' or c.customers_email_address like '%" . urlencode($keywords) . "%'";
    }
4

2 回答 2

2

%40 相当于@。它会被转换,因为您使用urlencode(). 如果您想在将其显示到页面之前将其转换回来,则相反并使用urldecode().

希望这可以帮助!

于 2012-07-17T02:59:27.543 回答
0

John和TurdPile都有基本的答案——使用——但他们错过了一个关键点——你已经完成了所有输入,直接对用户的输入进行了清理。如果要在此例程中提供 URL 解码,则必须在对输入进行解码后执行输入清理。否则,正确清理然后进行 URL 解码的输入可能会引入SQL 注入攻击urldecode()

切换到PDO以避免不得不考虑输入清理——只需正确使用参数化语句,您就不会编写容易受到注入攻击的程序。

于 2012-07-17T03:03:45.770 回答