我的php代码更新代码不起作用。没有错误消息它没有更新。这是代码:
<?php require 'connections/connections.php'; ?>
<?php
session_start();
if(isset($_SESSION["UserIdent"])){
}else{
header('Location: login.php');
}
?>
<?php
$User = $_SESSION["UserIdent"];
$result = $con->query("select * from user where UserID='$User'");
$row = $result->fetch_array(MYSQLI_BOTH);
$_SESSION["FirstName"] = $row['Fname'];
$_SESSION["LastName"] = $row['Lname'];
$_SESSION["Username"] = $row['Username'];
$_SESSION["Email"] = $row['Email'];
$_SESSION["Password"] = $row['Password'];
?>
<?php
if(isset($_POST['UpdateUser'])){
$UpdateFname = $_POST['FirstName'];
$UpdateLname = $_POST['LastName'];
$UpdateUsername = $_POST['Username'];
$UpdateEmail = $_POST['Email'];
$UpdatePassword = $_POST['Password'];
$sql = $con->query("UPDATE user SET Fname = '{$UpdateFname}',
Lname = '{$UpdateLname}',
Email = '{$UpdateEmail}',
Username = '{$UpdateUsername}',
Password = '{$UpdatePassword}',
where UserID= $User");
header('Location: UpdateAccount.php');
}
?>
HTML代码在这里:
<!doctype html>
<html>
<head>
<link href="css/Master.css" rel="stylesheet" type="text/css">
<link href="css/Menu.css" rel="stylesheet" type="text/css">
<meta charset="utf-8">
<title>UpdateAccount</title>
</head>
<body>
<div id="holder">
<div id="header"></div>
<div id="NavBar">
<nav>
<ul>
<li><a href="account.php">Account</a></li>
<li><a href="Logout.php">Logout</a></li>
</ul>
</nav>
</div>
<div id="Content"></div>
<div id="ContentLeft"></div>
<div id="ContentRight"><form> <h6>
<label for="FirstName">First Name:<br>
</label>
<input name="FirstName" type="text" required="required"
class="StyleTxtField" id="FirstName" value="<?php echo
$_SESSION["FirstName"]; ?>">
</h6>
<h6>
<label for="LastName">Last Name:<br>
</label>
<input name="LastName" type="text" required="required" class="StyleTxtField"
id="LastName" value="<?php echo $_SESSION["LastName"]; ?>">
</h6>
<h6>
<label for="Username">Username:<br>
</label>
<input name="Username" type="text" class="StyleTxtField" id="Username"
value="<?php echo $_SESSION["Username"]; ?>">
</h6>
<h6>
<label for="Email">Email:<br>
</label>
<input name="Email" type="text" required="required" class="StyleTxtField"
id="Email" value="<?php echo $_SESSION["Email"]; ?>">
</h6>
<h6>
<label for="Password">Password:<br>
</label>
<input name="Password" type="password" class="StyleTxtField" id="Password"
value="<?php echo $_SESSION["Password"]; ?>">
</h6>
<p>
<input name="UpdateUser" type="submit" class="StyleTxtField" id="UpdateUser"
value="UpdateUser">
</p>
</form></div>
<div id="Footer"></div>
</body>
</html>
问题在于我无法弄清楚它为什么不更新...任何帮助我将不胜感激。没有错误,所以它应该工作正常,但它没有。我只是学习Mysqli所以我不担心的任何安全问题,我想要的只是帮助如何让这些代码工作。 谢谢!
答案 0 :(得分:0)
在您的代码中,<form>
您正在使用$_POST
超级全局来获取值。所以你的表单方法必须像以下一样发布:
<form method="post">
更新1
正如我的另一位朋友 Fred-ii 建议,请确保您在其他文件中使用session_start()
,以及您需要$_SESSION
特别是此文件中的信息。重定向用户
UpdateAccount.php
最重要的问题:
为什么要在会话中保存密码?如果它的简单文本没有任何加密功能比其他问题。您需要以加密格式保存密码。
您需要阻止SQL注入代码。
@ fred-ii确定的另一个问题是删除此行中的结尾逗号
密码='{$ UpdatePassword}',
旁注:
始终在开发方面激活您的error_reporting
而非生产。您将获得所有错误并节省您的时间。