【发布时间】:2015-01-08 09:38:18
【问题描述】:
这是用户登录后看到的我的帐户页面,它在顶部显示来自数据库的用户详细信息。
我已经添加了更改密码的功能,但它不起作用。
我正在尝试使当用户单击“提交”按钮时,新密码替换数据库中的旧密码,但是 if 语句不起作用
当我点击提交按钮时,它只是刷新页面,因为我的else。
ob_start();
$query ="SELECT * FROM Customers WHERE Email='". $_SESSION['Email'] ."'";
$result = mysqli_query($connection,$query);
if ($row = mysqli_fetch_assoc($result)) {
$DFirstName = $row ['FirstName'];
$DLastName = $row ['LastName'];
$DEmail = $row['Email'];
$DPassword = $row ['Password'];
$DGender = $row ['Gender'];
$DAge = $row ['Age'];
echo'Welcome: ' .$DFirstName. ' ' .$DLastName. '<br/>';
echo'Email: ' .$DEmail. '<br/>';
echo'Gender: ' .$DGender. '<br/>';
echo'Age: ' .$DAge;
}else{
echo'error';
}
?>
<h1>Change your password</h1>
<form method="post">
Old Password <input type="password" name"password" value=''/></br>
New Password <input type="password" name"newpassword" value=''/></br>
<input type="submit" name"submit" value="submit"/>
</form>
<?php
if($_SERVER['REQUEST_METHOD'] == "POST") {
if ($_POST['password'] == $_SESSION['password']){
$newpassword = $_POST['newpassword'];
$username = $_SESSION['Email'];
$query = "UPDATE Customers
SET Password = '$newpassword'
WHERE Email = '$username'";
$result = mysqli_query($connection,$query);
//so that the user has to log back in once password has been changed
session_destroy();
header('location:login.php');
} else {echo 'error1';}
}else {echo 'error2';}
ob_flush();
?>
</div>
【问题讨论】:
-
什么不起作用?您能否显示错误,解释您希望看到但没有看到的内容等?
-
我正在尝试这样做,以便当用户单击提交按钮时,新密码会替换数据库中的旧密码但是当我单击提交按钮时 if 语句不起作用它只是刷新页面因为我的 else
-
为什么不直接使用 if($_POST['submit']) ?
-
因为什么“其他”?您是否真的测试过它是否进入
if?如果是这样,怎么做?如果您唯一的迹象是您之后没有被重定向到 login.php:那是因为您在标题之前输出了一堆东西。 -
如果您在不使用按钮的情况下提交表单(例如在文本字段中点击“输入”),并非所有浏览器都会发送提交字段的值。检查是否设置了提交是不可靠的。
标签: php if-statement mysqli phpmyadmin