【发布时间】:2013-04-07 09:33:29
【问题描述】:
我想使用标准的 Wordpress salt 对发送到数据库的密码进行加密,就像 Wordpress 在创建新用户时所做的那样。我知道我可以在 wp-config.php 中找到我的盐。所以我不需要生成盐;我只需要加密密码。
因此,当我创建 mypassword0 时,发送到数据库的是由我的 Wordpress salt 加密的文本字符串。
这是我的原始代码。 (感谢Yadav Chetan的帮助!)现在我只需要添加盐加密代码。
<?php
if(isset($_POST['submit'])){
$query = "INSERT INTO mytable_one
(user, pass)
VALUES
('".$_POST['user']."', '".$_POST['pass']."')";
$query = "INSERT INTO mytable_two
(fname, lname)
VALUES
('".$_POST['fname']."', '".$_POST['lname']."')";
mysql_query($query);
}else{
?>
<div class="content">
<form method="post">
<div><strong>First Name:</strong><span class="errortext">*</span></div>
<div><input id="first-name" name="fname" type="text" /></div>
<div><strong>Last Name:</strong><span class="errortext">*</span></div>
<div><input id="last-name" name="lname" type="text" /></div>
<div><strong>User:</strong><span class="errortext">*</span></div>
<div><input id="user-login" name="user" type="text" /></div>
<div><strong>Password:</strong><span class="errortext">*</span></div>
<div><input id="user-pass" name="pass" type="text" /></div>
<div><input id="submit-button" value="submit" type="submit" />
</div>
</form>
<?php }?>
更新:
RRikesh 建议我将 mysql_* 更改为 WPDB 代码。所以我尝试将其更改为 wpdb,并且我需要将其与其他代码集成。那么你能帮我修复这个更新的代码吗?
<?php
if(isset($_POST['submit'])){
$firstname = $_POST['fname'];
$lastname = $_POST['lname'];
$username = $_POST['user'];
$password = $_POST['pass'];
$wpdb->query(
$wpdb->prepare(
"INSERT INTO mytable_one
(user, pass) VALUES (%s, %s)",
$username,
wp_hash_password($password)
)
);
$wpdb->query(
$wpdb->prepare(
"INSERT INTO mytable_two
(fname, lname) VALUES (%s, %s)",
$firstname,
$lastname,
)
);
}else{
?>
<div class="content">
<form method="post">
<div><strong>First Name:</strong><span class="errortext">*</span></div>
<div><input id="first-name" name="fname" type="text" /></div>
<div><strong>Last Name:</strong><span class="errortext">*</span></div>
<div><input id="last-name" name="lname" type="text" /></div>
<div><strong>Username:</strong><span class="errortext">*</span></div>
<div><input id="user-login" name="user" type="text" /></div>
<div>Password:</div>
<div><input id="user-pass" name="pass" type="text" /></div>
<div><input id="submit-button" value="submit" name="submit" type="submit" /></div>
</form>
<?php }?>
更新2
我无法让 WPDB 方法工作。但是,使用我的 otd 方法,我能够获得密码。这是工作代码:
<?php
if(isset($_POST['submit'])){
$password = $_POST['user_pass'];
$hash = wp_hash_password('$password');
$query = "INSERT INTO wp_users
(fname, lname, user, pass) VALUES ('".$_POST['fname']."', '".$_POST['lname']."', '".$_POST['user']."', '".$hash."')";
mysql_query($query);
}else{
?>
也许我应该提出一个关于 WPDB 的新问题,因为这个问题是关于对密码进行哈希处理的,这个问题已经解决了。
【问题讨论】:
-
首先,不要在查询中使用
$_POST或mysql_*函数。请改用 MySQLi 或 PDO。其次,您必须生成盐,因为每个用户都不同。此外,您希望将盐与用户一起存储。 -
嗯,它对我有用,但如果你有更好的方法,请随时访问该问题并给出更好的答案:stackoverflow.com/questions/16010409/… 至于盐,那不能回答我的问题。
-
当然可以,只是非常不安全。谷歌“SQL注入”,你会知道更多。至于盐,你试过吗?
-
感谢您的输入;我想听听你的替代方法
-
顺便说一下,POST 仅在管理页面上,只有 2 或 3 个注册管理用户可以访问它。该页面的访问者将永远看到或访问此代码。还是不安全?
标签: php sql wordpress passwords salt