我的目标是创建一个用户仪表板,用户可以在其中更新他/她的详细信息,例如用户名,密码和电子邮件。
下面的代码来自reset-password.php(实际上有效)。我试图对其进行编辑以更改用户名和电子邮件。但是首先我需要使其正常运行。
单击“提交”按钮时没有出现任何错误,但是它将原始用户名重命名为空白。我找不到问题。我是这种PHP的新手(我已经学习了非常简单的过程类型)。请帮忙。
<?php
*// Initialize the session*
session_start();
*// Check if the user is logged in, otherwise redirect to login page*
if(!isset($_SESSION["loggedin"]) || $_SESSION["loggedin"] !== true){
header("location: login.php");
exit;
}
*// Include config file*
require_once "config.php";
*// Define variables and initialize with empty values*
$new_username = "";
$new_username_err = "";
*// Processing form data when form is submitted*
if($_SERVER["REQUEST_METHOD"] == "POST"){
*// Validate new Username*
if(empty(trim($_POST["new_username"]))){
$new_username_err = "Please enter a new username.";
}
*// Check input errors before updating the database*
if(empty($new_username_err)){
*// Prepare an update statement*
$sql = "UPDATE users SET username = ? WHERE id = ?";
if($stmt = mysqli_prepare($link, $sql)){
*// Bind variables to the prepared statement as parameters*
mysqli_stmt_bind_param($stmt, "si", $param_username, $param_id);
*// Set parameters*
$param_username = $new_username;
$param_id = $_SESSION["id"];
*// Attempt to execute the prepared statement*
if(mysqli_stmt_execute($stmt)){
*// Username updated successfully. Destroy the session, and redirect to login page*
session_destroy();
header("location: change-username-success.php");
exit();
} else{
echo "Oops! Something went wrong. Please try again later.";
}
}
*// Close statement*
mysqli_stmt_close($stmt);
}
*// Close connection*
mysqli_close($link);
}
?>
我的表单代码:
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
<div class="form-group <?php echo (!empty($new_username_err)) ? 'has-error' : ''; ?>">
<input type="text" name="new_username" placeholder="New Username" class="form-control" value="<?php echo $new_username; ?>">
<span class="help-block"><?php echo $new_username_err; ?></span>
</div>
<div class="form-group">
<input type="submit" class="btn" value="Submit">
<a class="btn" href="userpage.php"><i class="fas fa-ban"></i>Cancel</a>
</div>
</form>
答案 0 :(得分:0)
在分配参数之前先绑定它们:
Passing Additional Data To Components
在分配后将带有绑定的块放入
mysqli_stmt_bind_param($stmt, "si", $param_username, $param_id);
*// Set parameters*
$param_username = $new_username;
$param_id = $_SESSION["id"];