Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][MySQL][PHP]Prośba o pomoc z mailem
Forum PHP.pl > Forum > Przedszkole
KyrieAnn
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 rolleyes.gif
A więc wspomniany skrypt:

  1. <?
  2. if ((isset($_GET['action'])) && ($_GET['action'] == 'change') && (isset($_GET['code'])) && (isset($_GET['login'])))
  3. {
  4. $login = chron($_GET['login']);
  5. $code = chron($_GET['code']);
  6. include('config.php');
  7. $valid = mysql_query('SELECT id FROM account WHERE ((login = "'.$login.'") AND (newpass_code = "'.$code.'"))');
  8. if (mysql_num_rows($valid) > 0)
  9. {
  10. $pass = rand(1000000,9999999);
  11. mysql_query('UPDATE account SET password = PASSWORD("'.$pass.'"), newpass_code = "", newpass_time = '.time().' WHERE ((login = "'.$login.'") AND (newpass_code = "'.$code.'"))');
  12. 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>';
  13. }
  14. else echo '<div style="width: 100%; text-align: center; color: red">Błędny kod.</div>';
  15. }
  16. else if ((isset($_POST['wyslij'])) && ($_POST['wyslij'] == 'Potwierdź'))
  17. {
  18. $login = chron($_POST['login']);
  19. include('config.php');
  20. $user = mysql_query('SELECT newpass_time, real_name, email FROM account WHERE (login = "'.$login.'")');
  21. if (mysql_num_rows($user) > 0)
  22. {
  23. $userl = mysql_fetch_array($user);
  24. if ((time() - (int)$userl['newpass_time']) >= 3600)
  25. {
  26. $real_name = $userl['real_name'];
  27. $code = md5(time().$real_name.'******');
  28. mysql_query('UPDATE account SET newpass_code = "'.$code.'", newpass_time = '.time().' WHERE (login = "'.$login.'")');
  29.  
  30. require_once('Mail.php');
  31. $from = '****** <******@tonitrum.pl>';
  32. $to = '<'.$userl['email'].'>';
  33. $subject = 'Nowe hasło na ******.pl';
  34. $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ć.';
  35.  
  36. $host = "******";
  37. $username = "******@tonitrum.pl";
  38. $password = "******";
  39. $headers = array (
  40. 'From' => $from,
  41. 'To' => $to,
  42. 'Subject' => $subject);
  43. $smtp = Mail::factory('smtp',
  44. 'host' => $host,
  45. 'auth' => true,
  46. 'username' => $username,
  47. 'password' => $password));
  48. $mail = $smtp->send($to, $headers, $body);
  49.  
  50. if (PEAR::isError($mail))
  51. {
  52. echo('<div style="width: 100%; text-align: center; color: red">Napotkano błąd podczas wysyłania maila. Błąd: ' . $mail->getMessage() . '</div>');
  53. }
  54. else
  55. {
  56. echo '<div style="width: 100%; text-align: center; color: green">Żądanie o zmianę hasła przyjęto. Sprawdź swoją skrzynkę pocztową.</div>';
  57. }
  58. }
  59. else echo '<div style="width: 100%; text-align: center; color: red">Żądanie o zmianę hasła można wysyłac co godzinę.</div>';
  60. }
  61. else echo '<div style="width: 100%; text-align: center; color: red">Podany login nie istnieje.</div>';
  62. }
  63.  
  64. ?>


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ź:

  1. Warning: mail() expects at least 3 parameters, 0 given in /var/www/2k12/Mail.php on line 7
  2.  
  3. 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ść:

  1. <font color=#7e7e7e face=sans-serif>
  2. <form method="POST">
  3. <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 />
  4. 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 />
  5. <input type="submit" name="wyslij" id="wyslij" value="Potwierdź" /></center>
  6. </form>
  7. </font>


Z góry dziękuję Ludziom dobrego serduszka, którzy będą mieli chęci, aby poprawić te hieroglify tongue.gif

Nie wiem, czy to coś pomoże, ale tak wygląda dana tabela, do której skrypt ma się odwołać:

  1. CREATE TABLE `NewTable` (
  2. `id` int(11) NOT NULL AUTO_INCREMENT ,
  3. `login` varchar(30) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '' ,
  4. `password` varchar(45) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '' ,
  5. `newpass_code` varchar(50) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL ,
  6. `newpass_time` int(25) NOT NULL ,
  7. `real_name` varchar(16) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '' ,
  8. `social_id` varchar(13) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '' ,
  9. `email` varchar(64) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '' ,
  10. `phone1` varchar(16) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT NULL ,
  11. `phone2` varchar(16) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT NULL ,
  12. `address` varchar(128) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT NULL ,
  13. `zipcode` varchar(7) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '' ,
  14. `create_time` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ,
  15. `question1` varchar(48) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT NULL ,
  16. `answer1` varchar(48) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT NULL ,
  17. `question2` varchar(48) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT NULL ,
  18. `answer2` varchar(48) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT NULL ,
  19. `is_testor` tinyint(1) NOT NULL DEFAULT 0 ,
  20. `status` varchar(8) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT 'OK' ,
  21. `securitycode` varchar(192) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT '' ,
  22. `newsletter` tinyint(1) NOT NULL DEFAULT 0 ,
  23. `empire` tinyint(4) NOT NULL DEFAULT 0 ,
  24. `name_checked` tinyint(1) NOT NULL DEFAULT 0 ,
  25. `availDt` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ,
  26. `mileage` int(11) NOT NULL DEFAULT 0 ,
  27. `cash` int(11) NOT NULL DEFAULT 0 ,
  28. `gold_expire` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ,
  29. `silver_expire` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ,
  30. `safebox_expire` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ,
  31. `autoloot_expire` datetime NOT NULL DEFAULT '2013-12-12 23:59:59' ,
  32. `fish_mind_expire` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ,
  33. `marriage_fast_expire` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ,
  34. `money_drop_rate_expire` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' ,
  35. `ttl_cash` int(11) NOT NULL DEFAULT 0 ,
  36. `ttl_mileage` int(11) NOT NULL DEFAULT 0 ,
  37. `channel_company` varchar(30) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL DEFAULT '' ,
  38. `coins` int(11) NOT NULL DEFAULT 0 ,
  39. `web_admin` int(1) NOT NULL DEFAULT 0 ,
  40. `web_ip` varchar(15) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL ,
  41. `web_aktiviert` varchar(32) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL ,
  42. `last_play` datetime NULL DEFAULT NULL ,
  43. `pos` varchar(20) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL ,
  44. `isadmin` varchar(20) CHARACTER SET ascii COLLATE ascii_general_ci NOT NULL ,
  45. `unban_time` int(25) NOT NULL ,
  46. `reason` varchar(150) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL ,
  47. PRIMARY KEY (`id`),
  48. UNIQUE INDEX `login` USING BTREE (`login`) ,
  49. INDEX `social_id` USING BTREE (`social_id`)
  50. )
  51. ENGINE=MyISAM
  52. DEFAULT CHARACTER SET=ascii COLLATE=ascii_general_ci
  53. AUTO_INCREMENT=6497
  54. CHECKSUM=0
  55. ROW_FORMAT=DYNAMIC
  56. DELAY_KEY_WRITE=0
  57. ;
  58.  
pedro84
Nie może znaleźć klasy: http://pear.php.net/package/Mail
KyrieAnn
I nagle zaczęło działać. Dzięki za podpowiedź. Pozdrawiam.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.