Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Помогите с формой смены пароля

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
kremenchug
Отправлено: 26 Июня, 2018 - 23:56:33
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2018  


Помог: 0 раз(а)




Здравствуйте, помогите пожалуйста, нужно добавить обязательный ввод старого пароля и текущего, чтобы изменить пароль. Новичок в php и как осуществить, не понимаю, буду очень благодарен за помощь!

PHP:
скопировать код в буфер обмена
  1. <?PHP include('server.php')?>
  2. <?PHP
  3.  
  4. //PHP-код для обновления данных из базы mysql
  5. if(isset($_POST['update']))
  6. {
  7.    
  8.    $hostname = "localhost";
  9.    $username = "root";
  10.    $password = "";
  11.    $databaseName = "registration";
  12.    
  13.    $connect = mysqli_connect($hostname, $username, $password, $databaseName);
  14.    
  15.    // получать значения
  16.    
  17.    $id = $_POST['id'];
  18.    $password = $_POST['password'];
  19.  
  20.            
  21.    // запрос mysql для обновления данных
  22.    $query = "UPDATE `users` SET `password`= '".$password."'  WHERE `id` = $id";
  23.    
  24.    $result = mysqli_query($connect, $query);
  25.    
  26.    if($result)
  27.    {
  28.        echo 'Data Updated';
  29.    }else{
  30.        echo 'Data Not Updated';
  31.    }
  32.    mysqli_close($connect);
  33. }
  34.  
  35. ?>
  36.  
  37. <!DOCTYPE html>
  38.  
  39. <html>
  40.  
  41.     <head>
  42.  
  43.         <title> PHP UPDATE DATA </title>
  44.  
  45.         <meta charset="UTF-8">
  46.  
  47.         <meta name="viewport" content="width=device-width, initial-scale=1.0">
  48.  
  49.     </head>
  50.  
  51.     <body>
  52.     <div class="container">
  53.   <div class="frame">
  54.     <div class="nav">
  55.       <ul class"links">
  56.         <li class="signin-active"><a class="btn">Update inform</a></li>
  57.       </ul>
  58.     </div>
  59.         <form class="form-signin" action="change-password.php" method="post">
  60.  
  61.             ID To Update: <input class="form-styling" type="text" name="id" required value="<?PHP echo $id; ?>" readonly ><br><br>
  62.  
  63.             New Password:<input class="form-styling" type="text" name="password" required ><br><br>
  64.  
  65.          
  66.  
  67.      
  68.            
  69.  
  70.             <input class="btn-signin" type="submit" name="update" value="Update Data">
  71.  
  72.         </form>
  73.         <div class="forgot">
  74.         <a href="index.php">Back</a>
  75.       </div>
  76.   </div>
  77. </div>
  78.     </body>
  79.  
  80.  
  81. </html>
  82.  


