我正在尝试创建一个脚本来通过邮件恢复密码,但它不起作用。以前它出现了电子邮件无效的错误。
现在它结束了我的邮件,但其中有encrypted password
。
请帮我解密密码
任何导致此错误的人都非常感激
<?php
require_once("config.php"); //Database Connection
//Catch Field Data
$email = $_POST['email'];
$submitted = $_POST['submitted'];
if($email) {
$query = printf("SELECT * FROM registration where email='$email'");
$result = mysql_query($query);
$rowAccount = mysql_fetch_array($result);
}
if ($rowAccount) {
$subject = "Your goprestige Username / Password Reminder";
$headers = "From: info@abc.com";
$fname = $rowAccount['fname'];
$password = $rowAccount['password'];
$msg = "<h1>My abc Admin</h1>
<p>Hello '$user'!</p>
<p>Here is the username/password reminder you requested. If you didn't request this reminder then don't panic too much, the likely hood of someone gaining access is minimal. Thank you abc </p>
<p>Username: '$fname'</p>
<p>Password: '$password'</p>
<p>Many thanks, the abc Support Team.</p>
";
$success = mail($email, $subject, $msg, $headers);
if($success) {
echo "<p id=errors>Reminder Success: Your Username and Password have been emailed to $email";
}
} else ($submitted) {
echo '<p id="errors">Reminder Failed: The email you entered was not found on the system, please try again.</p>';
}
?>
HTML
<form class="form-horizontal ct-u-paddingBottom20" action="php/forget.php" method="post" id="passwd" style="display:none;">
<div class="form-group">
<label for="username" class="col-sm-2 control-label">Useremail: </label>
<div class="col-sm-10">
<input type="text" class="form-control" id="email" name="email" placeholder="enter your email id" required>
</div>
</div>
<div>
<center>
<span style="color:green;display:none;" class="success-footer"><h4 style="margin-left: 0px;">password link is sent </h4></span>
<span style="color:orange;display:none;" class="error-footer"><h4 style="margin-left: 0px;">invalid email</h4></span>
</center>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<p><input type="submit" value="Reset Password" /></p>
</div>
</div>
</form>
的Javascript
<script type="text/javascript">
var frm = $('#passwd');
frm.submit(function (ev) {
$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
data: frm.serialize(),
success: function (data) {
//alert(data);
if (data) {
//alert('data');
$('.success-footer').css('display','block');
}
else{
$('.error-footer').css('display','block')
}
}
});
ev.preventDefault();
});
</script>
答案 0 :(得分:1)
我假设您正在使用xampp发送电子邮件。如果是这种情况,请按照此讨论中的准则How to configure XAMPP to send mail from localhost?配置您的电子邮件设置。
这是示例代码
<?php
$Results['id'] = 1;
$message = "Your password reset link send to your e-mail address.";
$to = 'your_email_id@gmail.com';
$subject = "Forget Password";
$from = 'info@abc.com';
// $body = 'Hi, <br/> <br/>Your Membership ID is '.$Results['id'].' <br><br>Click here to reset your password http://google.com/login-signup-in-php/reset.php?encrypt='.$encrypt.'&action=reset .';
$body = "Hello";
$headers = "From: " . strip_tags($from) . "\r\n";
$headers .= "Reply-To: ". strip_tags($from) . "\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
mail($to, $subject, $message, $headers);
?>
如果您正确遵循指南,请尝试上面给出的代码,基本上从您的代码中删除一些从数据库中获取的数据,以便在邮件发送数据时生成测试。如果成功,那就是你把它放回去的时间
if (condition) {
# code...
} else {
# code...
}
你的代码。
希望这有助于解决问题
答案 1 :(得分:1)
通常,密码是经过哈希处理的,而不是编码的。不同之处在于哈希不能没有&#34;没有哈希&#34;带回原始密码。在代码的密码保存功能中,请检查您是否使用了password_hash()函数。如果你这样做了,你就无法获得该密码。
这实际上是一件好事,因为密码提醒通常是一种不安全的方式来提供一个&#34;忘记密码&#34;功能。请参阅Troy Hunt关于构建安全密码重置功能(http://www.troyhunt.com/2012/05/everything-you-ever-wanted-to-know.html)
的文章可能有以下几种解决方案:
1)提供一次性,有时间限制的使用密码,可以用来更改密码。确保其中只有一个在任何时刻都有效。
2)提供指向唯一网址的链接,该链接允许用户对某些内容(例如安全问题)提出质疑,以验证他们不仅是电子邮件的收件人,还是实际上是请求更改密码的人。
第二种选择会更安全,因为它会提供额外的验证层,当然是为了方便用户。
答案 2 :(得分:-1)
像这样更新你的jquery ajax:
$.ajax({
method: "POST",
.....
})
因为方法是默认的:&#39; GET&#39;