Ignore:
Timestamp:
Mar 11, 2010, 8:40:32 AM (15 years ago)
Author:
george
Message:
  • Upraveno: Informace o přihlášeném uživateli nově pročištěny a sjednoceny do třídy User. SQL pro kontrolu a generovány hesel dostupné přímo přes metodu CryptPasswordSQL. Přístup k Id přihlášeného uživatele přes globální proměnnou $User a vlastnost Id ($User->Id). Podobně přístup k dalším vlastnostem uživatele.
  • Opraveno: Některé chyby z předchozích předělávek.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/includes/global.php

    r365 r376  
    1414foreach($_GET as $Index => $Item) $_GET[$Index] = addslashes($_GET[$Index]);
    1515
    16 include_once('config.php');
    17 include_once('error.php');
    18 include_once('databaseconection.php');
    19 include_once('global_function.php');
    20 include_once('rss.php');
    21 include_once('system.php');
     16include_once(dirname(__FILE__).'/config.php');
     17include_once(dirname(__FILE__).'/error.php');
     18include_once(dirname(__FILE__).'/databaseconection.php');
     19include_once(dirname(__FILE__).'/global_function.php');
     20include_once(dirname(__FILE__).'/rss.php');
     21include_once(dirname(__FILE__).'/system.php');
     22include_once(dirname(__FILE__).'/user.php');
    2223
    2324$Database = new Database($Config['Database']['Host'], $Config['Database']['User'], $Config['Database']['Password']);
     
    3031$System = new System();
    3132$System->Init();
     33$User = new User();
     34$User->Restore();
    3235
    3336function GetMicrotime()
     
    3942function ShowShoutbox()
    4043{
    41   global $Database, $Config;
     44  global $Database, $Config, $User;
    4245 
    4346  echo('<strong><a href="'.$Config['Web']['BaseURL'].'action.php?action=ShoutBoxView">Kecátko:</a></strong>');
    44   if(Licence(LICENCE_USER)) echo(' <a href="'.$Config['Web']['BaseURL'].'action.php?action=shoutbox">Vložit</a>');
     47  if($User->Licence(LICENCE_USER))
     48    echo(' <a href="'.$Config['Web']['BaseURL'].'action.php?action=shoutbox">Vložit</a>');
    4549  echo('<div class="box"><table>');
    4650  $ID = $Database->SQLCommand('SELECT * FROM `ShoutBox` ORDER BY `ID` DESC LIMIT 20');
     
    5256function ShowTopBar()
    5357{
    54   global $Config, $Database;
     58  global $Config, $Database, $User;
    5559 
    5660  echo('<div class="Menu">');
    57     echo('<span class="MenuItem"></span>');
    58   if(Licence(LICENCE_USER))
    59   {
    60     $DbResult = $Database->SQLCommand('SELECT `Team`, `Name` FROM `User` WHERE ID='.$_SESSION['UserID']);
    61     $User = mysql_fetch_assoc($DbResult);
    62     $DbResult = $Database->SQLCommand('SELECT `Id`, `Name` FROM `Team` WHERE Id='.$User['Team']);
     61  echo('<span class="MenuItem"></span>');
     62  if($User->Licence(LICENCE_USER))
     63  {
     64    $DbResult = $Database->SQLCommand('SELECT `Id`, `Name` FROM `Team` WHERE `Id`='.$User->Team);
    6365    $Team = mysql_fetch_assoc($DbResult);
    6466
    6567    //echo('<span class="MenuItem">Moje překlady: <a href="">Dokončené</a> <a href="">Rozpracované</a> <a href="">Exporty</a> Tým: <a href="">'.$Team['name'].'</a></span>');
    66     echo('<span class="MenuItem2">'.$User['Name'].' <a href="'.$Config['Web']['BaseURL'].'?Logout">Odhlášení</a> <a href="'.$Config['Web']['BaseURL'].'Options.php">Nastavení</a></span>');
     68    echo('<span class="MenuItem2">'.$User->Name.' <a href="'.$Config['Web']['BaseURL'].'?action=logout">Odhlášení</a> <a href="'.$Config['Web']['BaseURL'].'Options.php">Nastavení</a></span>');
    6769  } else
    6870  {
    69     echo('<span class="MenuItem2"><form action="?" method="post"> Jméno: <input type="text" name="LoginUser" size="8 " /> Heslo: <td><input type="password" name="LoginPass" size="8" /> <input type="submit" value="Přihlásit" /></form> &nbsp; <a href="'.$Config['Web']['BaseURL'].'registrace.php">Registrace</a></span>');
     71    echo('<span class="MenuItem2"><form action="?action=login" method="post"> Jméno: <input type="text" name="LoginUser" size="8 " /> Heslo: <td><input type="password" name="LoginPass" size="8" /> <input type="submit" value="Přihlásit" /></form> &nbsp; <a href="'.$Config['Web']['BaseURL'].'registrace.php">Registrace</a></span>');
    7072  }
    7173  echo('</div>');
     
    7476function ShowLoginBox()
    7577{
    76   if(Licence(LICENCE_USER))
    77   {
    78      // echo 'Jste přihlášen jako: <b>'.$_SESSION['User'].'</b> <a href="index.php?Logout">Odhlásit</a>';
     78  global $User;
     79 
     80  if($User->Licence(LICENCE_USER))
     81  {
     82     // echo 'Jste přihlášen jako: <b>'.$User->Id.'</b> <a href="index.php?Logout">Odhlásit</a>';
    7983  } else
    8084  {
     
    116120function ShowMainMenu()
    117121{
    118   global $TranslationTree, $Config;
     122  global $TranslationTree, $Config, $User;
    119123 
    120124  $Menu = array
     
    140144 
    141145  echo('<strong>Hlavní menu:</strong>'.
    142     '<div class="verticalmenu"><ul>');
    143 
     146    '<div class="verticalmenu"><ul>');
    144147  foreach($Menu as $MenuTarget => $MenuItem)
    145148  {
    146   if(isset($MenuItem[3])) $OnClick = ' onclick="'.$MenuItem[3].'"'; else $OnClick = '';
    147   if(Licence($MenuItem[0])) echo('<li><a class="verticalmenua" title="'.$MenuItem[1].'" href="'.$MenuTarget.'"'.$OnClick.'>'.$MenuItem[2].'</a></li>');
     149    if(isset($MenuItem[3])) $OnClick = ' onclick="'.$MenuItem[3].'"';
     150      else $OnClick = '';
     151    if($User->Licence($MenuItem[0])) echo('<li><a class="verticalmenua" title="'.$MenuItem[1].'" href="'.$MenuTarget.'"'.$OnClick.'>'.$MenuItem[2].'</a></li>');
    148152  }   
    149153  echo('</ul></div>');
     
    152156function ShowTranslatedMenu()
    153157{
    154   global $TranslationTree, $Config, $Database;
     158  global $TranslationTree, $Config, $Database, $User;
    155159
    156160  echo('<strong>Překladové skupiny:</strong><br /><div id="TranslationMenu">');
    157   if(Licence(LICENCE_USER))
    158   {
    159     echo ('<a title="Všechny překlady, které jste přeložil" href="'.$Config['Web']['BaseURL'].'TranslationList.php?user='.$_SESSION['UserID'].'&amp;action=userall">Všechny moje texty</a><br />');
    160     echo ('<a title="Všechny překlady, které jste rozepsal a nedokončil" href="'.$Config['Web']['BaseURL'].'TranslationList.php?user='.$_SESSION['UserID'].'&amp;not&amp;action=userall">Rozpracované texty</a>');
     161  if($User->Licence(LICENCE_USER))
     162  {
     163    echo('<a title="Všechny překlady, které jste přeložil" href="'.$Config['Web']['BaseURL'].'TranslationList.php?user='.$User->Id.'&amp;action=userall">Všechny moje texty</a><br />');
     164    echo('<a title="Všechny překlady, které jste rozepsal a nedokončil" href="'.$Config['Web']['BaseURL'].'TranslationList.php?user='.$User->Id.'&amp;not&amp;action=userall">Rozpracované texty</a>');
    161165    //TODO: počet nedokončených 
    162     echo ('<br /><br />');
     166    echo('<br /><br />');
    163167  }
    164168  foreach($TranslationTree as $Group)
     
    169173    echo('&nbsp;<a title="Zde můžete začít překládat" href="'.$Config['Web']['BaseURL'].'TranslationList.php?group='.$Group['Id'].'&amp;action=notran">Nepřeložené</a><br />
    170174      &nbsp;<a title="Přeložené texty, můžete zde hlasovat, nebo opravovat překlady" href="'.$Config['Web']['BaseURL'].'TranslationList.php?group='.$Group['Id'].'&amp;action=Translate">Přeložené</a><br />');
    171   $ID = $Database->SQLCommand('SELECT * FROM connexion WHERE `Group` = '.$Group['Id']);
     175    $ID = $Database->SQLCommand('SELECT * FROM connexion WHERE `Group` = '.$Group['Id']);
    172176    if (mysql_num_rows($ID) > 0) 
    173177    echo('&nbsp;<a title="Vypsání souvislostí" href="'.$Config['Web']['BaseURL'].'TranslationList.php?group='.$Group['Id'].'&amp;action=connexion_list">Souvislosti</a><br />');
    174178 
    175   if(Licence(LICENCE_USER))
     179    if($User->Licence(LICENCE_USER))
    176180    {
    177181      echo('&nbsp;<a title="Nedokončené překlady" href="'.$Config['Web']['BaseURL'].'TranslationList.php?group='.$Group['Id'].'&amp;action=mydevelop">Rozepsané</a><br />
     
    186190function ShowOnlineUserList()
    187191{
    188   global $Database, $Moderators;
     192  global $Database, $Moderators, $User;
    189193 
    190194  echo('Online překladatelé:<br />');
    191195  $ID = $Database->SQLCommand('SELECT `Name`, `GM`, `ID` FROM `User` WHERE `LastLogin` >= NOW() - 300 AND ((`LastLogout` < `LastLogin`) OR (ISNULL(`LastLogout`)))');
    192   while($User = mysql_fetch_assoc($ID))
    193   {
    194     if(Licence(LICENCE_MODERATOR)) $Name = '<a href="user.php?user='.$User['ID'].'">'.$User['Name'].'</a>';
    195     else $Name = $User['Name'];
     196  while($DbUser = mysql_fetch_assoc($ID))
     197  {
     198    if($User->Licence(LICENCE_MODERATOR)) $Name = '<a href="user.php?user='.$DbUser['ID'].'">'.$DbUser['Name'].'</a>';
     199    else $Name = $DbUser['Name'];
    196200    $TextGM = '';
    197201    echo('<strong>'.$Name.'</strong>'.$TextGM.'<br />');
     
    199203}
    200204
    201 function CheckLogin()
    202 {
    203   global $Database;
    204  
    205   if(!array_key_exists('UserID', $_SESSION)) $_SESSION['UserID'] = '';
    206   if(!array_key_exists('User', $_SESSION)) $_SESSION['User'] = 'NotRegistred';
    207   if(!array_key_exists('Pass', $_SESSION)) $_SESSION['Pass'] = '';
    208 
    209   // Přihlášení
    210   if(array_key_exists('LoginUser', $_POST))
    211   {
    212     $_SESSION['User'] = $_POST['LoginUser'];
    213     $_SESSION['Pass'] = $_POST['LoginPass'];
    214 
    215     $DbResult = $Database->SQLCommand('SELECT * FROM `User` WHERE LOWER(`Name`) = LOWER("'.$_SESSION['User'].'") AND `Pass` = sha1(CONCAT(sha1("'.$_SESSION['Pass'].'"), `Salt`))');
    216     if(mysql_num_rows($DbResult) == 0)
    217     {
    218        echo('<script> alert("Jméno nebo heslo bylo zadáno špatně!"); </script>');
    219        $_SESSION['UserID'] = '';
    220        $_SESSION['User'] = '';
    221        $_SESSION['Pass'] = '';
    222     } else
    223     {
    224       $User = mysql_fetch_assoc($DbResult);
    225       $_SESSION['UserID'] = $User['ID'];
    226       $_SESSION['User'] = $User['Name'];
    227       WriteLog('Login: '.$_SESSION['User'], LOG_TYPE_USER);
    228     }
    229   }
    230 
    231   // Odhlášení
    232   if(array_key_exists('Logout', $_GET) and ($_SESSION['User'] != '')) 
    233   {
    234     WriteLog('Odhlášení', LOG_TYPE_USER);
    235     if(is_numeric($_SESSION['UserID']))
    236       $Database->SQLCommand('UPDATE `User` SET `LastLogout` = NOW() WHERE `ID` = '.$_SESSION['UserID']);
    237     $_SESSION['User'] = '';
    238     $_SESSION['Pass'] = '';
    239     $_SESSION['UserID'] = '';
    240   }
    241 
    242   // Záznam o aktivitě
    243   if(Licence(LICENCE_USER) and array_key_exists('REMOTE_ADDR', $_SERVER))
    244     $Database->SQLCommand('UPDATE `User` SET `LastIP` = "'.$_SERVER['REMOTE_ADDR'].'", `LastLogin` = NOW() WHERE `ID` = '.$_SESSION['UserID']);
    245 }
    246 
    247205function ShowPage()
    248206{
    249   global $Config, $Database, $RSSChannels, $PageFooterRequested; 
     207  global $User, $Config, $Database, $RSSChannels, $PageFooterRequested; 
    250208 
    251209  echo('<?xml version="1.0" encoding="'.$Config['Web']['Charset'].'"?>
     
    263221  foreach($RSSChannels as $Channel)
    264222    echo(' <link rel="alternate" title="'.$Channel['Title'].'" href="'.$Channel['URL'].'" type="application/rss+xml" />');
    265   echo('<title>Projekt překládání textů WoW</title>
     223  echo('<title>'.$Config['Web']['Title'].'</title>
    266224</head>
    267225<body>
    268226<table id="bannertable"><tr>
    269227  <td id="banner1"></td>
    270   <td id="banner"><div id="bannertitle">Projekt překládání textů WoW</div></td>
     228  <td id="banner"><div id="bannertitle">'.$Config['Web']['Title'].'</div></td>
    271229  <td id="banner2"></td></tr>
    272230</table>');
    273231
    274   CheckLogin();
     232  if(array_key_exists('action', $_GET))
     233  {
     234    if($_GET['action'] == 'login')
     235    {
     236      $User->Login($_POST['LoginUser'], $_POST['LoginPass']);
     237      if($User->Role == LICENCE_ANONYMOUS) echo('<script> alert("Jméno nebo heslo bylo zadáno špatně!"); </script>'); 
     238    } else
     239    if($_GET['action'] == 'logout')
     240    {
     241      if($User->Role != LICENCE_ANONYMOUS)
     242      {
     243        $User->Logout();
     244        WriteLog('Odhlášení', LOG_TYPE_USER);
     245      }
     246    }
     247  }
    275248  ShowTopBar();
    276249
    277250  echo('<table class="page"><tr><td class="menu">');
    278251  ShowMainMenu();
    279      
    280   // echo('<br />');   
    281   //ShowLoginBox();
    282   //echo('<br />');
    283252  ShowOnlineUserList();
    284253  echo('<br />');
     
    305274function ShowFooter()
    306275{
    307   global $Database, $Config, $ScriptStartTime, $PageFooterRequested;
     276  global $Database, $Config, $ScriptStartTime, $PageFooterRequested, $User;
    308277
    309278  if(isset($PageFooterRequested))
     
    333302      '</html>');
    334303    $Database->Disconnect();
     304    $User->Store();
    335305  }
    336306}
Note: See TracChangeset for help on using the changeset viewer.