Source for file ForgotPass.class.php
Documentation is available at ForgotPass.class.php
* R.E. Login 2.0 - Elfelejtett jelszó - class/ForgotPass.class.php
* Elfelejtett jelszó funkció.<br />
* <b>Dátum:</b> 2010.04.02.
* <b>Szerző weboldala:</b> {@link http://rimelek.hu/}<br />
* <b>Login weblapja:</b> {@link http://rimelek.hu/meghivos-loginrendszer-r-e-login-v2-0 R.E. Login v2.0}
* @author Takács Ákos (Rimelek), programmer [at] rimelek [dot] hu
* @copyright Copyright (C) 2010, Takács Ákos
* @license http://www.gnu.org/licenses/gpl.html
require_once System::getIncLoginDir().
'classes/UserList.class.php';
* Elfelejtett jelszó funkció
* Új jelszó választásához kiküldi e-mailben a linket. <br />
* <b>Szerző weboldala:</b> {@link http://rimelek.hu/}<br />
* <b>Login weblapja:</b> {@link http://rimelek.hu/meghivos-loginrendszer-r-e-login-v2-0 R.E. Login v2.0}
* @author Takács Ákos (Rimelek), programmer [at] rimelek [dot] hu
* @copyright Copyright (C) 2010, Takács Ákos
* @license http://www.gnu.org/licenses/gpl.html
private static $errors=
array();
* @see System::getTimeStamp()
private static $now =
'';
* Elfelejtett jelszó rekord példányok
private static $instances =
array();
private function __construct()
* Használt távlák és mezőinek listája
Config::DBPREF.
'forgotpass as fp' =>
array('*')
* Lekérdezi az adatbázisból aparamétereknek megfelelően
* az elfelejtett jelszó rekordját.
* @param int $id Elfelejtett jelszó azonosítója
* @param string $code Elfelejtett jelszó generált kódja.
if (!isset
(self::$instances[$id][$code]))
self::$instances[$id][$code] =
new IsMySQLClass(self::getTables());
self::$instances[$id][$code]->init(
Config::DBPREF.
"forgotpass as fp where userid = '$id' and
return self::$instances[$id][$code];
* Egy user id-jét, mail címét és jelszavát kérdezi le, ha a $name
* mező értéke megegyezik a $value -val.
* @param string $name Mező neve
* @param mixed $value Mező értéke
public static function user($name,$value)
Config::DBPREF.
'users as users' =>
array('userid','useremail','userpass'))
$user->init(Config::DBPREF.
"users as users where `$name` = '$value'",true);
* $email e-mail címre küldi ki az instrukciókat.
* @param string $email E-mail cím
* @return bool Sikeres volt-e a művelet
public static function request($email)
self::$now =
System::getTimeStamp();
!($fpe =
self::existsEmail($email)))
$code =
self::randomCode();
$user =
self::user('useremail',$email);
userid = '".
$user->userid.
"',
sendtime = '".
self::$now.
"'");
self::send($user->userid,$email,$code);
self::$errors[] =
"24 órán belül csak egyszer kérhetsz új jelszót!";
self::$errors[] =
"Nincs ilyen e-mail cím!";
return count(self::$errors) ==
0;
* 24 órán belül csak egyszer lehet jelszó emlékeztetőt kérni.
* Ez a metódus megszámolja hány kérelem történt 24 órán belül az $email
* @param string $email Elenőrízendő email cím
* @return int Hány darab email cím volt (Értelem szerűen max 1 lehetett)
"select count(fp.userid) from ".
Config::DBPREF.
"forgotpass as fp left join ".
Config::DBPREF.
"users as users
on fp.userid = users.userid
timestampdiff(DAY,fp.sendtime, '".
self::$now.
"') = 0 limit 1")));
* Elfelejtett jelszó link létrehozása
* @param int $id User id-je
* @param string $email User email címe
* @param string $file Fájlnév, ahova az aktivációs link mutat
* @return string Elfelejtett jelszó link
private static function createLink($id,$code,$file=
null)
$file =
basename(Config::FILE_FORGOTPASS);
if (isset
($url['query']))
* Link kiküldése a megadott e-mail címre.
* @param int $id Felhasználó id-je
* @param string $email Felhasználó e-mail címe
* @param string $code Random generált kód
private static function send($id, $email, $code)
$link =
self::createLink($id, $code);
"Az új jelszavad a következő linkre kattintva állíthatod be: <br />".
PHP_EOL.
"<a href='$link'>$link</a>";
* Megváltoztatja a felhasználó jelszavát
* Ha érvényes az id, és hash. valamint megegyezik a két megadott jelszó.
* @param int $id Felhasználó id-je
* @param string $code Elfelejtett jelszó hash
* @param string $pass Új jelszó
* @param string $repass Új jelszó újra
* @return bool Sikeres volt-e az új jelszó beállítása
public static function newPassword($id, $code, $pass,$repass)
$fp =
self::getInstance($id, $code);
self::$errors[] =
'Hibás jelszóváltoztatás kérelem! Talán már meg lett változtatva a jelszó.';
if (strlen($pass) <
($min =
Config::MINLENGTH_PASSWORD)) {
self::$errors[] =
"A jelszó minimum $min karakter lehet!";
} else if ($pass !=
$repass){
self::$errors[] =
"A két jelszó nem egyezik!";
if (count(self::$errors)) return false;
$user =
self::user('userid',$fp->userid);
mysql_query("delete from ".
Config::DBPREF.
"forgotpass where userid = '".
$fp->userid.
"'");
public static function errors()
Documentation generated on Sun, 04 Apr 2010 22:43:40 +0200 by phpDocumentor 1.4.1