【发布时间】:2020-07-02 19:15:01
【问题描述】:
我在我的网站上用户的个人页面上有此代码用于更改密码。脚本有效,但问题是该工作仅适用于 id“60”。我如何从页面中获取 id 并在此代码中设置?我的页面是这样的“www.example.com/area-personale.php?id=60”。以及为什么脚本在我进入页面时立即启动,而我更喜欢在我按下提交时启动。
</script>
</head>
<body>
<form name="frmChange" method="post" action=""
onSubmit="return validatePassword()">
<div style="width: 500px;">
<div class="message"><?php if(isset($message)) { echo $message; } ?></div>
<table border="0" cellpadding="10" cellspacing="0"
width="500" align="center" class="tblSaveForm">
<tr class="tableheader">
<td colspan="2">Change Password</td>
</tr>
<tr>
<td width="40%"><label>Current Password</label></td>
<td width="60%"><input type="password"
name="currentPassword" class="txtField" /><span
id="currentPassword" class="required"></span></td>
</tr>
<tr>
<td><label>New Password</label></td>
<td><input type="password" name="newPassword"
class="txtField" /><span id="newPassword"
class="required"></span></td>
</tr>
<td><label>Confirm Password</label></td>
<td><input type="password" name="confirmPassword"
class="txtField" /><span id="confirmPassword"
class="required"></span></td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="submit"
value="Submit" class="btnSubmit"></td>
</tr>
</table>
</div>
</form>
</body>
</html>
<?php
session_start();
$_SESSION["id_user"] = "60";
$conn = mysqli_connect("x", "x", "x", "x") or die("Connection Error: " . mysqli_error($conn));
?>
<?php
if (count($_POST) > 0) {
$result = mysqli_query($conn, "SELECT password FROM vm_users WHERE id_user='" . $_SESSION["id_user"] . "'");
$row = mysqli_fetch_array($result);
if ($_POST["currentPassword"] == $row["password"]) {
mysqli_query($conn, "UPDATE vm_users set password='" . $_POST["newPassword"] . "' WHERE id_user='" . $_SESSION["id_user"] . "'");
$message = "Password modificata";
} else
$message = "Current Password is not correct";
}
?>
<html>
<head>
<title>Change Password</title>
<link rel="stylesheet" type="text/css" href="styles.css" />
<script>
function validatePassword() {
var currentPassword,newPassword,confirmPassword,output = true;
currentPassword = document.frmChange.currentPassword;
newPassword = document.frmChange.newPassword;
confirmPassword = document.frmChange.confirmPassword;
if(!currentPassword.value) {
currentPassword.focus();
document.getElementById("currentPassword").innerHTML = "required";
output = false;
}
else if(!newPassword.value) {
newPassword.focus();
document.getElementById("newPassword").innerHTML = "required";
output = false;
}
else if(!confirmPassword.value) {
confirmPassword.focus();
document.getElementById("confirmPassword").innerHTML = "required";
output = false;
}
if(newPassword.value != confirmPassword.value) {
newPassword.value="";
confirmPassword.value="";
newPassword.focus();
document.getElementById("confirmPassword").innerHTML = "not same";
output = false;
}
return output;
}
【问题讨论】:
-
网址参数可以在
$_GET变量中找到。 -
你为什么在这里硬编码值 60 $_SESSION["id_user"] = "60"; ?而是从 $_GET 变量中选择它,例如 $_SESSION["id_user"] = $_GET["id"]
-
用户 ID 最初设置的方式和位置?
标签: javascript php session passwords