server.php
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. // initializing variables
  4. $username = "";
  5. $email    = "";
  6. $phone = "";
  7. $errors = array();
  8.  
  9. // connect to the database
  10. $db = mysqli_connect('localhost', 'root', '', 'registration');
  11. //username
  12. if (isset($_GET['username'])){
  13.   $username = $_GET['username'];
  14.   $userquery = "SELECT * FROM users WHERE username = '$username'";
  15.   $result = mysqli_query($db,$userquery);
  16.   if(mysqli_num_rows($result) != 1)  {
  17.        die ("That username could not be found");
  18.        echo mysqli_error($db);
  19.   }
  20.   while($row = mysqli_fetch_assoc($result)){
  21.       $id = $row['id'];
  22.       $password = $row['password'];
  23.       $username = $row['username'];
  24.       $email = $row['email'];
  25.       $phone = $row['phone'];
  26.       $dbusername = $row['username'];
  27.   }
  28.   if($username != $dbusername){
  29.       die ("There has been a fatal error.");
  30.   }
  31. }
  32. // REGISTER USER
  33. if (isset($_POST['reg_user'])) {
  34.   // receive all input values from the form
  35.   $username = mysqli_real_escape_string($db, $_POST['username']);
  36.   $email = mysqli_real_escape_string($db, $_POST['email']);
  37.   $phone = mysqli_real_escape_string($db, $_POST['phone']);
  38.   $password_1 = mysqli_real_escape_string($db, $_POST['password_1']);
  39.   $password_2 = mysqli_real_escape_string($db, $_POST['password_2']);
  40.   $id = mysqli_real_escape_string($db, $_POST['id']);
  41.   // form validation: ensure that the form is correctly filled ...
  42.   // by adding (array_push()) corresponding error unto $errors array
  43.   if (empty($username)) { array_push($errors, "Username is required"); }
  44.   if (empty($email)) { array_push($errors, "Email is required"); }
  45.   if (empty($phone)) { array_push($errors, "Phone is required"); }
  46.   if (empty($password_1)) { array_push($errors, "Password is required"); }
  47.   if ($password_1 != $password_2) {
  48.         array_push($errors, "The two passwords do not match");
  49.   }
  50.  
  51.   // first check the database to make sure
  52.   // a user does not already exist with the same username and/or email
  53.   $user_check_query = "SELECT * FROM users WHERE username='$username' OR email='$email' LIMIT 1";
  54.   $result = mysqli_query($db, $user_check_query);
  55.   $user = mysqli_fetch_assoc($result);
  56.  
  57.   if ($user) { // if user exists
  58.     if ($user['username'] === $username) {
  59.       array_push($errors, "Username already exists");
  60.     }
  61.  
  62.     if ($user['email'] === $email) {
  63.       array_push($errors, "email already exists");
  64.     }
  65.   }
  66.  
  67.   // Finally, register user if there are no errors in the form
  68.   if (count($errors) == 0) {
  69.         $password = $password_1;//$password = md5($password_1)
  70.  
  71.         $query = "INSERT INTO users (username, email, phone, password)
  72.                           VALUES('$username', '$email', '$phone','$password')";
  73.         mysqli_query($db, $query);
  74.         $_SESSION['username'] = $username;
  75.         $_SESSION['success'] = "You are now logged in";
  76.         header('location: index.php');
  77.   }
  78. }
  79. if (isset($_POST['login_user'])) {
  80.     $username = mysqli_real_escape_string($db, $_POST['username']);
  81.     $password = mysqli_real_escape_string($db, $_POST['password']);
  82.  
  83.  
  84.     if (empty($username)) {
  85.         array_push($errors, "Username is required");
  86.     }
  87.     if (empty($password)) {
  88.         array_push($errors, "Password is required");
  89.     }
  90.  
  91.     if (count($errors) == 0) {
  92.         $password = $password; //$password = md5($password)
  93.         $query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
  94.         $results = mysqli_query($db, $query);
  95.         if (mysqli_num_rows($results) == 1) {
  96.           $_SESSION['username'] = $username;
  97.           $_SESSION['success'] = "You are now logged in";
  98.           header('location: index.php');
  99.         }else {
  100.             array_push($errors, "Wrong username/password combination");
  101.         }
  102.     }
  103.   }
  104.  
  105.  
  106.  
  107.   ?>
 
 Top
Vladimir Kheifets
Отправлено: 27 Июня, 2018 - 13:43:20
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




kremenchug пишет:
Здравствуйте, помогите пожалуйста, нужно добавить обязательный ввод старого пароля и текущего, чтобы изменить пароль. Новичок в php и как осуществить, не понимаю, буду очень благодарен за помощь!

Спойлер (Отобразить)


Спойлер (Отобразить)

Добрый день!
Обычно для ввода нового пароля его требуют повторить. Поэтому в форму небходимо довить поля для ввода старого пароля, для нового пароля и для повторного вввода нового пароля
Спойлер (Отобразить)
Затем перед сохранение нового пароля небходимо проверить правильность ввода старого и нового пароля
Спойлер (Отобразить)

(Отредактировано автором: 28 Июня, 2018 - 14:44:25)

 
 Top
kremenchug
Отправлено: 28 Июня, 2018 - 10:45:28
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2018  


Помог: 0 раз(а)




Спасибо большое, но при неверном старом пароле, все равно обновляется. может ли вы подсказать как это можно исправить?
 
 Top
Vladimir Kheifets
Отправлено: 28 Июня, 2018 - 13:56:01
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




kremenchug пишет:
Спасибо большое, но при неверном старом пароле, все равно обновляется. может ли вы подсказать как это можно исправить?

Добрый день!
Поробуйте так
Спойлер (Отобразить)

p.s. желательно во всех полях для ввода паролей изменить type на: type="password", а в поле id: type="hidden"
Удачи!

(Отредактировано автором: 28 Июня, 2018 - 14:54:44)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB