Subversion Repositories personal-webbase

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. <?php
  2.  
  3. if (!defined('WBLEGAL')) die('Kann nicht ohne Personal WebBase ausgef&uuml;hrt werden.');
  4.  
  5. // TODO: Konfigurierbar machen?
  6. define('COOKIE_VALIDITY', time()+60*60*24*36525); // 100 Jahre gültig
  7.  
  8. if ($wb_user_type == 0)
  9. {
  10.         die($header.'Funktionalit&auml;t nur f&uuml;r registrierte Benutzer.'.$footer);
  11. }
  12.  
  13. if ($aktion == 'generate')
  14. {
  15.         $hex = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  16.                 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
  17.                 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
  18.                 '.', ',', '$', '#', '!', '?', '=', '~', '*', '/', '\\', '+', '-', '_', '&', '%', '$', '§', '"', "'", ';', ':');
  19.         // TODO: Noch besser: Einfach jedes Nicht-Binärzeichen wählen
  20.  
  21.         $new_secret_key = '';
  22.         for ($i=0; $i<255; $i++)
  23.         {
  24.                 $new_secret_key .= $hex[mt_rand(0, count($hex)-1)];
  25.         }
  26.  
  27.         db_query("UPDATE `".$WBConfig->getMySQLPrefix()."users` SET `fastlogin_serial` = `fastlogin_serial` + 1, `fastlogin_secret` = '".db_escape($new_secret_key)."' WHERE `id` = '".$benutzer['id']."'");
  28.  
  29.         $benutzer['fastlogin_secret'] = $new_secret_key;
  30.  
  31.         $aktion = 'reget';
  32. }
  33.  
  34. if ($aktion == 'reget')
  35. {
  36.         function wb_generate_fast_login_key() {
  37.                 global $wb_user_username, $wb_user_password, $benutzer;
  38.  
  39.                 // Angabe der ID verhindert das Durchlaufen der Datenbank zum Suchen des passenden Eintrags
  40.  
  41.                 define('WB_FL_DELIM', '@@');
  42.  
  43.                 $secret_key  = $wb_user_username."\n";
  44.                 $secret_key .= special_hash($wb_user_username)."\n";
  45.                 $secret_key .= $wb_user_password."\n";
  46.                 $secret_key .= special_hash($wb_user_password);
  47.                 $secret_key  = $benutzer['id'].WB_FL_DELIM.wb_encrypt($secret_key, $benutzer['fastlogin_secret']);
  48.  
  49.                 return $secret_key;
  50.         }
  51.  
  52.         $secret_key = wb_generate_fast_login_key();
  53.  
  54.         wbSetCookie('wb_fastlogin_key', $secret_key, COOKIE_VALIDITY);
  55.  
  56.         wb_redirect_now($_SERVER['PHP_SELF'].'?seite=main&modul='.$modul);
  57. }
  58.  
  59. if ($aktion == 'destroy')
  60. {
  61.         db_query("UPDATE `".$WBConfig->getMySQLPrefix()."users` SET `fastlogin_secret` = '' WHERE `id` = '".$benutzer['id']."'");
  62.  
  63.         $aktion = 'delcookie';
  64. }
  65.  
  66. if ($aktion == 'delcookie')
  67. {
  68.         wbUnsetCookie('wb_fastlogin_key');
  69.  
  70.         wb_redirect_now($_SERVER['PHP_SELF'].'?seite=main&modul='.$modul);
  71. }
  72.  
  73. ?>
  74.