-1

我只是 SQL 的新手,所以请帮助我。

我有一个简单的网站,每个用户都有一个用户名和密码。j******n如果密码是“Jonathan” ,我想在“帐户”页面上打印出密码。

问题是,我有使用 SQL 函数编码的密码ENCODE()

我可以DECODE()用来获取 SQL 中的值,但那又如何呢?如何在网页上打印出来(然后我会格式化)?我只知道如何使用mysqli_query()和遍历查询的循环while来运行查询。

SQL 中是否有与 PHP 等效的函数echo可以在网页上打印出一个值?或者 PHP 是否有一个可以从 SQL 打印出函数的函数?

如果我不清楚,请告诉我。

感谢您的任何回答。

4

2 回答 2

1

解决方案是只使用别名。

> $query = "SELECT DECODE(foo,'key') AS somename FROM bar"; 
> $result =mysql_query($query); 
> echo mysql_result($result,'somename');

或者

> $row = mysql_fetch_assoc($result); echo $row['somename'];

来自:http ://forums.devshed.com/mysql-help-4/php-mysql-encode-decode-57952.html

于 2013-10-23T00:17:03.470 回答
0

不要使用 MySQL 的ENCODE()DECODE()作为密码。相反,使用 PHPpassword_hash()对您的密码进行哈希处理。您永远不想将其存储为明文(甚至加密),总是散列。

当您仍然以纯文本形式保存它(例如它所在的位置password_hash())时,将它的提示版本存储在数据库的新列中。

$password = $_POST['password']; 
$hashed_password = password_hash($password, PASSWORD_DEFAULT);
$hint_password = substr($password, 0, 1) . str_repeat('*', strlen($password) -2) . substr($password, -1);

现在将与您的数据库$hint_password分开存储。$hashed_password这可确保:

  • 密码永远无法以其原始形式访问
  • 您仍然可以看到提示密码
于 2013-10-23T00:17:12.490 回答