Project

General

Profile

1
<?php
2

    
3
// $Id: index.php 293 2006-01-30 23:00:28Z stefan $
4

    
5
/*
6

    
7
 Website Baker Project <http://www.websitebaker.org/>
8
 Copyright (C) 2004-2005, Ryan Djurovich
9

    
10
 Website Baker is free software; you can redistribute it and/or modify
11
 it under the terms of the GNU General Public License as published by
12
 the Free Software Foundation; either version 2 of the License, or
13
 (at your option) any later version.
14

    
15
 Website Baker is distributed in the hope that it will be useful,
16
 but WITHOUT ANY WARRANTY; without even the implied warranty of
17
 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18
 GNU General Public License for more details.
19

    
20
 You should have received a copy of the GNU General Public License
21
 along with Website Baker; if not, write to the Free Software
22
 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
23

    
24
*/
25

    
26
// Include the configuration file
27
require('../../../config.php');
28
// Include the language file
29
require(WB_PATH.'/languages/'.DEFAULT_LANGUAGE.'.php');
30
// Include the database class file and initiate an object
31
require(WB_PATH.'/framework/class.admin.php');
32
$admin = new admin('Start', 'start', false, false);
33
$database = new database();
34

    
35
// Get the website title
36
$results = $database->query("SELECT value FROM ".TABLE_PREFIX."settings WHERE name = 'title'");
37
$results = $results->fetchRow();
38
$website_title = $results['value'];
39

    
40
// Check if the user has already submitted the form, otherwise show it
41
if(isset($_POST['email']) AND $_POST['email'] != "") {
42
	
43
	$email = $_POST['email'];
44
	
45
	// Check if the email exists in the database
46
	$query = "SELECT user_id,username,display_name,email,last_reset,password FROM ".TABLE_PREFIX."users WHERE email = '".$admin->add_slashes($_POST['email'])."'";
47
	$results = $database->query($query);
48
	if($results->numRows() > 0) {
49

    
50
		// Get the id, username, email, and last_reset from the above db query
51
		$results_array = $results->fetchRow();
52
		
53
		// Check if the password has been reset in the last 2 hours
54
		$last_reset = $results_array['last_reset'];
55
		$time_diff = mktime()-$last_reset; // Time since last reset in seconds
56
		$time_diff = $time_diff/60/60; // Time since last reset in hours
57
		if($time_diff < 2) {
58
			
59
			// Tell the user that their password cannot be reset more than once per hour
60
			$message = $MESSAGE['FORGOT_PASS']['ALREADY_RESET'];
61
			
62
		} else {
63
			
64
			$old_pass = $results_array['password'];
65
			
66
			// Generate a random password then update the database with it
67
			$new_pass = '';
68
			$salt = "abchefghjkmnpqrstuvwxyz0123456789";
69
			srand((double)microtime()*1000000);
70
			$i = 0;
71
			while ($i <= 7) {
72
				$num = rand() % 33;
73
				$tmp = substr($salt, $num, 1);
74
				$new_pass = $new_pass . $tmp;
75
				$i++;
76
			}
77
			
78
			$database->query("UPDATE ".TABLE_PREFIX."users SET password = '".md5($new_pass)."', last_reset = '".mktime()."' WHERE user_id = '".$results_array['user_id']."'");
79
			
80
			if($database->is_error()) {
81
				// Error updating database
82
				$message = $database->get_error();
83
			} else {
84
				// Setup email to send
85
				$mail_subject = 'Your login details...';
86
				$mail_to = $email;
87
				$mail_message = ''.
88
	'Hello '.$results_array["display_name"].', 
89
	
90
	Your '.$website_title.' administration login details are:
91
	Username: '.$results_array["username"].'
92
	Password: '.$new_pass.'
93
	
94
	Your password has been reset to the one above.
95
	This means that your old password will no longer work.
96
	
97
	If you have received this message in error, please delete it immediatly.';
98
				// Try sending the email
99
				if(mail($mail_to, $mail_subject, $mail_message, 'From: '.SERVER_EMAIL)) {
100
					$message = $MESSAGE['FORGOT_PASS']['PASSWORD_RESET'];
101
					$display_form = false;
102
				} else {
103
					$database->query("UPDATE ".TABLE_PREFIX."users SET password = '".$old_pass."' WHERE user_id = '".$results_array['user_id']."'");
104
					$message = $MESSAGE['FORGOT_PASS']['CANNOT_EMAIL'];
105
				}
106
			}
107
		
108
		}
109
		
110
	} else {
111
		// Email doesn't exist, so tell the user
112
		$message = $MESSAGE['FORGOT_PASS']['EMAIL_NOT_FOUND'];
113
	}
114
	
115
} else {
116
	$email = '';
117
}
118

    
119
if(!isset($message)) {
120
	$message = $MESSAGE['FORGOT_PASS']['NO_DATA'];
121
	$message_color = '000000';
122
} else {
123
	$message_color = 'FF0000';
124
}
125
	
126
// Setup the template
127
$template = new Template(ADMIN_PATH.'/login/forgot');
128
$template->set_file('page', 'template.html');
129
$template->set_block('page', 'main_block', 'main');
130
if(defined('FRONTEND')) {
131
	$template->set_var('ACTION_URL', 'forgot.php');
132
} else {
133
	$template->set_var('ACTION_URL', 'index.php');
134
}
135
$template->set_var('EMAIL', $email);
136

    
137
if(isset($display_form)) {
138
	$template->set_var('DISPLAY_FORM', 'none');
139
}
140

    
141
$template->set_var(array(
142
								'SECTION_FORGOT' => $MENU['FORGOT'],
143
								'MESSAGE_COLOR' => $message_color,
144
								'MESSAGE' => $message,
145
								'WB_URL' => WB_URL,
146
								'ADMIN_URL' => ADMIN_URL,
147
								'TEXT_EMAIL' => $TEXT['EMAIL'],
148
								'TEXT_SEND_DETAILS' => $TEXT['SEND_DETAILS'],
149
								'TEXT_HOME' => $TEXT['HOME'],
150
								'TEXT_NEED_TO_LOGIN' => $TEXT['NEED_TO_LOGIN']
151
								)
152
						);
153

    
154
if(defined('FRONTEND')) {
155
	$template->set_var('LOGIN_URL', WB_URL.'/account/login.php');
156
} else {
157
	$template->set_var('LOGIN_URL', ADMIN_URL);
158
}
159
$template->set_var('INTERFACE_URL', ADMIN_URL.'/interface');	
160

    
161
$template->parse('main', 'main_block', false);
162
$template->pparse('output', 'page');
163

    
164
?>
(1-1/2)