PageRenderTime 48ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 1ms

/www/register.php

http://ds-pro-chat.googlecode.com/
PHP | 434 lines | 335 code | 50 blank | 49 comment | 59 complexity | b76f0b8086afddb3b3fe4cc8f4d4feac MD5 | raw file
Possible License(s): MIT
  1. <?php
  2. //"If-None-Match: \"2083529129\""
  3. //curl_setopt($ch, CURLOPT_HTTPHEADER, array("If-Modified-Since: ".gmdate('D, d M Y H:i:s \G\M\T',time()+60*60*60*60)));
  4. //if(isset($_REQUEST["pf_ssap"])){}
  5. Include('./vars.php');
  6. If(IsSet($_REQUEST['pf_ssap']))
  7. {
  8. //phpinfo();exit;
  9. ForEach(Array('pf_nigol', 'pf_ssap', 'pf_dname', 'pf_email') AS $K)
  10. {
  11. SetType($_REQUEST[$K], 'string');
  12. $_REQUEST[$K] = Trim($_REQUEST[$K]);
  13. }
  14. $_REQUEST['pf_nigol'] = StrToLower($_REQUEST['pf_nigol']);
  15. $mail = Trim(PregTrim(SubStr($_REQUEST['pf_email'], 0, 255)));
  16. If($_REQUEST['pf_nigol'] == 'guest' || StrLen($_REQUEST['pf_nigol']) < 6 || StrLen($_REQUEST['pf_nigol']) > 30 || StrLen($mail) < 6 || StrLen($mail) > 100 ||
  17. StrLen($_REQUEST['pf_dname']) < 3 || StrLen($_REQUEST['pf_dname']) > 30 || StrLen($_REQUEST['pf_ssap']) != 32 || Preg_Match('#[^0-9a-f]#', $_REQUEST['pf_ssap']) ||
  18. Preg_Match('#\W#', $_REQUEST['pf_nigol']) || Preg_Match('#[^\w ?-??-?*()@&$:.,+-]#', $_REQUEST['pf_dname']) ||
  19. !Preg_Match("/^[a-z0-9._-]{1,20}@(([a-z0-9-]+\.)+(com|net|org|mil|edu|gov|arpa|info|biz|inc|name|[a-z]{2})|[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})$/is", $mail)
  20. ){
  21. If(DEBUG)
  22. {
  23. echo '<br>1 ';
  24. Var_Dump(StrLen($_REQUEST['pf_nigol']) < 6);
  25. echo '<br>2 ';
  26. Var_Dump(StrLen($_REQUEST['pf_nigol']) > 30);
  27. echo '<br>3 ';
  28. Var_Dump(StrLen($mail) < 6 || StrLen($mail) > 100);
  29. echo '<br>4 ';
  30. Var_Dump(StrLen($_REQUEST['pf_dname']) < 3);
  31. echo '<br>5 ';
  32. Var_Dump(StrLen($_REQUEST['pf_dname']) > 30);
  33. echo '<br>6 ';
  34. Var_Dump(StrLen($_REQUEST['pf_ssap']) != 32);
  35. echo '<br>7 ';
  36. Var_Dump(Preg_Match('#[0-9a-f]#', $_REQUEST['pf_ssap']));
  37. echo '<br>8 ';
  38. Var_Dump(Preg_Match('#\W#', $_REQUEST['pf_nigol']));
  39. echo '<br>9 ';
  40. Var_Dump(Preg_Match('#[^\w ?-??-?*()@&$:.,+-]#', $_REQUEST['pf_dname']));
  41. echo '<br>10 ';
  42. Var_Dump(!Preg_Match("/^[a-z0-9._-]{1,20}@(([a-z0-9-]+\.)+(com|net|org|mil|edu|gov|arpa|info|biz|inc|name|[a-z]{2})|[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})$/is", $mail));
  43. EXIT;
  44. }
  45. //???????????? ? ??? ?????? ?????? ????? ?????????? ?????. ???? ???? ???? ?????, ?? ??? ??????? ?????????????? ????? ??? ??????????? ????? ??? ??? ??????? ?????? ?????? ?????
  46. Header('Location: http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']);
  47. EXIT;
  48. }
  49. //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  50. //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  51. $ResExt = CheckFile($_FILES['pf_file'], '???????', 'png|jpg|bmp');
  52. If($ResExt)
  53. {
  54. Include(PrivateFolder . 'scripts/SQLiteDB.php');
  55. $DName = SQLite_Escape_String($_REQUEST['pf_dname']);
  56. $Login = SQLite_Escape_String($_REQUEST['pf_nigol']);
  57. $Result = CheckQueryOkEx("SELECT login FROM tbl_users WHERE login = '" . $Login . "' OR like(displayname, '" . $DName . "');", DB_UNBUF);
  58. If($Result && ($Result = SQLite_Fetch_Single($Result)))
  59. {
  60. If($Result == StrToLower($_REQUEST['pf_nigol']))
  61. {
  62. $ERRORS[] = '???????????? ? ????? ??????? ??? ??????????. ?????????? ?????????? ?????? ?????.';
  63. }
  64. Else
  65. {
  66. $ERRORS[] = '???????????? ? ????? ????? ??? ??????????. ?????????? ?????????? ?????? ??? ??? ??????????? ? ????.';
  67. }
  68. }
  69. Else
  70. {
  71. UnSet($Result);
  72. $Pass = SQLite_Escape_String($_REQUEST['pf_ssap']);
  73. $Email = SQLite_Escape_String($mail);
  74. $Avatar = $ResExt == -1 ? 0 : 1;
  75. $Salt = '';
  76. For($i = 0; $i <= 5; $i++)
  77. {
  78. $Salt .= Chr(Rand(0,1) ? Rand(97,122) : Rand(65,90));
  79. }
  80. If(CheckQueryOkEx("
  81. INSERT INTO tbl_users (gid, avatar, banreasonid, passwd, salt, email, login, displayname)
  82. VALUES (100, " . $Avatar . ", 0, MD5WithSalt('" . $Pass . "', '" . $Salt . "'), '" . $Salt . "', '" . $Email . "', '" . $Login . "', '" . $DName . "');",
  83. DB_EXEC)
  84. ){
  85. If($Avatar)
  86. {
  87. ReName($_FILES['pf_file']['tmp_name'], './img/avatar/' . SQLite_Last_Insert_Rowid($DB) . '-1.png');
  88. }
  89. SQLite_Close($DB);
  90. Header('Location: http://' . $_SERVER['HTTP_HOST'] . '/RegOk.html');
  91. EXIT;
  92. }
  93. }
  94. SQLite_Close($DB);
  95. }
  96. //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  97. //-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
  98. }
  99. Function CheckFile(&$File, $name, $Ext)
  100. {
  101. GLOBAL $ERRORS;
  102. SetType($File['size'], 'integer');
  103. SetType($File['error'], 'integer');
  104. SetType($File['name'], 'string');
  105. SetType($File['tmp_name'], 'string');
  106. If(Empty($File['name']) && $File['size'] == 0)
  107. {
  108. Return -1;
  109. }
  110. SWITCH($File['error'])
  111. {
  112. Case 0: Break; // no errors
  113. Case 4:
  114. $ERRORS[] = '?? ?????? ??????? ???? ' . $name . ' ??? ????????, ?????????? ????????? ??????? ????? ?????? ???? ??? ????????.';
  115. Break;
  116. Case 1: Case 2:
  117. $ERRORS[] = ('??????????? ???? ???? ' . $name . ' ??????? ???????? ???????, ? ????????? ? ??????? ??????????? ?? ?????? ??????????? ?????? ?? ??????????? ????????? ????? ??????? ?????.');
  118. Break;
  119. DEFAULT:
  120. $ERRORS[] = ('?? ????? ???????? ????? ' . $name . ' ????????? ?????????????? ?????? (code: ' . $File['error'] .
  121. '). ?????????? ????????? ? ?????????????? ????? ??? ?????????? ???? ???????? ??????? ?? ??? ??????.'
  122. );
  123. }
  124. If($File['error'] == 0)
  125. {
  126. $FileExt = False;
  127. If($File['size'] == 0 || Empty($File['name']) || !Is_Uploaded_File($File['tmp_name']))
  128. {
  129. $ERRORS[] = '?? ????? ???????? ????? ????????? ?????????????? ??????. ?????????? ????????? ? ?????????????? ????? ??? ?????????? ???? ????????.';
  130. Return False;
  131. }
  132. ElseIf(!Preg_Match('#\.(' . $Ext . ')$#i', $File['name'], $FileExt))
  133. {
  134. $ERRORS[] = '??????????? ???? ???? ' . $name . ' ?? ???????? ?????? ?????????? ???????. ?????????? ?????????? ?????? ??????????? ??????? ??????: jpg, png, bmp.';
  135. Return False;
  136. }
  137. Else
  138. {
  139. $FileExt = StrToLower($FileExt[1]);
  140. }
  141. If($FileExt == 'bmp' || $FileExt == 'jpg' || $FileExt == 'png')
  142. {
  143. If(!ConvertImageDimensions($File, $FileExt))
  144. {
  145. Return False;
  146. }
  147. }
  148. Return $FileExt;
  149. }
  150. Return False;
  151. }
  152. Function ConvertImageDimensions(&$File, &$FileExt)
  153. {
  154. GLOBAL $ERRORS;
  155. //Array ( [0] => 2592 [1] => 1552 [2] => 2 [3] => width="2592" height="1552" [bits] => 8 [channels] => 3 [mime] => image/jpeg )
  156. //Array ( [0] => 379 [1] => 474 [2] => 3 [3] => width="379" height="474" [bits] => 8 [mime] => image/png )
  157. //Array ( [0] => 1680 [1] => 1050 [2] => 6 [3] => width="1680" height="1050" [bits] => 24 [mime] => image/bmp )
  158. $ImageInfo = GetImageSize($File['tmp_name']);
  159. If(!$ImageInfo)
  160. {
  161. $ERRORS[] = '??????????? ???? ???? ??????? ????????? ???? ?? ???????? ?????? ??????? ???????. ?????????? ?????????? ????????? ?????? ???? ??? ????????????????? ?????? ? ??????????? ?????????.';
  162. Return False;
  163. }
  164. ElseIf(!(($ImageInfo[2] == 2 && $FileExt == 'jpg') || ($ImageInfo[2] == 3 && $FileExt == 'png') || ($ImageInfo[2] == 6 && $FileExt == 'bmp')))
  165. {
  166. $ERRORS[] = ('??????????? ???? ???? ??????? ?? ???????? ????????? ??????? BMP, JPG ??? PNG. ?????????? ??????????? ??????????????? ?????? ???????????' .
  167. ' ? ???? ?? ???? ????????, ??????? ?????????????? ????? ? ?????? ?????????? ?? ??????? :)'
  168. );
  169. Return False;
  170. }
  171. // ???? ??????? ??????????? ?????? ??? AvatarImageWidth ? AvatarImageHeight ?? ??? ?????? ?????????? ?? ??????? "???????", ????????? ??? ? ????????
  172. ElseIf($ImageInfo[0] > AvatarImageWidth || $ImageInfo[1] > AvatarImageHeight || $FileExt != 'png')
  173. {
  174. Rename($File['tmp_name'], $File['tmp_name'] . '.' . $FileExt);
  175. $File['tmp_name'] = $File['tmp_name'] . '.' . $FileExt;
  176. $tmp = ($ImageInfo[0] > AvatarImageWidth || $ImageInfo[1] > AvatarImageHeight) ? (AvatarImageWidth . 'x' . AvatarImageHeight) : ($ImageInfo[0] . 'x' . $ImageInfo[1]);
  177. $DstExt = 'png';
  178. Exec('convert ' . EscapeShellArg($File['tmp_name']) . ' +profile "*" -size ' . $tmp . ' -quality 75 -geometry ' . $tmp . ' ' . EscapeShellArg($File['tmp_name'] . '.' . $DstExt));
  179. UnLink($File['tmp_name']);
  180. $File['tmp_name'] .= '.' . $DstExt;
  181. $FileExt = $DstExt;
  182. // ???????????? ?????? ?? ???????????
  183. If(!Is_File($File['tmp_name']))
  184. {
  185. $ERRORS[] = '??? ????????? ??????? ?? ??????? ????????? ??????, ?????????? ????????? ? ?????????????? ????? ??? ?????????? ???? ????????.';
  186. Return False;
  187. }
  188. }
  189. Return True;
  190. }
  191. /*
  192. Function MyExec($cmd)
  193. {
  194. If(PHP_OS != 'WINNT')
  195. {
  196. Return Exec($cmd);
  197. }
  198. STATIC $StreamsDesc;
  199. If(!$StreamsDesc)
  200. {
  201. $StreamsDesc = Array(
  202. 0 => Array("pipe", "r"),
  203. 1 => Array("pipe", "w"),
  204. 2 => Array("pipe", "w")
  205. );
  206. }
  207. $Result = '';
  208. $Handle = Proc_Open('%ComSpec%', $StreamsDesc, $Streams);
  209. If(Is_Resource($Handle))
  210. {
  211. FWrite($Streams[0], 'set MAGICK_HOME=' . WinImagicPath . ' && cd ' . DirName($_FILES['pf_file']['tmp_name']) . ' && ' . WinImagicPath . Str_Replace('\\', '/', $cmd) . "\r\n");
  212. FClose($Streams[0]);
  213. $Result = IConv('cp866', 'cp1251//TRANSLIT', Stream_Get_Contents($Streams[1]));
  214. $Result .= IConv('cp866', 'cp1251//TRANSLIT', Stream_Get_Contents($Streams[2]));
  215. FClose($Streams[1]);
  216. FClose($Streams[2]);
  217. Proc_Close($Handle);
  218. UnSet($Streams);
  219. }
  220. Echo $Result;
  221. }*/
  222. Function PregTrim($str)
  223. {
  224. Return Preg_Replace("/[^\x20-\xFF]/", '', @StrVal($str));
  225. }
  226. Function UHSC($text)
  227. {
  228. $text = Preg_Replace('/&(?!#[0-9]+;)/si', '&amp;', $text);
  229. Return Str_Replace(Array('<', '>', '"'), Array('&lt;', '&gt;', '&quot;'), $text);
  230. }
  231. Function EchoInput($Name, $Def = '', $MLen = 30)
  232. {
  233. Echo '<input type="text" maxlength="' . $MLen . '" id="' . $Name . '" value="' . (IsSet($_REQUEST[$Name]) ? UHSC(SubStr(Trim($_REQUEST[$Name]), 0, $MLen)) : '') . '">';
  234. }
  235. ?>
  236. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
  237. <HTML>
  238. <HEAD>
  239. <META content="text/html; charset=windows-1251" http-equiv=Content-Type>
  240. <META content=no-cache http-equiv=Pragma>
  241. <META content=-1 http-equiv=Expires>
  242. <META content=no-cache http-equiv=Cache-Control>
  243. <LINK rel=stylesheet type=text/css href="/css/SimpleSkin.css">
  244. <script type="text/javascript" src="/js/admin.js" ></script>
  245. <script>
  246. //<!--
  247. function submitform()
  248. {
  249. var login = trim11(fetch_object('pf_nigol').value).toLowerCase();
  250. var passwd = trim11(fetch_object('pf_passwd').value);
  251. var passwd2 = trim11(fetch_object('pf_passwd2').value);
  252. var dname = trim11(fetch_object('pf_dname').value);
  253. var email = trim11(fetch_object('pf_email').value);
  254. if(passwd != passwd2)
  255. {
  256. alert('????????? ?????? ?? ?????????! ?????????? ????????? ?????? ? ?????????? ?????.');
  257. return;
  258. }
  259. if(passwd.length < 6)
  260. {
  261. alert('????????? ?????? ??????? ????????. ?????? ?????? ????????? ?? ????? 6 ????????.');
  262. return;
  263. }
  264. if(login == 'guest')
  265. {
  266. alert('????????? ????? ???????????? ??????. ?????? ????? ?????????????? ??? ????????? ????.');
  267. return;
  268. }
  269. if(login.length < 6)
  270. {
  271. alert('????????? ????? ??????? ????????. ????? ?????? ????????? ?? ????? 6 ????????.');
  272. return;
  273. }
  274. if(login.length > 30)
  275. {
  276. alert('????????? ????? ??????? ???????. ????? ?????? ????????? ?? ????? 30 ????????.');
  277. return;
  278. }
  279. if(login.search(new RegExp('\\W', "g")) != -1)
  280. {
  281. alert('????????? ????? ???????? ??????????? ???????. ????? ?? ?????? ????????? ??????? ???????? ????? ???? ?????????? ????????, ???? ? ????? ???????????? "_".');
  282. return;
  283. }
  284. if(dname.length < 3)
  285. {
  286. alert('????????? ??? ??? ??????????? ??????? ????????. ?? ?????? ????????? ?? ????? 3 ????????.');
  287. return;
  288. }
  289. if(dname.length > 30)
  290. {
  291. alert('????????? ??? ??? ??????????? ??????? ???????. ?? ?????? ????????? ?? ????? 30 ????????.');
  292. return;
  293. }
  294. if(dname.search(new RegExp('[^\\w ?-??-?*()@&$:.,+-]', "g")) != -1)
  295. {
  296. alert('????????? ??? ??? ??????????? ??????? ???????. ?? ?????? ????????? ?? ????? 30 ????????.');
  297. return;
  298. }
  299. if(email.length < 6)
  300. {
  301. alert('?????????? ??????? ?????????? email.');
  302. return;
  303. }
  304. if(email.length > 100)
  305. {
  306. alert('?????????? ??????? ?????????? email, ???????????? ????? ?? ????? ????????? 100 ????????.');
  307. return;
  308. }
  309. if(!checkmail(email))
  310. {
  311. alert('??????????, ??????? ???? ????????? e-mail');
  312. return;
  313. }
  314. AddFieldToForm('pf_nigol', login);
  315. AddFieldToForm('pf_ssap', MD5(passwd));
  316. AddFieldToForm('pf_dname', dname);
  317. AddFieldToForm('pf_email', email);
  318. fetch_object('postform').submit();
  319. }
  320. function checkmail(value)
  321. {
  322. reg = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;
  323. if(!value.match(reg))
  324. {
  325. return false;
  326. }
  327. return true;
  328. }
  329. function AddFieldToForm(name, value)
  330. {
  331. var theForm = fetch_object('postform');
  332. var newOption = document.createElement("input");
  333. newOption.name = name;
  334. newOption.type = "text";
  335. newOption.value = value;
  336. theForm.appendChild(newOption);
  337. }
  338. //-->
  339. </script>
  340. <META name=GENERATOR content="MSHTML 9.00.8112.16434">
  341. </HEAD>
  342. <BODY oncontextmenu="return false;" style="padding: 50px 50px 50px;">
  343. <a name="top" />
  344. <TABLE class="textj">
  345. <?php If(IsSet($ERRORS) && Count($ERRORS)){ ?>
  346. <tr><td class="tbighed" style="background-color: #9c6670; ;">?? ????? ??????????? ????????? ??????:</td></tr>
  347. <tr><td><div style="padding: 20px 10px 10px 50px;"><ol>
  348. <?php
  349. ForEach($ERRORS AS $Err)
  350. {
  351. Echo '<li>' . $Err . '</li>';
  352. }
  353. ?>
  354. </ol></div></td></tr>
  355. <tr><td>&nbsp;</td></tr>
  356. <tr><td>&nbsp;</td></tr>
  357. <?php } ?>
  358. <tr><td class="tbighed">??????????? ? DSProChat</td></tr>
  359. <tr><td>&nbsp;</td></tr>
  360. <tr><td>????? ??? ?????:</td></tr>
  361. <tr><td><?php EchoInput('pf_nigol'); ?></td></tr>
  362. <tr><td>&nbsp;</td></tr>
  363. <tr><td>??????:</td></tr>
  364. <tr><td><input type="password" maxlength="50" id="pf_passwd"></td></tr>
  365. <tr><td>&nbsp;</td></tr>
  366. <tr><td>?????? ??? ???:</td></tr>
  367. <tr><td><input type="password" maxlength="50" id="pf_passwd2"></td></tr>
  368. <tr><td>&nbsp;</td></tr>
  369. <tr><td>E-mail:</td></tr>
  370. <tr><td><?php EchoInput('pf_email', '', 100); ?></td></tr>
  371. <tr><td>&nbsp;</td></tr>
  372. <tr><td>??? ??? ??????? ????? ???????????? ? ????:</td></tr>
  373. <tr><td><?php EchoInput('pf_dname'); ?></td></tr>
  374. <tr><td>&nbsp;</td></tr>
  375. <tr><td>??????? (?????? ????? ????????: jpg, png, bmp):</td></tr>
  376. <tr><td><form id="postform" enctype="multipart/form-data" method="post"><input type="hidden" name="MAX_FILE_SIZE" value="800000"><input style="width: 100%" name="pf_file" type="file" style="width:99%;" /></form></td></tr>
  377. <tr><td>&nbsp;</td></tr>
  378. <tr><td>&nbsp;</td></tr>
  379. <tr><td><input type="submit" style="height: 40px" onClick="submitform();"></td></tr>
  380. </TABLE>
  381. </BODY>
  382. </HTML>