/[LeafOK_CVS]/fenglin/bbs/user_login_service.php
ViewVC logotype

Diff of /fenglin/bbs/user_login_service.php

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.2 by sysadm, Tue Apr 1 02:45:18 2025 UTC Revision 1.12 by sysadm, Thu Apr 10 10:22:44 2025 UTC
# Line 10  Line 10 
10    
11          $data = json_decode(file_get_contents("php://input"), true);          $data = json_decode(file_get_contents("php://input"), true);
12    
13          $username = (isset($data["username"]) ? $data["username"] : "");          $username = (isset($data["username"]) ? trim($data["username"]) : "");
14          $password = (isset($data["password"]) ? $data["password"] : "");          $password = (isset($data["password"]) ? trim($data["password"]) : "");
15          $ch_passwd = (isset($data["ch_passwd"]) && $data["ch_passwd"] == "1" ? 1 : 0);          $ch_passwd = (isset($data["ch_passwd"]) && $data["ch_passwd"] == "1" ? 1 : 0);
16          $password_new = (isset($data["password_new"]) ? $data["password_new"] : "");          $password_new = (isset($data["password_new"]) ? trim($data["password_new"]) : "");
17          $agreement = (isset($data["agreement"]) && $data["agreement"] == "1");          $agreement = (isset($data["agreement"]) && $data["agreement"] == "1");
18          $mfa = (isset($data["mfa"]) && $data["mfa"] == "1" ? 1 : 0);          $mfa = (isset($data["mfa"]) && $data["mfa"] == "1" ? 1 : 0);
19          $vn_str = (isset($data["vn_str"]) ? $data["vn_str"] : "");          $vn_str = (isset($data["vn_str"]) ? trim($data["vn_str"]) : "");
20    
21          $result_set = array(          $result_set = array(
22                  "return" => array(                  "return" => array(
# Line 29  Line 29 
29          header("Content-Type:application/json; charset=utf-8");          header("Content-Type:application/json; charset=utf-8");
30    
31          // Validate input data          // Validate input data
32          if (!preg_match("/^[A-Za-z][A-Za-z0-9]{4,11}$/", $username))          if (!preg_match("/^[A-Za-z][A-Za-z0-9]{2,11}$/", $username))
33          {          {
34                  $result_set["return"]["code"] = -1;                  $result_set["return"]["code"] = -1;
35                  array_push($result_set["return"]["errorFields"], array(                  array_push($result_set["return"]["errorFields"], array(
# Line 49  Line 49 
49    
50          if ($ch_passwd)          if ($ch_passwd)
51          {          {
52                  if (!preg_match("/^[A-Za-z0-9]{5,12}$/", $password_new))                  if (!preg_match("/^[A-Za-z0-9]{6,12}$/", $password_new))
53                  {                  {
54                          $result_set["return"]["code"] = -1;                          $result_set["return"]["code"] = -1;
55                          array_push($result_set["return"]["errorFields"], array(                          array_push($result_set["return"]["errorFields"], array(
# Line 70  Line 70 
70    
71          if ($mfa)          if ($mfa)
72          {          {
73                  if ((!isset($_SESSION["BBS_vn_str"])) || VN_check($_SESSION["BBS_vn_str"], $vn_str) != 0)                  if ((!isset($_SESSION["BBS_vn_str"])) || $_SESSION["BBS_vn_str"] == "" || strcasecmp($_SESSION["BBS_vn_str"], $vn_str) != 0)
74                  {                  {
75                          $result_set["return"]["code"] = -1;                          $result_set["return"]["code"] = -1;
76                          array_push($result_set["return"]["errorFields"], array(                          array_push($result_set["return"]["errorFields"], array(
# Line 111  Line 111 
111          {          {
112                  // Failed login attempts from the same source (subnet /24) during certain time period                  // Failed login attempts from the same source (subnet /24) during certain time period
113                  $sql = "SELECT COUNT(*) AS err_count FROM user_err_login_log                  $sql = "SELECT COUNT(*) AS err_count FROM user_err_login_log
114                                  WHERE login_dt >= SUBDATE(NOW(), INTERVAL '10' MINUTE)                                  WHERE login_dt >= SUBDATE(NOW(), INTERVAL 10 MINUTE)
115                                  AND login_ip LIKE '" . client_addr(1) . "'";                                  AND login_ip LIKE '" . client_addr(1) . "'";
116                  $rs = mysqli_query($db_conn, $sql);                  $rs = mysqli_query($db_conn, $sql);
117                  if ($rs == false)                  if ($rs == false)
118                  {                  {
119                          $result_set["return"]["code"] = -2;                          $result_set["return"]["code"] = -2;
120                          $result_set["return"]["message"] = "Query login log error; " . mysqli_error($db_conn);                          $result_set["return"]["message"] = "Query login log error: " . mysqli_error($db_conn);
121                    
122                          mysqli_close($db_conn);                          mysqli_close($db_conn);
123                          exit(json_encode($result_set));                          exit(json_encode($result_set));
# Line 138  Line 138 
138    
139                  // Failed login attempts against the current username during certain time period                  // Failed login attempts against the current username during certain time period
140                  $sql = "SELECT COUNT(*) AS err_count FROM user_err_login_log                  $sql = "SELECT COUNT(*) AS err_count FROM user_err_login_log
141                                  WHERE username = '$username' AND login_dt >= SUBDATE(NOW(), INTERVAL '1' DAY)";                                  WHERE username = '$username' AND login_dt >= SUBDATE(NOW(), INTERVAL 1 DAY)";
142                  $rs = mysqli_query($db_conn, $sql);                  $rs = mysqli_query($db_conn, $sql);
143                  if ($rs == false)                  if ($rs == false)
144                  {                  {
145                          $result_set["return"]["code"] = -2;                          $result_set["return"]["code"] = -2;
146                          $result_set["return"]["message"] = "Query login log error; " . mysqli_error($db_conn);                          $result_set["return"]["message"] = "Query login log error: " . mysqli_error($db_conn);
147                    
148                          mysqli_close($db_conn);                          mysqli_close($db_conn);
149                          exit(json_encode($result_set));                          exit(json_encode($result_set));
# Line 154  Line 154 
154                          if ($row["err_count"] >= 5)                          if ($row["err_count"] >= 5)
155                          {                          {
156                                  $result_set["return"]["code"] = 1;                                  $result_set["return"]["code"] = 1;
157                                  $result_set["return"]["message"] = "账号存在多次失败登陆尝试,请输入验证码";                                  $result_set["return"]["message"] = "账户存在多次失败登陆尝试,请输入验证码";
158    
159                                  mysqli_close($db_conn);                                  mysqli_close($db_conn);
160                                  exit(json_encode($result_set));                                  exit(json_encode($result_set));
# Line 174  Line 174 
174          if ($rs == false)          if ($rs == false)
175          {          {
176                  $result_set["return"]["code"] = -2;                  $result_set["return"]["code"] = -2;
177                  $result_set["return"]["message"] = "Query user list error; " . mysqli_error($db_conn);                  $result_set["return"]["message"] = "Query user list error: " . mysqli_error($db_conn);
178    
179                  mysqli_close($db_conn);                  mysqli_close($db_conn);
180                  exit(json_encode($result_set));                  exit(json_encode($result_set));
# Line 184  Line 184 
184    
185          if ($row = mysqli_fetch_array($rs))          if ($row = mysqli_fetch_array($rs))
186          {          {
187                  $uid = $row["UID"];                  $uid = intval($row["UID"]);
188    
189                  if ($password == $row["temp_password"] && !$ch_passwd)                  if ($password == $row["temp_password"] && !$ch_passwd)
190                  {                  {
# Line 197  Line 197 
197    
198                  if ($ch_passwd)                  if ($ch_passwd)
199                  {                  {
200                          $verified = ($password == $row["temp_password"] ? 1 : $row["verified"]); // New user first time login with temp password                          if ($password == $row["temp_password"]) // New user first time login with temp password
201                            {
202                                    $verified = 1;
203    
204                                    // Set life = 150 for verified user
205                                    $sql = "UPDATE user_pubinfo SET life = 150 WHERE UID = $uid";
206                                    $rs_life = mysqli_query($db_conn, $sql);
207                                    if ($rs_life == false)
208                                    {
209                                            $result_set["return"]["code"] = -2;
210                                            $result_set["return"]["message"] = "Update user life error: " . mysqli_error($db_conn);
211                            
212                                            mysqli_close($db_conn);
213                                            exit(json_encode($result_set));
214                                    }
215                            }
216                            else
217                            {
218                                    $verified = $row["verified"];
219                            }
220    
221                          $sql = "UPDATE user_list SET password = SHA2('$password_new', 256),                          $sql = "UPDATE user_list SET password = SHA2('$password_new', 256),
222                                          temp_password = '', verified = $verified WHERE UID = $uid";                                          temp_password = '', verified = $verified WHERE UID = $uid";
# Line 205  Line 224 
224                          if ($rs_p == false)                          if ($rs_p == false)
225                          {                          {
226                                  $result_set["return"]["code"] = -2;                                  $result_set["return"]["code"] = -2;
227                                  $result_set["return"]["message"] = "Update password error; " . mysqli_error($db_conn);                                  $result_set["return"]["message"] = "Update password error: " . mysqli_error($db_conn);
228                                    
229                                  mysqli_close($db_conn);                                  mysqli_close($db_conn);
230                                  exit(json_encode($result_set));                                  exit(json_encode($result_set));
# Line 218  Line 237 
237                          if ($rs_p == false)                          if ($rs_p == false)
238                          {                          {
239                                  $result_set["return"]["code"] = -2;                                  $result_set["return"]["code"] = -2;
240                                  $result_set["return"]["message"] = "Upgrade password error; " . mysqli_error($db_conn);                                  $result_set["return"]["message"] = "Upgrade password error: " . mysqli_error($db_conn);
241                                    
242                                  mysqli_close($db_conn);                                  mysqli_close($db_conn);
243                                  exit(json_encode($result_set));                                  exit(json_encode($result_set));
# Line 234  Line 253 
253                  if ($rs == false)                  if ($rs == false)
254                  {                  {
255                          $result_set["return"]["code"] = -2;                          $result_set["return"]["code"] = -2;
256                          $result_set["return"]["message"] = "Write log error; " . mysqli_error($db_conn);                          $result_set["return"]["message"] = "Write log error: " . mysqli_error($db_conn);
257    
258                          mysqli_close($db_conn);                          mysqli_close($db_conn);
259                          exit(json_encode($result_set));                          exit(json_encode($result_set));
# Line 271  Line 290 
290                  if ($rs == false)                  if ($rs == false)
291                  {                  {
292                          $result_set["return"]["code"] = -2;                          $result_set["return"]["code"] = -2;
293                          $result_set["return"]["message"] = "Write log error; " . mysqli_error($db_conn);                          $result_set["return"]["message"] = "Write log error: " . mysqli_error($db_conn);
294                    
295                          mysqli_close($db_conn);                          mysqli_close($db_conn);
296                          exit(json_encode($result_set));                          exit(json_encode($result_set));
# Line 310  Line 329 
329          $ret = load_user_info($uid, $db_conn);          $ret = load_user_info($uid, $db_conn);
330          switch($ret)          switch($ret)
331          {          {
332                  case "-1":                  case -1:
333                          $result_set["return"]["code"] = -2;                          $result_set["return"]["code"] = -2;
334                          $result_set["return"]["message"] = "User data not found; " . mysqli_error($db_conn);                          $result_set["return"]["message"] = "User data not found: " . mysqli_error($db_conn);
335                    
336                          mysqli_close($db_conn);                          mysqli_close($db_conn);
337                          exit(json_encode($result_set));                          exit(json_encode($result_set));
338                  case "-2":                  case -2:
339                          if (!$agreement)                          if (!$agreement)
340                          {                          {
341                                  $buffer = file_get_contents("./doc/license/" . (new DateTime($BBS_license_dt))->format("Ymd") . ".txt");                                  $buffer = file_get_contents("./doc/license/" . (new DateTime($BBS_license_dt))->format("Ymd") . ".txt");
# Line 328  Line 347 
347                                  exit(json_encode($result_set));                                  exit(json_encode($result_set));
348                          }                          }
349                          break;                          break;
350                  case "-3":                  case -3:
351                          $result_set["return"]["code"] = 3;                          $result_set["return"]["code"] = 3;
352                          $result_set["return"]["message"] = "很遗憾,您已经永远离开了我们的世界……";                          $result_set["return"]["message"] = "很遗憾,您已经永远离开了我们的世界……";
353                    
# Line 342  Line 361 
361          if ($rs == false)          if ($rs == false)
362          {          {
363                  $result_set["return"]["code"] = -2;                  $result_set["return"]["code"] = -2;
364                  $result_set["return"]["message"] = "Update login info error; " . mysqli_error($db_conn);                  $result_set["return"]["message"] = "Update login info error: " . mysqli_error($db_conn);
365    
366                  mysqli_close($db_conn);                  mysqli_close($db_conn);
367                  exit(json_encode($result_set));                  exit(json_encode($result_set));
# Line 351  Line 370 
370          $_SESSION["BBS_uid"] = $uid;          $_SESSION["BBS_uid"] = $uid;
371          $_SESSION["BBS_username"] = $username;          $_SESSION["BBS_username"] = $username;
372          $_SESSION["BBS_login_tm"] = time();          $_SESSION["BBS_login_tm"] = time();
373          $_SESSION["BBS_vn_str"] == "";          $_SESSION["BBS_vn_str"] = "";
374    
375            if (!keep_alive($db_conn))
376            {
377                    $result_set["return"]["code"] = -2;
378                    $result_set["return"]["message"] = "Keep alive error: " . mysqli_error($db_conn);
379    
380                    mysqli_close($db_conn);
381                    exit(json_encode($result_set));
382            }
383    
384          mysqli_close($db_conn);          mysqli_close($db_conn);
385          exit(json_encode($result_set));          exit(json_encode($result_set));


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1