Может ли кто-нибудь помочь с моим PHP и jQuery? Я пытаюсь изменить свой пароль с помощью PHP, jQuery и Ajax. Я знаю, что этот метод довольно странный. Но я хочу больше узнать об Ajax, jQuery с PHP. Я хочу ОБНОВИТЬ свой пароль, не показывая и не вводя текущий пароль. Я хочу, чтобы мое текстовое поле было пустым, и если я что-то введу, он изменит мой пароль в моей таблице db. Не нужно вводить мой текущий пароль. Моя проблема в том, что мой пароль не обновился. Как я могу обновить свой пароль к базе данных? зависит от того, кто логин.
<?php
$conn = new mysqli("localhost", "root", "", "mydb");
if (isset($_POST["btnChange"])) {
$checkUser = $conn->query("SELECT * FROM tbl_user WHERE id= $_SESSION[id]");
if ($checkUser->num_rows > 0) {
$conn->query("UPDATE tbl_user SET password = '$_POST[new_password]' WHERE id= $_SESSION[id]");
echo "Update Successfully!";
}
}
?>
$(document).ready(function(){
$("#btnChange").click(function(){
$.ajax({
url:"insert.php",
method:"post",
data:{btnChange: "", new_password: $("#new_password").val(),},
success: function(data){
alert(data);
}
});
});
});<!DOCTYPE html>
<html>
<head>
<script type = "text/javascript" src = "jquery/jquery.js"></script>
<script src = "changeapasswordjs.js"></script>
<title>Change password</title>
</head>
<body>
<h1>Change password</h1>
<form id = "simpleForm">
<div>
<label for = "new_password">Your new_password</label>
<input type = "password" name = "new_password" id = "new_password" />
</div>
<br>
<div>
<button id = "btnChange">Change password</button>
</div>
</form>
</body>
</html>





Для доступа к массиву ключ должен быть в кавычках, например, ['key']. Кроме того, вы можете обернуть {} вокруг переменной, чтобы вывести ее внутри строки.
// First query you do
$checkUser = $conn->query("SELECT * FROM tbl_user WHERE id = '{$_SESSION['id']}'");
// Second query you do
$conn->query("UPDATE tbl_user SET password = '{$_POST['new_password']}' WHERE id = '{$_SESSION['id']}'");
Вам также не хватает типа контента, который вы выводите, и вы должны закодировать свой ответ в json:
header('Content-Type: application/json');
echo json_encode("Update Successfully!");
Более того, чтобы получить доступ к суперпеременной $_SESSION, вы должны сначала использовать session_start() до доступа к переменной.
Кроме того, ни один вопрос не связан, но ключевой момент, который движется дальше, ваши запросы подвержены SQL-инъекция, и вы должны учитывать включение регистрации ошибок.
куда мне поставить session_start()?
Вверху вашего php файла под <?php и выше $conn = ...
Undefined index: idPOST http://localhost/foldername/change.php 404 (Not Found) jquery.js:4Ваши ошибки объясняются сами собой, $_SESSION['id'] пуст, вы еще не установили его, а change.php не существует в текущем каталоге, вы должны указать абсолютный путь к тому месту, где существует файл
как установить $_SESSION['id']? Я уже решил change.php
session_start (); $ _SESSION ['id'] = 1; // ваше значение
Прежде всего, я думаю, что в вашем коде отсутствует очень важное утверждение, которым является оператор session_start().
Во-вторых, сеанс id нельзя назвать так, как вы его называете в своем коде, вам нужно добавить кавычки, как этот $_SESSION['id'].
Вам также необходимо добавить кавычки в WHERE clause, чтобы он стал действительным утверждением, например следующим: WHERE id = '$_SESSION['id']'.
Опять же, вы неправильно обращаетесь к массиву $_POST, вам нужно добавить кавычки, как этот $_POST['new_password'].
После исправления этих ошибок окончательный код должен выглядеть так:
<?php
session_start(); //Initializing session
$conn = new mysqli("localhost", "root", "", "mydb");
if (isset($_POST["btnChange"])) {
$checkUser = $conn->query("SELECT * FROM tbl_user WHERE id='".$_SESSION['id']."'");
if ($checkUser->num_rows > 0) {
$conn->query("UPDATE tbl_user SET password = '".$_POST["new_password"]."' WHERE id='".$_SESSION['id']."'");
echo "Update Successfully!";
}
}
?>
Пожалуйста, воспроизведите код для этого, рекомендуется использовать инструкцию else в случае, если пользователь не существует.
<?php
session_start(); //Initializing session
$conn = new mysqli("localhost", "root", "", "mydb");
if (isset($_POST["btnChange"])) {
$checkUser = $conn->query("SELECT * FROM tbl_user WHERE id='".$_SESSION['id']."'") or die(mysqli_error($conn));
if ($checkUser->num_rows > 0) {
$conn->query("UPDATE tbl_user SET password = '".$_POST['new_password']."' WHERE id='".$_SESSION['id']."'");
echo "ID: ".$_SESSION['id'];
}
else {
echo "User doesn't exist.";
echo "<br>ID: ".$_SESSION['id'];
}
}
?>
почему он не обновил мой пароль? Что-то не так с моими jQuery и Ajax?
Попробуйте сменить $conn = new mysqli('localhost','root','','mydb);' на $con = new mysqli('localhost','root','','mydb') or die(mysqli_error($con)); и посмотрите, есть ли ошибки mysqli.
тот же сэр, без ошибок и пароль вообще не менялся.
Не могли бы вы добавить echo '<br>ID: '.$_SESSION['id']; к if ($checkUser->num_rows >) statement и сказать, какой у него текущий выход? Также проверьте, есть ли пробелы перед session_start();, и удалите их.
Это ошибка в окне предупреждения <br>Parse error</b>: syntax error, unexpected '"', expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in <b> C: xampp\htdocs\userAndAdmin/change.php</b> on line <b>7</b><br/>
Я обновил свой ответ, пожалуйста, проверьте его и прокомментируйте результат.
В том же окне предупреждения об ошибке отображается это сообщение <br>Parse error</b>: syntax error, unexpected '"', expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in <b> C: xampp\htdocs\userAndAdmin/change.php</b> on line <b>7</b><br/>
мой идентификатор - целое число, а мой пароль зашифрован
Да, действительно были синтаксические ошибки, я перепутал использование двойных кавычек и одинарных кавычек, скопируйте и снова вставьте отредактированный код.
header('Content-Type: application/json');в верхней части вашего PHP-скрипта, затем используйтеjson_encode()для кодирования вашего вывода, чтобы ваш Javascript мог его прочитать. Кроме того, вам необходимо объединить ваш SQL.....SET password = '" . $_POST['new_password'] . "' WHERE....