2016-12-23 2 views
0

Я разрабатываю веб-сайт для школьного проекта, но это 2 дня, когда я работаю над функцией изменения пароля без успеха. Я написал функцию ajax для отправки данных post в php-скрипт.Обновление базы данных в ajax/php

$(function() { 
    function submitForm() { 
    var data = $("#chpass").serialize(); 
    $.ajax({ 
     type : 'POST', 
     url : "chpass.php", 
     data : data, 
    }); 
    } 
}); 

Это скрипт chpass.php.

<?php 

include_once 'dbconfig.php'; // import db configuration 

$sql = "UPDATE tbl_users SET user_password='password' WHERE user_email= "[email protected]""; 


    // Prepare statement 
    $stmt = $db_con->prepare($sql); 

    // execute the query 
    $stmt->execute(); 

?> 

И HTML

<div id="myModal" class="modal fade" role="dialog"> 
    <div class="modal-dialog"> 

    <!-- Modal content--> 
    <div class="modal-content"> 
     <div class="modal-header"> 
     <button type="button" class="close" data-dismiss="modal">&times;</button> 
     <h4 class="modal-title">Change Password</h4> 
     </div> 
     <div class="modal-body"> 
     <form method="post" id="chpass"> 
      <div id="error"> 
      <!-- error will be showen here ! --> 
      </div> 


      <!-- password --> 
      <div class="form-group has-feedback"> 
      <span class="glyphicon glyphicon-lock form-control-feedback"></span> 
      <input type="password" class="form-control" placeholder="New Password" name="password" id="password" /> 
      </div> 

      <!-- retype password --> 
      <div class="form-group has-feedback"> 
      <span class="glyphicon glyphicon-log-in form-control-feedback"></span> 
      <input type="password" class="form-control" placeholder="Retype Password" name="cpassword" id="cpassword" /> 
      </div> 


     </form> 
     </div> 
     <div class="modal-footer"> 
     <div class="row"> 
      <div class="col-xs-8"> 
      </div> 
      <!-- /.col --> 
      <div class="col-xs-4"> 
      <button id="btn-submit" type="submit" class="btn btn-primary btn-block btn-flat " name="btn-save" onclick="submitForm()" >Change</button> 
      </div> 
      <!-- /.col --> 
     </div> 
     </div> 
    </div> 
    </div> 
</div> 

Я действительно не понимаю, почему он не работает.

+0

Посмотрите на выделение и цитату. Используйте '' 'вместо' '' по электронной почте. – Qirel

+0

Ваш скрипт PHP выдает ошибки. Строковый синтаксис сломан, как указано в выделенном коде на этой странице. – David

+0

«UPDATE tbl_users SET user_password = 'password' WHERE user_email = "[email protected]" "; это неправильный синтаксис, который вы закрываете кавычки и снова открываете их," UPDATE tbl_users SET user_password = 'password' WHERE user_email = '[email protected]' "; будет работать, но будет ВСЕГДА set password = строка «пароль» для пользователя с этим адресом электронной почты. Не уверен, что это то, что вы хотите –

ответ

0

Изменение chpass.php до уровня ниже

<?php 

include_once 'dbconfig.php'; // import db configuration 

$sql = "UPDATE tbl_users SET user_password='password' WHERE user_email= '[email protected]'"; 


// Prepare statement 
$stmt = $db_con->prepare($sql); 

// execute the query 
$stmt->execute(); 

?> 
0

Ваш query имеет перерыв, потому что вы использовали double quotes внутри double quotes

используют это один

"UPDATE tbl_users SET user_password='password' WHERE user_email= '[email protected]'"; 
+0

Пробовал, но сталь не работает – NewProg

-1

Пожалуйста, смотрите этот код ниже

$email = $email; 
$password = $new_password; 
$query = "UPDATE TABLE_NAME SET password = :password WHERE email = :email"; 
$pdo_object= $pdo->prepare($query); 
$pdo_object->bindParam(':email', $_POST['email'], PDO::PARAM_STR); 
$pdo_object->bindParam(':password', $password, PDO::PARAM_STR); 
+0

* *Опасность* *: Вы уязвимы для [SQL-инъекций] (http://bobby-tables.com/) **, которые вам нужно [защищать] (http://stackoverflow.com/questions/60174/best-way -to-prevent-sql-injection-in-php). – Quentin

+0

Я видел этот код до ...: p – Fyntasia

+0

Почему вы используете: email /: пароль вместо $ email/$ password? – NewProg

0

Если вы вообще обеспокоены безопасностью (которую вы всегда слышите).

Этот фрагмент основан на предположении, что вы используете PDO как $ db_con.

// Any random password 
$randomPass = random_int(0, 10); 
$sql = "UPDATE `tbl_users` SET `tbl_users`.`user_password` = :pass WHERE `tbl_users`.`user_email` = :email"; 
$stmt = $db_con->prepare($sql); 
$stmt->bindValue(':pass', $randomPass, \PDO::PARAM_STR); 
$stmt->bindValue(':email', $userSubmittedEmail, \PDO::PARAM_STR); 
$stmt->execute(); 
+0

В последнем скрипте php используется пароль, введенный пользователем. – NewProg

0

После изменения котировок проблема остается. Консоль показывает мне эту ошибку: «index.html: 51 Uncaught ReferenceError: submitForm не определен». Браузер не может найти функцию javascript submitForm(), но файл chpass.js с этой функцией связан. Вероятно, это ошибка Sintax.

Смежные вопросы