【问题标题】:Form searching issue php表单搜索问题php
【发布时间】:2015-01-12 05:33:33
【问题描述】:

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

[1]: http://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&amp;Submit=Submit+Query .但它不是这样工作的。 我试过这样:

$submit=$_GET['text'];
$encrypted=md5($submit);
$sql = mysql_query("SELECT * FROM searchengine WHERE pagecontent LIKE '%$encrypted%'"); 

请说明我应该怎么做?

【问题讨论】:

  • 您想在浏览器中显示加密的关键字还是只想在您的数据库中搜索?如果您只想在数据库中搜索,那么您的方法是正确的
  • 我想在数据库中搜索加密词,基于查询,如果方法是正确的那么为什么它不搜索,意味着只搜索这个词。
  • 顺便说一句,如果您在浏览器中将关键字显示为纯文本,为什么要在 DB 中将它们加密?我不认为它的正确方法。检查您的列大小。有时,如果您的列大小较小,加密字符串变得更长并且数据库存储了该加密字符串的几个字符。
  • 不知何故,将它们以加密的形式存储在数据库中很重要,然后按照加密但不工作。请建议任何帮助或链接。
  • 我想有人已经提出的另一个问题会对您有所帮助。 dba.stackexchange.com/questions/23908/…

标签: php mysql sql


【解决方案1】:

希望我没有误解你的问题。

如果你想把partner food改成密文然后通过GET方式发送,你必须先在客户端加密文本字段,我的意思是在客户端使用jQuery或Java脚本加密,然后发送。

PHP是Server Side语言,而且md5()只能加密数据,不能破译md5()加密的数据。

我建议您使用其他可以解密的函数,例如 base64 或其他类似的函数。

另外,如果您在 MySQL 中使用加密数据并且想要搜索该数据,则不需要 LIKE 语句,请将您的查询更改为:

SELECT * FROM searchengine WHERE pagecontent = '$encrypted'

希望对你有帮助。

【讨论】:

    【解决方案2】:

    简而言之:您不想散列或加密任何客户端,因为它很容易被弄乱(并且算法突然严重依赖于浏览器)。发送实际的搜索查询,然后在服务器端对其进行哈希/加密有什么问题?

    无论如何,正如@Anderss0n 所说,您可以改用 base64。或者,如果您真的想做 MD5 哈希,请考虑

    1) 对一个简单的 PHP 脚本进行 Ajax 调用,返回它收到的 md5:

    return md5($_POST['encrypt_this_string']);
    

    2) 检查这个库:https://code.google.com/p/crypto-js/ - 它公开了一个 CryptoJS 对象,该对象具有一个名为 MD5 的函数

    【讨论】:

    • 我会选择 2 号。您只需在 js 文件中包含 &lt;script src="...."&gt;&lt;/script&gt; 标签。
    猜你喜欢
    • 2015-01-23
    • 1970-01-01
    • 2017-06-22
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 2011-03-25
    相关资源
    最近更新 更多