【问题标题】:Generate Password PHP, MySQL生成密码 PHP, MySQL
【发布时间】:2012-06-03 07:09:47
【问题描述】:

我正在尝试创建一个 PHP 页面来生成密码并使用数据库上的新密码更新记录。数据库中有两个表我必须检查用户是否存在,我不确定更新字段所需的 MySQL。这是我目前所拥有的:

if (isset($_POST['rest'])) {

        if (empty($_POST['email'])) { 
        echo "<h2 class='output'>You did not enter an email address</h2>"; 
        } 
        else{ 
        $email = $_POST['email'];   

        mysql_select_db($database_localhost,$localhost) or die ("Couldn't select the database."); 

        $result1=mysql_query("SELECT * FROM student WHERE email='$email'"); 
        $result2=mysql_query("SELECT * FROM admin WHERE email='$email'");

        $rowCheck1 = mysql_num_rows($result1);
        $rowCheck2 = mysql_num_rows($result2); 
        if(($rowCheck1 > 0) || ($rowCheck2 > 0)){ 

        $newPass = md5( random_gen(8));
        mysql_query("INSERT INTO admin, student (password) VALUES (".$newPass.") WHERE email="$email"");

}}

任何帮助将不胜感激 谢谢

【问题讨论】:

  • 嘿,冒着跑题的风险,我想建议你请不要尝试生成自己的密码,尤其是不要使用像md5(something) 这样幼稚的东西。为了您的用户,请查看PHPass 之类的内容。
  • 是的,我需要用表单输入的电子邮件更新记录的密码字段。
  • 谢谢@zi42。这是我第一次尝试这样的事情,看看PHPass
  • 不客气,很高兴我能帮上忙!

标签: php mysql passwords md5 generator


【解决方案1】:

您应该使用sql update statement。 insert 语句将在 student 和 admin 表中添加一个新行。

所以你的代码应该是这样的:

if (isset($_POST['rest'])) {

    if (empty($_POST['email'])) { 
        echo "<h2 class='output'>You did not enter an email address</h2>"; 
    } 
    else{ 
        $email = $_POST['email'];   

        mysql_select_db($database_localhost,$localhost) or die ("Couldn't select the database."); 

        $result1=mysql_query("SELECT * FROM student WHERE email='$email'"); 
        $result2=mysql_query("SELECT * FROM admin WHERE email='$email'");

        $rowCheck1 = mysql_num_rows($result1);
        $rowCheck2 = mysql_num_rows($result2); 
        if(($rowCheck1 > 0) || ($rowCheck2 > 0)){ 

            $newPass = md5( random_gen(8))
            mysql_query("UPDATE admin SET password = '$newPass' WHERE email='$email'");
            mysql_query("UPDATE student SET password = '$newPass' WHERE email='$email'");

    }
}

}

【讨论】:

    【解决方案2】:

    不要在 mysql 表中插入新行,而是使用“更新”。

    mysql_query("UPDATE `admin`,`student` (`password`) VALUES ('$newPass') WHERE `email` = '$email'");
    

    另外,添加了一些标点符号。

    编辑: 感谢@zi42 提醒我,通常不再使用 MD5 是一个好主意。更好用的是hash_hmac 和“sha256”哈希。

    【讨论】:

      猜你喜欢
      • 2014-03-27
      • 1970-01-01
      • 2011-10-25
      • 2011-08-09
      • 2011-08-31
      • 2015-05-12
      • 1970-01-01
      • 1970-01-01
      • 2013-06-28
      相关资源
      最近更新 更多