Я пытаюсь разрешить зарегистрированным пользователям моего сайта изменять свой пароль, который затем будет обновлен в моей базе данных. Когда я нажимаю кнопку «Отправить», я получаю «Неизвестный столбец» [имя пользователя] в разделе «where». Я пробовал несколько вещей, и я не могу заставить его работать. Я новичок в PHP, поэтому у меня нет широкого набора навыков, поэтому я не уверен, в чем проблема. Если бы кто-нибудь мог мне помочь, я был бы признателен, спасибо.Позвольте пользователю сменить пароль
<?php
session_start();
require_once ("db_connect.php");
require_once($_SERVER['DOCUMENT_ROOT'] . '/functions/functions.php');
$oldpw = ($_POST['oldpw']);
$newpw = ($_POST['newpw']);
$conpw = ($_POST['conpw']);
$currentpw = $_SESSION['password'];
if ($_POST['change'] == 'Change') {
if ($oldpw && $newpw && $conpw) {
if ($newpw == $conpw) {
if ($db_server){
mysqli_select_db($db_server, $db_database);
$oldpw = salt($currentpw);
// check whether username exists
$query = "SELECT password FROM users WHERE 'username'= '" . $_SESSION['username'] . "'";
$result = mysqli_query($db_server, $query);
if(!$result){
$message = "<p class='message'>Error: Coud not connect to the database.</p>" ;
}else{
$newpw = salt($newpw);
$query = "UPDATE users SET password = '$newpw' WHERE username = " . $_SESSION['username'] . "";
mysqli_query($db_server, $query) or
die("Insert failed. " . mysqli_error($db_server));
$message = "<p class='message'>Your password has been changed!</p>";
// Process further here
mysqli_free_result($result);
}
}else{
$message = " <p class='message'>Your current password is incorrect.</p>";
}
}else{
$message = "<p class='message'>Your new passwords do not match.</p>";
}
}else{
$message = "<p class='message'>Please fill in all fields.</p>";
}
}
?>
Это HTML я использовал:
<form action='change-password.php' method='post' id="register-form">
<?php echo $message; ?>
<input class="password-field" type='password' name='oldpw' value='<?php echo $username; ?>' placeholder="Current Password"><br />
<input class="password-field" type='password' name='newpw' placeholder="New Password"><br />
<input class="password-field" type='password' name='conpw' placeholder="Confrim Password">
<input class="button" type='submit' name='change' value='Change' />
</form>
Чтобы узнать реальную ошибку, вы должны использовать 'эхо mysqli_error ($ db_server);' вместо вашей 'Ошибка: не удалось подключиться ...' пользовательское сообщение. –
Я предполагаю, что это потому, что имя пользователя '$ _SESSION ['username']' не окружено одинарными кавычками как строка SQL в этом запросе ... –
Строки должны быть в кавычках. Также почему вы храните открытый пароль? –