Cheetah
modules
cheetah
forum
classes
Login.php
Go to the documentation of this file.
1
<?
php
2
8
// login | join functions
9
10
class
Login
extends
ThingPage
11
{
12
// join form fields
13
var
$f_join
= array (
14
'username'
=> array (
15
'value'
=>
''
,
16
'type'
=>
'text'
,
17
'title'
=>
'[L[Username]]'
,
18
'regexp'
=>
'/^[A-Za-z0-9_]{4,12}$/'
,
19
'err'
=>
'[L[Join Login Username Error]]'
,
20
'attributes'
=> array (
'class'
=>
'sh'
),
21
),
22
'email'
=> array (
23
'value'
=>
''
,
24
'type'
=>
'text'
,
25
'title'
=>
'[L[Email]]'
,
26
'regexp'
=>
'/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/'
,
27
'err'
=>
'[L[Join Email Error]]'
,
28
'attributes'
=> array (
'class'
=>
'sh'
),
29
),
30
);
31
32
// login form fields
33
var
$f_login
= array (
34
'username'
=> array (
35
'value'
=>
''
,
36
'type'
=>
'text'
,
37
'title'
=>
'[L[Username]]'
,
38
'regexp'
=>
'/^[A-Za-z0-9_]{4,12}$/'
,
39
'err'
=>
'[L[Join Login Username Error]]'
,
40
'attributes'
=> array (
'class'
=>
'sh'
),
41
),
42
'pwd'
=> array (
43
'value'
=>
''
,
44
'type'
=>
'password'
,
45
'title'
=>
'[L[Password]]'
,
46
'regexp'
=>
'/^[A-Za-z0-9_]+$/'
,
47
'err'
=>
'[L[Login Password Error]]'
,
48
'attributes'
=> array (
'class'
=>
'sh'
),
49
),
50
);
51
55
function
__construct
()
56
{
57
58
}
59
63
function
getJoinForm
()
64
{
65
$cu = $this->
getUrlsXml
();
66
return
"<root>$cu<join><join_form>"
.
array2xml
($this->f_join) .
"</join_form></join></root>"
;
67
}
68
72
function
getLoginForm
()
73
{
74
$cu = $this->
getUrlsXml
();
75
return
"<root>$cu<login><login_form>"
.
array2xml
($this->f_login) .
"</login_form></login></root>"
;
76
}
77
82
function
joinSubmit
($p)
83
{
84
$js =
''
;
85
86
// check input values
87
foreach
($this->f_join
as
$name => $a) {
88
if
($a[
'regexp'
])
89
if
(!preg_match($a[
'regexp'
], $p[$name]))
90
$js .= $this->
_getJsErr
($name, $a[
'err'
]);
91
92
switch
($name) {
93
case
'username'
:
94
if
(!$this->
_checkUniqUser
($p[$name]))
95
$js .= $this->
_getJsErr
($name,
'[L[Username must be uniq]]'
);
96
break
;
97
case
'email'
:
98
if
(!$this->
_checkUniqEmail
($p[$name]))
99
$js .= $this->
_getJsErr
($name,
'[L[Email must be uniq]]'
);
100
break
;
101
}
102
}
103
104
// add user
105
if
(!$js) {
106
$db
=
new
DbLogin
();
107
108
$p[
'pwd'
] = $this->
_genPwd
();
109
110
prepare_to_db
($p[
'username'
], 0);
111
prepare_to_db
($p[
'email'
], 0);
112
113
if
(!
$db
->insertUser($p)) {
114
$js .= $this->
_getJsErr
(
'email'
,
'[L[Database error]]'
);
115
}
116
117
// send activation mail
118
$mail =
new
ChMail
();
119
if
(!$mail->sendActivationMail($p)) {
120
$js .= $this->
_getJsErr
(
'email'
,
'[L[Send mail failed]]'
);
121
}
122
}
123
124
return
'<js>'
. $js .
'</js>'
;
125
}
126
131
function
loginSubmit
($p)
132
{
133
$js =
''
;
134
135
// check input values
136
foreach
($this->f_login
as
$name => $a) {
137
if
($a[
'regexp'
])
138
if
(!preg_match($a[
'regexp'
], $p[$name]))
139
$js .= $this->
_getJsErr
($name, $a[
'err'
]);
140
141
}
142
143
// process login
144
if
(!$js) {
145
$db
=
new
DbLogin
();
146
147
$p[
'pwd'
] = md5($p[
'pwd'
]);
148
149
if
(!
$db
->checkLogin($p)) {
150
$js .= $this->
_getJsErr
(
'pwd'
,
'[L[password or login is incorrect]]'
);
151
}
else
{
152
setcookie (
'orca_user'
, $p[
'username'
]);
153
if
(!setcookie (
'orca_pwd'
, $p[
'pwd'
]))
154
$js .= $this->
_getJsErr
(
'pwd'
,
'[L[Cookies must be enabled to process login]]'
);
155
}
156
}
157
158
return
'<js>'
. $js .
'</js>'
;
159
}
160
161
// private functions
162
163
function
_getJsErr
($name, $err)
164
{
165
return
<<<EOS
166
{
167
var e =
document
.getElementById(
'f_err_$name'
);
168
e.innerHTML =
'$err'
;
169
e.style.display =
'inline'
;
170
}
171
EOS;
172
173
}
174
175
function
_checkUniqUser
(
$s
)
176
{
177
$db
=
new
DbLogin
();
178
return
$db
->getUserByName (
filter_to_db
(
$s
)) ==
$s
?
false
:
true
;
179
}
180
181
function
_checkUniqEmail
(
$s
)
182
{
183
$db
=
new
DbLogin
();
184
return
$db
->getUserByEmail (
filter_to_db
(
$s
)) ==
$s
?
false
:
true
;
185
}
186
187
function
_genPwd
()
188
{
189
$ret
=
''
;
190
list($usec, $sec) = explode(
' '
, microtime());
191
$seed = (float) $sec + ((
float
) $usec * 100000);
192
srand($seed);
193
194
for
($i=0; $i < 8; ++$i) {
195
196
switch
(rand(1,3)) {
197
case
1:
198
$c = chr(rand(ord(
'a'
),ord(
'z'
)));
199
break
;
200
case
2:
201
$c = chr(rand(ord(
'A'
),ord(
'Z'
)));
202
break
;
203
case
3:
204
$c = chr(rand(ord(
'0'
),ord(
'9'
)));
205
break
;
206
}
207
$ret
.= $c;
208
}
209
return
$ret
;
210
}
211
212
}
document
Output SortAttr HTML Purifier will sort attributes by name before writing them back to the document
Definition:
Output.SortAttr.txt:8
Login\$f_join
$f_join
Definition:
Login.php:13
Login\getJoinForm
getJoinForm()
Definition:
Login.php:63
Login\$f_login
$f_login
Definition:
Login.php:33
Login\_genPwd
_genPwd()
Definition:
Login.php:187
$db
if(!defined("DB_HOST")) define("DB_HOST" $db['host']
Definition:
header.inc.php:18
$ret
$ret
Definition:
index.php:39
array2xml
array2xml($arr, $tag=false)
Definition:
util.inc.php:60
php
DbLogin
Definition:
DbLogin.php:13
filter_to_db
filter_to_db($s, $iAllowHTML=0)
Definition:
util.inc.php:123
Login\_checkUniqUser
_checkUniqUser($s)
Definition:
Login.php:175
ThingPage\getUrlsXml
getUrlsXml()
Definition:
ThingPage.php:43
Login\getLoginForm
getLoginForm()
Definition:
Login.php:72
Login\joinSubmit
joinSubmit($p)
Definition:
Login.php:82
Login
Definition:
Login.php:11
ChMail
Definition:
ChMail.php:11
$s
$s
Definition:
embed.php:13
Login\loginSubmit
loginSubmit($p)
Definition:
Login.php:131
ThingPage
Definition:
ThingPage.php:11
Login\_getJsErr
_getJsErr($name, $err)
Definition:
Login.php:163
as
as
Definition:
Filter.ExtractStyleBlocks.Escaping.txt:10
prepare_to_db
prepare_to_db(&$s, $iAllowHTML=1)
Definition:
util.inc.php:110
Login\__construct
__construct()
Definition:
Login.php:55
false
if(!defined("FALSE_VAL")) define("FALSE_VAL" false
Definition:
constants.inc.php:9
Login\_checkUniqEmail
_checkUniqEmail($s)
Definition:
Login.php:181
Generated by
1.8.20