Просмотр файла 1/datafunc.php

Размер файла: 5.08Kb
  1. <?php
  2.  
  3. $NOT_SET = "NOT_SET";
  4. require("antimat.ssp"); // Антимат-фильтр ( чтобы ники матерные не регистрировали)
  5.  
  6. function InitParam($N,$V)
  7. {
  8. global $Names,$Values;
  9. $Names = $N;
  10. $Values = $V;
  11. }
  12.  
  13. function GetParam($Name)
  14. {
  15. global $Names,$Values,$NOT_SET;
  16. $Name = strtolower($Name);
  17. $Nlist = explode(":",$Names);
  18. for ($i=0; $i<count($Nlist); $i++) if ($Nlist[$i] == $Name) break;
  19. if ($i == count($Nlist)) return $NOT_SET;
  20. $Vlist = explode(":",$Values);
  21. return stripslashes(str_replace("!~!",":",$Vlist[$i]));
  22. }
  23.  
  24. function SetParam($Name,$Value)
  25. {
  26. global $Names,$Values,$NOT_SET;
  27. $Nlist = explode(":",$Names);
  28. $Name = strtolower($Name);
  29. $Value = addslashes(str_replace(":","!~!",$Value));
  30. for ($i=0; $i<count($Nlist); $i++) if ($Nlist[$i] == $Name) break;
  31. if ($i == count($Nlist) and ($Value != $NOT_SET))
  32. { // Добавляем имя и значение
  33. $Names .= ":$Name";
  34. $Values .= ":$Value";
  35. }
  36. else
  37. {
  38. $Vlist = explode(":",$Values);
  39. $Vlist[$i] = $Value;
  40. $Values = implode(":",$Vlist);
  41. if ($Value == $NOT_SET)
  42. { // Удаление имени и значения
  43. $Nlist[$i] = $NOT_SET;
  44. $Names = implode(":",$Nlist);
  45. $Names = str_replace(":$NOT_SET","",$Names);
  46. $Values = str_replace(":$NOT_SET","",$Values);
  47. }
  48. }
  49. }
  50.  
  51.  
  52. function checkpass($nick, $pass, $fields, &$result,$skippass=0)
  53. { //
  54. global $PassDelay;
  55. if ($fields == "") $fields = "pass,lastrefr";
  56. else if ($fields !== "*") $fields .= ",pass,lastrefr";
  57. $now = time();
  58. $sql="select $fields from users where nick='$nick'";
  59. $result=mysql_query($sql) or die(mysql_error());
  60. if (mysql_num_rows($result)!=1) return "Логин не найден";
  61. $row = mysql_fetch_array($result);
  62. $dt = $PassDelay - $now + $row['lastrefr'];
  63. if ($dt > 0) return "Повторите через $dt"."sec";
  64. if ($row['pass']!=$pass && !$skippass)
  65. {
  66. $sql = "update users set lastrefr=$now where nick='$nick'";
  67. mysql_query($sql) or die(mysql_error());
  68. return "Неверный пароль";
  69. }
  70. return "";
  71. }
  72.  
  73. function openDB()
  74. {
  75. global $server,$user,$dbpass,$dbname;
  76. $sesDB = @mysql_connect($server,$user,$dbpass);
  77. if (!$sesDB) return "База данных недоступна. Повторите через 5мин";
  78. $ok = @mysql_select_db($dbname,$sesDB);
  79. if (!$ok)return "База данных недоступна. Повторите через 5мин";
  80. return "";
  81. }
  82.  
  83. function SetData($login,$pass,$data)
  84. { // Возвращает пустую строку в случае успеха или сообщение об ошибке.
  85. global $error, $Names, $Values;
  86. if (empty($login)) return "Логин не задан";
  87. if (empty($pass)) return "Пароль не задан";
  88.  
  89. $maxdata = 5000; // Максимальная длина данных
  90. if(strlen($data)>$maxdata) return "Слишком длинная строка.";
  91. $error =openDB();
  92. if ($error != "") return $error;
  93. $ok = checkpass($login,$pass,"names,vals",$result,1); // сохраняет без пароля!
  94. if ($ok != "") return $ok;
  95. InitParam(mysql_result($result,0, "names"),mysql_result($result,0, "vals"));
  96. SetParam('gamedata',$data);
  97.  
  98. $sqlUpd = "update users set names='$Names', vals='$Values' where nick = '$login'";
  99. mysql_query($sqlUpd) or die(mysql_error());
  100. mysql_close();
  101. }
  102.  
  103. function GetData($login,$pass,&$data,$srv=0)
  104. { // Возвращает пустую строку в случае успеха (данные возвращаются в $data) или сообщение об ошибке.
  105. global $error, $Names, $Values, $NOT_SET;
  106. if (empty($login)) return "Логин не задан";
  107. if (empty($pass)) return "Пароль не задан";
  108. $error =openDB();
  109. if ($error != "") return $error;
  110.  
  111. $ok = checkpass($login,$pass,"names,vals",$result);
  112. if ($ok != "") return $ok;
  113. InitParam(mysql_result($result,0, "names"),mysql_result($result,0, "vals"));
  114. mysql_close();
  115. $data = GetParam("gamedata");
  116. if ($data == $NOT_SET) return "Данные не найдены";
  117.  
  118. return "";
  119. }
  120.  
  121. function SetUser($login,$oldpass,$newpass)
  122. { // Регистрация нового пользователя (oldpass = "") или смена пароля.
  123. // Возвращает пустую строку в случае успеха или сообщение об ошибке.
  124. global $RegStatus,$DefRefrInt,$DefMessLim,$CommonMode;
  125. if (empty($login)) return "Логин не задан";
  126. if (empty($newpass)) return "Пароль не задан";
  127. if (!ValidNN($login)) return "Неверный синтаксис в логине";
  128. if (!ValidPass($newpass)) return "Неверный синтаксис в пароле";
  129. $login=substr($login,0,10);
  130. $newpass=substr($newpass,0,10);
  131. $BadWord = GetBadWord($login);
  132. if ($BadWord != "") return "Логин содержит запрещённое слово";
  133. $error =openDB();
  134. if ($error != "") return $error;
  135.  
  136. if ($oldpass !="")
  137. {
  138. $ok = checkpass($login,$oldpass,"",$result);
  139. if ($ok != "") return $ok;
  140. $sqlUpd = "update users set pass='$newpass' where nick = '$login' and pass='$oldpass'";
  141. mysql_query($sqlUpd) or die(mysql_error());
  142. }
  143. else
  144. {
  145. $sqlSel="select * from users where nick = '$login'";
  146. $result=mysql_query($sqlSel) or die(mysql_error());
  147. $Count=mysql_num_rows($result);
  148. if ($Count != 0) return "Такой логин уже зарегистирован";
  149. $now = time();
  150. $sqllogin ="insert into users (status,sent,regtime,refrint,messlim,mode,nick,pass) values ('$RegStatus','0', '$now', '$DefRefrInt','$DefMessLim', '$CommonMode','$login', '$newpass')";
  151. mysql_query($sqllogin) or die(mysql_error());
  152. }
  153. mysql_close();
  154. return "";
  155. }
  156. ?>