我创建了两个php文件。 one forgot-password.php second new-password.php
在forget-password.php中,我允许用户输入他们的电子邮件并发送该电子邮件的链接。当他们点击该链接时,他们将被重定向到new-password.php页面。
输入新密码后,它不会更新到数据库中。
来自forgot-password.php的链接
"http://localhost/examplemodel/"."new-password.php?email=" .md5( $email)

现在使用新密码我使用get方法将该电子邮件存储在一个对象中,并通过查询检查该电子邮件是否存在。
然后提交输入的密码并根据此电子邮件值进行更新。
获取记录时,来自get变量的电子邮件正在运行。
但是当我尝试使用get方法中的相同电子邮件值更新密码时,它会显示未定义的索引。我尝试了很多......无法找到解决方案。请帮帮我...
new-password.php代码是
<?php
if(!isset($_SESSION))
{
session_start();
}
if(isset($_SESSION['usr_id'])!="") {
header("Location: index.php");
}
include("dbconfig.php");
$email1 = $_GET['md5(email)'];
//check if form is submitted
if (isset($_POST['login'])) {
$password = mysqli_real_escape_string($con, $_POST['password']);
$qry_em = 'UPDATE register SET password= " '.md5($password). ' " WHERE email= " ' .$email1 .' " ';
$qry_res = mysqli_query($con,$qry_em);
if (!$qry_res) { die('Invalid query: ' . mysqli_error($con));}
if(!empty($qry_res)) {
$successmsg = "Your new password is created . <a href='login.php'>Click here to Login</a>";
}
else {
$errormsg = "Problem in creating new password...";
}
}
?>
<?php include("header.php"); ?>
<div class="col-lg-12 " style="background-color:#49BF4C; margin-top:0.5em;">
<div class="col-lg-12">
<strong> <h3 style="color:white; font-weight:900; font-size:1.5em; text-align:center; ">Enter Your New Password...</h3> </strong>
</div>
</div>
<div class="col-md-4 col-md-offset-4 well" style="margin-top:1em;">
<form role="form" action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" name="loginform">
<fieldset>
<div class="form-group">
<label for="name">Password</label>
<input type="password" name="password" placeholder="Your Password" required class="form-control" />
</div>
<div class="form-group">
<input type="submit" name="login" value="Login" class="btn btn-primary" />
</div>
</fieldset>
</form>
<span class="text-danger"><?php if (isset($successmsg)) { echo $successmsg; } ?></span>
<span class="text-danger"><?php if (isset($errormsg)) { echo $errormsg; } ?></span>
</div>
<?php include("footer.php"); ?>
&#13;
是否无法将来自该网址的GET方法中的此电子邮件值用于此更新语句的WHERE子句?
答案 0 :(得分:0)
请记住,您使用md5对查询参数进行了编码,并且您尝试将md5哈希值与电子邮件地址进行比较。
$email1 = $_GET['md5(email)'];
可能永远不会有效,只需将其更改为$email1 = $_GET['email'];
然后您可以使用以下更新语句:
$qry_em = 'UPDATE register SET password= " '. md5($password). ' " WHERE md5(email) Like " ' .$email1 .' " ';
但正如一些评论者所说,你没有理由使用md5,而你的代码并不是最安全的。