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
Форумы портала PHP.SU :: Версия для печати :: Помогите с формой смены пароля
Форумы портала PHP.SU » » Вопросы новичков » Помогите с формой смены пароля

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

1. kremenchug - 26 Июня, 2018 - 23:56:33 - перейти к сообщению
Здравствуйте, помогите пожалуйста, нужно добавить обязательный ввод старого пароля и текущего, чтобы изменить пароль. Новичок в 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.   ?>
2. Vladimir Kheifets - 27 Июня, 2018 - 13:43:20 - перейти к сообщению
kremenchug пишет:
Здравствуйте, помогите пожалуйста, нужно добавить обязательный ввод старого пароля и текущего, чтобы изменить пароль. Новичок в php и как осуществить, не понимаю, буду очень благодарен за помощь!

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


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

Добрый день!
Обычно для ввода нового пароля его требуют повторить. Поэтому в форму небходимо довить поля для ввода старого пароля, для нового пароля и для повторного вввода нового пароля
Спойлер (Отобразить)
Затем перед сохранение нового пароля небходимо проверить правильность ввода старого и нового пароля
Спойлер (Отобразить)
3. kremenchug - 28 Июня, 2018 - 10:45:28 - перейти к сообщению
Спасибо большое, но при неверном старом пароле, все равно обновляется. может ли вы подсказать как это можно исправить?
4. Vladimir Kheifets - 28 Июня, 2018 - 13:56:01 - перейти к сообщению
kremenchug пишет:
Спасибо большое, но при неверном старом пароле, все равно обновляется. может ли вы подсказать как это можно исправить?

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

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

 

Powered by ExBB FM 1.0 RC1