【发布时间】:2009-11-19 16:44:17
【问题描述】:
我正在尝试通过 md5 函数从我的 php 页面验证 mysql 上的一对数据列。
我已经使用 php md5 函数加密了字符串 "helloworld" 并尝试将其与 MYSQL MD5 函数进行比较,但它不起作用。
我这样做是因为在数据库中有一对字符串 "hello" 和 "world" 需要与我的 php 字符串进行比较,所以:
<?php
$str_a = "hello";
$str_b = "world";
$str_encrypted = md5 ($str_a.$str_b);
// note "first_col" is "hello" and "second_col" is "world"
$sql = "UPDATE `my_table` SET `checked_col` = '1' WHERE MD5(CONCAT(first_col,second_col)) = '$str_encrypted' LIMIT 1;";
$res = mysql_query ($sql) or die (mysql_error());
($res) ? print "true" : print "false";
?>
这段代码返回false,数据库不UPDATE列checked column,但不返回mysql_error问题。
php 的 md5 能否从 MYSQL 生成不同的 MD5?
一个朋友写的类似代码在同一台服务器上工作,但我不需要太多经验就能看出区别在哪里
谁能解释我哪里错了?
谢谢!
【问题讨论】:
-
不确定你的问题是什么,但我会选择一种更透明的调试方式。自己验证流程的每一部分,而不是假设事情按预期工作。所以首先输出 $str_a.$str_b 和 CONCAT(first_col,second_col) 并确保它们是相同的输入,正如你所期望的那样。然后对它们进行 MD5 并直观地验证它们是否评估为相同的东西......等等,这样您就可以验证每一步都按预期工作。
-
谢谢,如果您认为查询应该有效,我会从头重新检查!
-
P.S.我听说这些天 MD5 几乎是一种破解加密(至少如果你不播种哈希或者你不做嵌套的 md5 调用,比如 md5(md5(md5('password'))) ),所以请记住,使用裸 md5() 函数调用可能比安全加密更适合净化数据存储,您可能希望使用其他方法。
-
太棒了!你是对的!感谢您的帮助