【问题标题】:if($_SERVER['REQUEST_METHOD'] == "POST") is not workingif($_SERVER['REQUEST_METHOD'] == "POST") 不工作
【发布时间】: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


【解决方案1】:

您的 HTML 代码中有拼写错误:

name"password"
name"newpassword"
name"submit"

您离开了= 标志。改为:

name="password"
name="newpassword"
name="submit"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多