/var/www/onesupportsys.onesolution.hk/user/passwordmodify.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
<?php
require_once(__DIR__ '/../checkuser.php');
if (
isPost()) {
    
extract($_POST);
    if (isset(
$id$loginpw$loginpw2)) {
        
// Validation
        
$errors = array();
        if (
$loginpw != $loginpw2) {
            
$errors['loginpw'] = 'Password and Re-enter password are not match.';
        }
        if (
$id != $_SESSION['webadmin']['id']) {
            
$errors['id'] = 'Not allow to modify other user password.';
        }
        if (!empty(
$errors)) {
            
$message print_r($errorstrue);
        } else {
            
$sql "SELECT column_name FROM information_schema.columns WHERE table_schema = (SELECT DATABASE()) AND table_name = ?";
            
$parameters = array('sys_login');
            if (!(
$sth $dbh->prepare($sql))) {
                throw new 
Exception("sql prepare statement failure: $sql");
            }
            
$sth->setFetchMode(PDO::FETCH_ASSOC);
            if (!
$sth->execute($parameters)) {
                throw new 
Exception("sql execute statement failure: $sql");
            }
            
$columns $sth->fetchAll();

            
$post $_POST;
            foreach (
$columns as $column) {
                
$column $column['column_name'];
                if (isset(
$post[$column])) {
                    
$staff[$column] = $post[$column];
                }
            }
            
            
// Append record time
            
$now date("Y-m-d H:i:s");
            
$staff array_merge($staff, array(
                
'lastupdate' => $now,
                
'lastupby' => $_SESSION['webadmin']['id'],
            ));
            
            
// Update staff
            
$values = array();
            
$parameters = array();
            foreach (
$staff as $column => $value) {
                if (
$column != 'id') {
                    switch (
$column) {
                        case 
'loginpw':
                            
$parameters[] = md5($value);
                            break;
                        default:
                            
$parameters[] = !strlen($value) ? null $value;
                            break;
                    }
                    
$values[] = "`$column` = ?";
                }
            }
            
$sql "UPDATE sys_login SET " implode(', '$values) . " WHERE id = ?";
            
$parameters[] = $staff['id'];
            if (!(
$sth $dbh->prepare($sql))) {
                throw new 
Exception("sql prepare statement failure: $sql");
            }
            
$sth->setFetchMode(PDO::FETCH_ASSOC);
            if (!
$sth->execute($parameters)) {
                throw new 
Exception("sql execute statement failure: $sql");
            }
            
            
$data = array(
                
'message' => 'Password changed, please sign in again.',
                
'message_heading' => 'Notice',
                
'message_css_class' => 'alert-success',
            );
            
redirectAndExit(Util::link(__DIR__ '/../logout.php') . '?' http_build_query($data));
        }
    }
}