Hejo.
Już dwa razy korzystałam z pomocy tego forum i jestem bardzo zadowolona z Waszego wkładu, jednakże potrzebuję pomocy ponownie.
Co będę ściemniać, php nie znam a jak każdy w dobie kryzysu szukam oszczędności (IMG:
style_emoticons/default/rolleyes.gif)
A więc wspomniany skrypt:
<?
if ((isset($_GET['action'])) && ($_GET['action'] == 'change') && (isset($_GET['code'])) && (isset($_GET['login']))) {
$login = chron($_GET['login']);
$code = chron($_GET['code']);
include('config.php');
$valid = mysql_query('SELECT id FROM account WHERE ((login = "'.$login.'") AND (newpass_code = "'.$code.'"))'); {
$pass = rand(1000000
,9999999
); mysql_query('UPDATE account SET password = PASSWORD("'.$pass.'"), newpass_code = "", newpass_time = '.time().' WHERE ((login = "'.$login.'") AND (newpass_code = "'.$code.'"))'); echo '<div style="width: 100%; text-align: center; color: green">Twoje nowe hasło to: <span style="color: yellow">'.$pass.'</span>. Należy je zmienic po zalogowaniu.</div>'; }
else echo '<div style="width: 100%; text-align: center; color: red">Błędny kod.</div>'; }
else if ((isset($_POST['wyslij'])) && ($_POST['wyslij'] == 'Potwierdź')) {
$login = chron($_POST['login']);
include('config.php');
$user = mysql_query('SELECT newpass_time, real_name, email FROM account WHERE (login = "'.$login.'")'); {
if ((time() - (int
)$userl['newpass_time']) >= 3600
) {
$real_name = $userl['real_name'];
$code = md5(time().$real_name.'******'); mysql_query('UPDATE account SET newpass_code = "'.$code.'", newpass_time = '.time().' WHERE (login = "'.$login.'")');
require_once('Mail.php');
$from = '****** <******@tonitrum.pl>';
$to = '<'.$userl['email'].'>';
$subject = 'Nowe hasło na ******.pl';
$body = 'Witaj, '.$real_name.'.'.chr(13).chr(13).'Ze strony ******.pl zostało wysłane żądanie o zmianę hasła. Jeśli naprawdę chcesz dokonać zmiany hasła kliknij w poniższy link:.'.chr(13).chr(13).'http://******.pl/recover.php?action=change&login='.$login.'&code='.$code.chr(13).chr(13).chr(13).chr(13).'Pozdrowienia,'.chr(13).'Zespół ******'.chr(13).chr(13).chr(13).'Ta wiadomość została wygenerowana automatycznie. Prosimy na nią nie odpowiadać.';
$host = "******";
$username = "******@tonitrum.pl";
$password = "******";
'From' => $from,
'To' => $to,
'Subject' => $subject);
$smtp = Mail::factory('smtp', 'host' => $host,
'auth' => true,
'username' => $username,
'password' => $password));
$mail = $smtp->send($to, $headers, $body);
if (PEAR::isError($mail))
{
echo('<div style="width: 100%; text-align: center; color: red">Napotkano błąd podczas wysyłania maila. Błąd: ' . $mail->getMessage() . '</div>'); }
else
{
echo '<div style="width: 100%; text-align: center; color: green">Żądanie o zmianę hasła przyjęto. Sprawdź swoją skrzynkę pocztową.</div>'; }
}
else echo '<div style="width: 100%; text-align: center; color: red">Żądanie o zmianę hasła można wysyłac co godzinę.</div>'; }
else echo '<div style="width: 100%; text-align: center; color: red">Podany login nie istnieje.</div>'; }
?>
A więc osoba A zapomniała hasełka (bywa) i wchodzi na stronę example.com/recover.php i wpisuje swój login.
Powinna otrzymać e-mail z nowym (?) jednak otrzymuje odpowiedź:
Warning: mail() expects at least 3 parameters, 0 given in /var/www/2k12/Mail.php on line 7
Fatal error: Class 'Mail' not found in /var/www/2k12/lostpw.php on line 54
Oczywiste dla mnie jest to, że jest problem z Mail.php bo go nie mam. Nie wiem, czy jest sposób, który ominąłby ten pliczek.
Ciąg dalszy strony wygląda tak, żeby dało jasność:
<font color=#7e7e7e face=sans-serif> <center>Podaj swój login, a następnie potwierdź przyciskiem. Na podany podczas rejestracji adres e-mail zostanie wysłane nowe hasło. Będziesz mógł je zmienić po zalogowaniu.
<br /><br /> Login:
<input type="text" value="Nazwa użytkownika..." name="login" id="login" onfocus='if (this.value == "Nazwa użytkownika...") this.value = "";' onblur='if (!this.value){ this.value = "Nazwa użytkownika..."; }' /><br /><br /> <input type="submit" name="wyslij" id="wyslij" value="Potwierdź" /></center>
Z góry dziękuję Ludziom dobrego serduszka, którzy będą mieli chęci, aby poprawić te hieroglify (IMG:
style_emoticons/default/tongue.gif)
Nie wiem, czy to coś pomoże, ale tak wygląda dana tabela, do której skrypt ma się odwołać:
CREATE TABLE `NewTable` (
`id` int(11) NOT NULL AUTO_INCREMENT ,
`login` varchar(30) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '' ,
`password` varchar(45) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '' ,
`newpass_code` varchar(50) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL ,
`newpass_time` int(25) NOT NULL ,
`real_name` varchar(16) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '' ,
`social_id` varchar(13) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '' ,
`email` varchar(64) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '' ,
`phone1` varchar(16) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT NULL ,
`phone2` varchar(16) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT NULL ,
`address` varchar(128) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT NULL ,
`zipcode` varchar(7) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '' ,
`create_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`question1` varchar(48) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT NULL ,
`answer1` varchar(48) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT NULL ,
`question2` varchar(48) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT NULL ,
`answer2` varchar(48) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT NULL ,
`is_testor` tinyint(1) NOT NULL DEFAULT 0 ,
`status` varchar(8) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT 'OK' ,
`securitycode` varchar(192) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT '' ,
`newsletter` tinyint(1) NOT NULL DEFAULT 0 ,
`empire` tinyint(4) NOT NULL DEFAULT 0 ,
`name_checked` tinyint(1) NOT NULL DEFAULT 0 ,
`availDt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`mileage` int(11) NOT NULL DEFAULT 0 ,
`cash` int(11) NOT NULL DEFAULT 0 ,
`gold_expire` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`silver_expire` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`safebox_expire` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`autoloot_expire` datetime NOT NULL DEFAULT '2013-12-12 23:59:59' ,
`fish_mind_expire` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`marriage_fast_expire` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`money_drop_rate_expire` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ,
`ttl_cash` int(11) NOT NULL DEFAULT 0 ,
`ttl_mileage` int(11) NOT NULL DEFAULT 0 ,
`channel_company` varchar(30) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '' ,
`coins` int(11) NOT NULL DEFAULT 0 ,
`web_admin` int(1) NOT NULL DEFAULT 0 ,
`web_ip` varchar(15) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL ,
`web_aktiviert` varchar(32) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL ,
`last_play` datetime NULL DEFAULT NULL ,
`pos` varchar(20) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL ,
`isadmin` varchar(20) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL ,
`unban_time` int(25) NOT NULL ,
`reason` varchar(150) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL ,
PRIMARY KEY (`id`),
UNIQUE INDEX `login` USING BTREE (`login`) ,
INDEX `social_id` USING BTREE (`social_id`)
)
ENGINE=MyISAM
DEFAULT CHARACTER SET=ascii COLLATE=ascii_general_ci
AUTO_INCREMENT=6497
CHECKSUM=0
ROW_FORMAT=DYNAMIC
DELAY_KEY_WRITE=0
;