下面给出的简单形式,如果我们搜索某些内容,它在浏览器中看起来像这样:
[1]: https://i.stack.imgur.com/8YEJz.png
使用表单代码:
<form name="newad" method="get" action="search.php">
<h1 align="center"> Type your query<input type="text" name="text">
<h1 align="center"><input name="Submit" type="submit" >
</form>
现在,不知何故我想改变原始查询方式,如果我们像上面的例子中搜索"伙伴食物",它应该转换为 md5 并在我们存储时获取数据,所以它应该看起来像http://localhost/robbin.php?text=B9B5A976F29A3C71EDAD9320A9AB0982&Submit=Submit+Query
.但它不是这样工作的。我试过这样:
$submit=$_GET['text'];
$encrypted=md5($submit);
$sql = mysql_query("SELECT * FROM searchengine WHERE pagecontent LIKE '%$encrypted%'");
请指定我该怎么办?
我希望我没有误解你的问题。
如果要将partner food
更改为加密文本,然后通过GET方法发送,则必须首先在客户端加密文本字段,我的意思是使用jQuery或Java脚本在客户端进行加密,然后发送它。
PHP 是服务器端语言,也md5()
只能加密数据,不能破译被md5()
加密的数据。
我建议您使用其他可以破译的函数,例如base64
或其他类似的东西。
此外,如果您在MySQL中使用加密数据并且想要搜索该数据,则不需要LIKE
语句,请将查询更改为:
SELECT * FROM searchengine WHERE pagecontent = '$encrypted'
我希望它对你有所帮助。
简而言之:您不想在客户端对任何内容进行哈希处理或加密,因为它很容易被弄乱(并且算法突然严重依赖于浏览器)。发送实际的搜索查询,然后在服务器端对其进行哈希/加密有什么问题?
无论如何,正如@Anderss0n所说,你可以改用base64。或者,如果你真的想做一个MD5哈希,请考虑
1) 对一个简单的 PHP 脚本进行 Ajax 调用,返回它收到的 md5:
return md5($_POST['encrypt_this_string']);
或
2)查看此库: https://code.google.com/p/crypto-js/- 它公开了一个CryptoJS
对象,该对象具有一个名为MD5
的函数