source: trunk/registrace.php@ 504

Last change on this file since 504 was 504, checked in by chronos, 12 years ago
  • Upraveno: Stránky jsou nyní generovány do výstupního řetězce, který je na konci skriptu funkci ShowPage jako parametr a ta zajistí zobrazení hlavičky i patičky. Nově tedy není výstup zobrazován přes echo na mnoha místech ale jen přes jedno místo. To umožnilo kontrolu či formátování výstupního HTML kódu před zasláním uživateli na výstup. Dále toto umožňuje vyhodnocení zobrazení hlavičky až po dokončení generování obsahu stránky. To se hodí např. při přihlašování a odhlašování, kdy změna přihlášeného uživatele se v hlavičce projeví ihned už při generování výsledné stránky.
  • Property svn:executable set to *
File size: 4.5 KB
Line 
1<?php
2
3include('includes/global.php');
4
5function ShowForm()
6{
7 global $System;
8
9 if(array_key_exists('sc', $_POST)) $Human = true;
10 else $Human = false;
11 if(array_key_exists('user', $_POST)) $UserName = $_POST['user'];
12 else $UserName = '';
13 if(array_key_exists('Email', $_POST)) $Email = $_POST['Email'];
14 else $Email = '';
15 if(array_key_exists('Team', $_POST)) $Team = $_POST['Team'];
16 else $Team = '';
17 if(array_key_exists('Language', $_POST)) $Language = $_POST['Language'];
18 else $Language = 1;
19
20 $Output = '<form action="?" method="post">
21 <fieldset><legend>Registrace nového uživatele</legend>
22 <table>
23 <tr><td colspan="2">Pozorně si přečtěte <a href="info.php">pokyny k překladu</a> a řiďte se jimi. Překládat je nutno včetně háčků a čárek!<br/><br/></td></tr>
24 <tr>
25 <td>Jsi člověk? </td>';
26 if($Human) $Checked = ' checked="checked"';
27 else $Checked = '';
28 $Output .= '<td><input type="checkbox" name="sc" '.$Checked.'/></td>
29 </tr>
30 <tr>
31 <td>Jméno:</td>
32 <td><input type="text" name="user" value="'.$UserName.'"/></td>
33 </tr>
34 <tr>
35 <td>Heslo:</td>
36 <td><input type="password" name="pass" /></td>
37 </tr>
38 <tr>
39 <td>Potvrzení Hesla: </td>
40 <td><input type="password" name="pass2" /></td>
41 </tr>
42 <tr>
43 <td>Email: </td>
44 <td><input type="text" name="Email" value="'.$Email.'"/></td>
45 </tr>
46 <tr>
47 <td>Normálně budu překládat do: </td>
48 <td>'.WriteLanguages($Language).'</td>
49 </tr>
50 <tr>
51 <td>Patřím do týmu: </td>';
52 if($Team == '') $Selected = ' selected="selected"';
53 else $Selected = '';
54 $Output .= '<td><select name="Team"><option value="0"'.$Selected.'>Žádného</option>
55 ';
56 $DbResult = $System->Database->query('SELECT `Name`, `Id` FROM `Team`');
57 while($Line = $DbResult->fetch_assoc())
58 {
59 if($Team == $Line['Id']) $Selected = ' selected="selected"';
60 else $Selected = '';
61 $Output .= '<option value="0'.$Line['Id'].'"'.$Selected.'>'.$Line['Name'].'</option>';
62 }
63 $Output .= '</select></td>
64 </tr>
65 <tr>
66 <th><input type="submit" value="Registrovat" /></th>
67 </tr>
68 </table></fieldset></form>';
69 return($Output);
70}
71
72$ForbiddedNames = array('Addon', 'admin', 'administrator');
73
74$Output = '';
75if(array_key_exists('user', $_POST))
76{
77 $ShowForm = true;
78
79 $UserName = $_POST['user'];
80 $Pass = $_POST['pass'];
81 $Pass2 = $_POST['pass2'];
82 $Email = $_POST['Email'];
83 $Team = $_POST['Team'];
84 $Language = $_POST['Language'];
85 if(array_key_exists('sc', $_POST)) $SpamCheck = $_POST['sc'];
86 else $SpamCheck = '';
87
88 if($SpamCheck != '')
89 {
90 if($UserName != '')
91 {
92 if(!in_array($UserName, $ForbiddedNames))
93 {
94 if($Pass == $Pass2)
95 {
96 $DbResult = $System->Database->query('SELECT * FROM `User` WHERE LOWER(`Name`) = LOWER("'.$UserName.'")');
97 $Line = $DbResult->fetch_row();
98 if(!$Line)
99 {
100 $Salt = $User->GetPasswordSalt();
101 if($Team == 0) $Team = 'NULL';
102 $System->Database->query('INSERT INTO `User` (`Name` , `Pass` , `Salt`, `LastIP` , `LastLogin` , `Email` , `Language` , `Team` , `NeedUpdate`, `RegistrationTime` ) '.
103 'VALUES ("'.$UserName.'", '.$User->CryptPasswordSQL('"'.$Pass.'"', '"'.$Salt.'"').', "'.$Salt.'", "'.$_SERVER['REMOTE_ADDR'].'", NOW(), "'.$Email.'", '.$Language.', '.$Team.', 1, NOW())');
104 $Output .= ShowMessage('Registrace proběhla úspěšně.');
105 $Output .= 'Přečtěte si pozorně <a href="'.$System->Link('/info.php').'">pokyny pro překladání</a> a můžete pak hned začít překládat.';
106 $User->Login($UserName, $Pass);
107 WriteLog('Uživatel se zaregistroval: '.$UserName, LOG_TYPE_USER);
108 $ShowForm = false;
109 } else $Output = ShowMessage('Uživatel se zadanou přezdívkou již existuje.', MESSAGE_CRITICAL);
110 } else $Output = ShowMessage('Hesla se neshodují.', MESSAGE_CRITICAL);
111 } else $Output = ShowMessage('To jméno uživatele nemůžete použít.', MESSAGE_CRITICAL);
112 } else $Output = ShowMessage('Nelze použít prázdné jméno.', MESSAGE_CRITICAL);
113 } else $Output = ShowMessage('Nejsi člověk. Strojům není dovoleno se registrovat.', MESSAGE_CRITICAL);
114
115 if($ShowForm) $Output .= ShowForm();
116} else $Output .= ShowForm();
117
118ShowPage($Output);
119
120?>
Note: See TracBrowser for help on using the repository browser.