表单搜索问题 php


Form searching issue php

下面给出的简单形式,如果我们搜索某些内容,它在浏览器中看起来像这样:

[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的函数