1
|
<?php
|
2
|
/**
|
3
|
*
|
4
|
* @category frontend
|
5
|
* @package account
|
6
|
* @author WebsiteBaker Project
|
7
|
* @copyright 2009-2012, Website Baker Org. e.V.
|
8
|
* @link http://www.websitebaker2.org/
|
9
|
* @license http://www.gnu.org/licenses/gpl.html
|
10
|
* @platform WebsiteBaker 2.8.x
|
11
|
* @requirements PHP 5.2.2 and higher
|
12
|
* @version $Id: password.php 2 2017-07-02 15:14:29Z Manuela $
|
13
|
* @filesource $HeadURL: svn://isteam.dynxs.de/wb/2.10.x/branches/main/account/password.php $
|
14
|
* @lastmodified $Date: 2017-07-02 17:14:29 +0200 (Sun, 02 Jul 2017) $
|
15
|
*
|
16
|
*/
|
17
|
|
18
|
// Must include code to stop this file being access directly
|
19
|
if(defined('WB_PATH') == false) { die("Cannot access this file directly"); }
|
20
|
|
21
|
// Get entered values
|
22
|
$iMinPassLength = 6;
|
23
|
$sCurrentPassword = $wb->get_post('current_password');
|
24
|
$sCurrentPassword = (is_null($sCurrentPassword) ? '' : $sCurrentPassword);
|
25
|
$sNewPassword = $wb->get_post('new_password');
|
26
|
$sNewPassword = is_null($sNewPassword) ? '' : $sNewPassword;
|
27
|
$sNewPasswordRetyped = $wb->get_post('new_password2');
|
28
|
$sNewPasswordRetyped= is_null($sNewPasswordRetyped) ? '' : $sNewPasswordRetyped;
|
29
|
// Check existing password
|
30
|
$sql = 'SELECT `password` ';
|
31
|
$sql .= 'FROM `'.TABLE_PREFIX.'users` ';
|
32
|
$sql .= 'WHERE `user_id` = '.$wb->get_user_id();
|
33
|
// Validate values
|
34
|
if (md5($sCurrentPassword) != $database->get_one($sql)) {
|
35
|
$error[] = $MESSAGE['PREFERENCES_CURRENT_PASSWORD_INCORRECT'];
|
36
|
}else {
|
37
|
if(strlen($sNewPassword) < $iMinPassLength) {
|
38
|
$error[] = $MESSAGE['USERS_PASSWORD_TOO_SHORT'];
|
39
|
}else {
|
40
|
if($sNewPassword != $sNewPasswordRetyped) {
|
41
|
$error[] = $MESSAGE['USERS_PASSWORD_MISMATCH'];
|
42
|
}else {
|
43
|
$pattern = '/[^'.$wb->password_chars.']/';
|
44
|
if (preg_match($pattern, $sNewPassword)) {
|
45
|
$error[] = $MESSAGE['PREFERENCES_INVALID_CHARS'];
|
46
|
}else {
|
47
|
// generate new password hash
|
48
|
$sPwHashNew = md5($sNewPassword);
|
49
|
// Update the database
|
50
|
$sql = 'UPDATE `'.TABLE_PREFIX.'users` '
|
51
|
. 'SET `password`=\''.$database->escapeString($sPwHashNew).'\' '
|
52
|
. 'WHERE `user_id`='.$wb->get_user_id();
|
53
|
if ($database->query($sql)) {
|
54
|
$success[] = $MESSAGE['PREFERENCES_PASSWORD_CHANGED'];
|
55
|
}else {
|
56
|
$error[] = $database->get_error();
|
57
|
}
|
58
|
}
|
59
|
}
|
60
|
}
|
61
|
}
|