/[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.3 by sysadm, Tue Apr 1 02:50:39 2025 UTC Revision 1.14 by sysadm, Sun Apr 20 10:35:06 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 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 168  Line 168 
168                          FROM user_list WHERE username = '$username' AND                          FROM user_list WHERE username = '$username' AND
169                          (password = MD5('$password') OR password = SHA2('$password', 256) OR                          (password = MD5('$password') OR password = SHA2('$password', 256) OR
170                          temp_password = '$password')                          temp_password = '$password')
171                          AND enable";                          AND enable FOR UPDATE";
172    
173          $rs = mysqli_query($db_conn, $sql);          $rs = mysqli_query($db_conn, $sql);
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 288  Line 307 
307                          exit(json_encode($result_set));                          exit(json_encode($result_set));
308                  }                  }
309    
310                    $_SESSION["BBS_vn_str"] = ""; // Force change vn_str
311    
312                  $result_set["return"]["code"] = 3;                  $result_set["return"]["code"] = 3;
313                  $result_set["return"]["message"] = "用户名或密码不正确";                  $result_set["return"]["message"] = "用户名或密码不正确";
314    
# Line 310  Line 331 
331          $ret = load_user_info($uid, $db_conn);          $ret = load_user_info($uid, $db_conn);
332          switch($ret)          switch($ret)
333          {          {
334                  case "-1":                  case -1:
335                          $result_set["return"]["code"] = -2;                          $result_set["return"]["code"] = -2;
336                          $result_set["return"]["message"] = "User data not found; " . mysqli_error($db_conn);                          $result_set["return"]["message"] = "User data not found: " . mysqli_error($db_conn);
337                    
338                          mysqli_close($db_conn);                          mysqli_close($db_conn);
339                          exit(json_encode($result_set));                          exit(json_encode($result_set));
340                  case "-2":                  case -2:
341                          if (!$agreement)                          if (!$agreement)
342                          {                          {
343                                  $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 349 
349                                  exit(json_encode($result_set));                                  exit(json_encode($result_set));
350                          }                          }
351                          break;                          break;
352                  case "-3":                  case -3:
353                          $result_set["return"]["code"] = 3;                          $result_set["return"]["code"] = 3;
354                          $result_set["return"]["message"] = "很遗憾,您已经永远离开了我们的世界……";                          $result_set["return"]["message"] = "很遗憾,您已经永远离开了我们的世界……";
355                    
# Line 342  Line 363 
363          if ($rs == false)          if ($rs == false)
364          {          {
365                  $result_set["return"]["code"] = -2;                  $result_set["return"]["code"] = -2;
366                  $result_set["return"]["message"] = "Update login info error; " . mysqli_error($db_conn);                  $result_set["return"]["message"] = "Update login info error: " . mysqli_error($db_conn);
367    
368                  mysqli_close($db_conn);                  mysqli_close($db_conn);
369                  exit(json_encode($result_set));                  exit(json_encode($result_set));
# Line 351  Line 372 
372          $_SESSION["BBS_uid"] = $uid;          $_SESSION["BBS_uid"] = $uid;
373          $_SESSION["BBS_username"] = $username;          $_SESSION["BBS_username"] = $username;
374          $_SESSION["BBS_login_tm"] = time();          $_SESSION["BBS_login_tm"] = time();
375          $_SESSION["BBS_vn_str"] == "";          $_SESSION["BBS_vn_str"] = "";
376    
377            if (!keep_alive($db_conn))
378            {
379                    $result_set["return"]["code"] = -2;
380                    $result_set["return"]["message"] = "Keep alive error: " . mysqli_error($db_conn);
381    
382                    mysqli_close($db_conn);
383                    exit(json_encode($result_set));
384            }
385    
386          mysqli_close($db_conn);          mysqli_close($db_conn);
387          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