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

Diff of /fenglin/bbs/update_profile_service.php

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

Revision 1.5 by sysadm, Wed Apr 9 06:00:54 2025 UTC Revision 1.9 by sysadm, Wed Apr 23 06:36:57 2025 UTC
# Line 1  Line 1 
1  <?  <?php
2          require_once "../lib/common.inc.php";          require_once "../lib/common.inc.php";
3          require_once "../lib/db_open.inc.php";          require_once "../lib/db_open.inc.php";
4            require_once "../lib//score_change.inc.php";
5          require_once "../lib/send_mail.inc.php";          require_once "../lib/send_mail.inc.php";
6          require_once "../lib/str_process.inc.php";          require_once "../lib/str_process.inc.php";
7          require_once "../lib/passwd.inc.php";          require_once "../lib/passwd.inc.php";
         require_once "./common_lib.inc.php";  
8          require_once "./session_init.inc.php";          require_once "./session_init.inc.php";
9            require_once "./user_reg_check.inc.php";
10    
11          force_login();          force_login();
12    
13          $data = json_decode(file_get_contents("php://input"), true);          $data = json_decode(file_get_contents("php://input"), true);
14    
15            $nickname = (isset($data["nickname"]) ? trim($data["nickname"]) : "");
16          $realname = (isset($data["realname"]) ? trim($data["realname"]) : "");          $realname = (isset($data["realname"]) ? trim($data["realname"]) : "");
17          $gender = (isset($data["gender"]) ? $data["gender"] : "");          $gender = (isset($data["gender"]) ? $data["gender"] : "");
18          $gender_public = (isset($data["gender_public"]) && $data["gender_public"] == "1" ? 1 : 0);          $gender_public = (isset($data["gender_public"]) && $data["gender_public"] == "1" ? 1 : 0);
# Line 31  Line 33 
33          header("Content-Type:application/json; charset=utf-8");          header("Content-Type:application/json; charset=utf-8");
34    
35          // Validate input data          // Validate input data
36            if ($nickname == "" || preg_match("/[[:space:]]/", $nickname) || str_length($nickname) > 20)
37            {
38                    $result_set["return"]["code"] = -1;
39                    array_push($result_set["return"]["errorFields"], array(
40                            "id" => "nickname",
41                            "errMsg" => "不符合格式要求",
42                    ));
43            }
44            else if (!check_str($nickname) && !$_SESSION["BBS_priv"]->checklevel(P_ADMIN_M | P_ADMIN_S))
45            {
46                    $result_set["return"]["code"] = -1;
47                    array_push($result_set["return"]["errorFields"], array(
48                            "id" => "nickname",
49                            "errMsg" => "昵称不可用",
50                    ));
51            }
52    
53          if ($realname == "" || preg_match("/[\t\r\n]/", $realname) || str_length($realname) > 10)          if ($realname == "" || preg_match("/[\t\r\n]/", $realname) || str_length($realname) > 10)
54          {          {
55                  $result_set["return"]["code"] = -1;                  $result_set["return"]["code"] = -1;
# Line 91  Line 110 
110          }          }
111    
112          // Secure SQL statement          // Secure SQL statement
113            $nickname = mysqli_real_escape_string($db_conn, $nickname);
114          $realname = mysqli_real_escape_string($db_conn, $realname);          $realname = mysqli_real_escape_string($db_conn, $realname);
115                    
116          // Begin transaction          // Begin transaction
# Line 114  Line 134 
134                  exit(json_encode($result_set));                  exit(json_encode($result_set));
135          }          }
136    
137          $sql = "SELECT email FROM user_pubinfo WHERE UID = " . $_SESSION["BBS_uid"];          $sql = "SELECT nickname, email FROM user_pubinfo WHERE UID = " . $_SESSION["BBS_uid"] .
138                            " FOR UPDATE";
139    
140          $rs = mysqli_query($db_conn, $sql);          $rs = mysqli_query($db_conn, $sql);
141          if ($rs == false)          if ($rs == false)
# Line 126  Line 147 
147                  exit(json_encode($result_set));                  exit(json_encode($result_set));
148          }          }
149    
150          if($row = mysqli_fetch_array($rs))          if ($row = mysqli_fetch_array($rs))
151          {          {
152                    $old_nickname = $row["nickname"];
153                  $old_email = $row["email"];                  $old_email = $row["email"];
154          }          }
155          else          else
# Line 141  Line 163 
163    
164          mysqli_free_result($rs);          mysqli_free_result($rs);
165    
166            // Update nickname
167            if ($old_nickname != $nickname)
168            {
169                    $sql = "SELECT DISTINCT UID FROM user_nickname WHERE nickname = '$nickname'";
170    
171                    $rs = mysqli_query($db_conn, $sql);
172                    if ($rs == false)
173                    {
174                            $result_set["return"]["code"] = -2;
175                            $result_set["return"]["message"] = "Query nickname error: " . mysqli_error($db_conn);
176            
177                            mysqli_close($db_conn);
178                            exit(json_encode($result_set));
179                    }
180            
181                    $free_change = false;
182                    if ($row = mysqli_fetch_array($rs))
183                    {
184                            if ($row["UID"] == $_SESSION["BBS_uid"]) // Re-use old nickname
185                            {
186                                    $free_change = true;
187                            }
188                            else // Unavailable nickname
189                            {
190                                    $result_set["return"]["code"] = -1;
191                                    array_push($result_set["return"]["errorFields"], array(
192                                            "id" => "nickname",
193                                            "errMsg" => "昵称已存在",
194                                    ));
195            
196                                    mysqli_close($db_conn);
197                                    exit(json_encode($result_set));
198                            }
199                    }
200                    mysqli_free_result($rs);
201    
202                    if (!$free_change)
203                    {
204                            $ret = score_change($_SESSION["BBS_uid"], -abs($BBS_nickname_change_fee), "更改昵称", $db_conn);
205                            if ($ret < 0)
206                            {
207                                    $result_set["return"]["code"] = -2;
208                                    $result_set["return"]["message"] = "Query score error: " . mysqli_error($db_conn);
209                    
210                                    mysqli_close($db_conn);
211                                    exit(json_encode($result_set));
212                            }
213                            else if ($ret > 0)
214                            {
215                                    $result_set["return"]["code"] = -1;
216                                    array_push($result_set["return"]["errorFields"], array(
217                                            "id" => "nickname",
218                                            "errMsg" => "积分不足",
219                                    ));
220                    
221                                    mysqli_close($db_conn);
222                                    exit(json_encode($result_set));
223                            }
224                    }
225    
226                    $sql = "UPDATE user_nickname SET end_dt = NOW(), end_reason = 'C'
227                                    WHERE UID = " . $_SESSION["BBS_uid"] . " AND end_dt IS NULL";
228    
229                    $rs = mysqli_query($db_conn, $sql);
230                    if ($rs == false)
231                    {
232                            $result_set["return"]["code"] = -2;
233                            $result_set["return"]["message"] = "Update old nickname error: " . mysqli_error($db_conn);
234    
235                            mysqli_close($db_conn);
236                            exit(json_encode($result_set));
237                    }
238    
239                    $sql = "INSERT INTO user_nickname(UID, nickname, begin_dt, begin_reason)
240                                    VALUES(" . $_SESSION["BBS_uid"] . ", '$nickname', NOW(), 'C')";
241    
242                    $rs = mysqli_query($db_conn, $sql);
243                    if ($rs == false)
244                    {
245                            $result_set["return"]["code"] = -2;
246                            $result_set["return"]["message"] = "Insert new nickname error: " . mysqli_error($db_conn);
247    
248                            mysqli_close($db_conn);
249                            exit(json_encode($result_set));
250                    }
251    
252                    $sql = "UPDATE user_pubinfo SET nickname = '$nickname' WHERE UID = " .
253                                    $_SESSION["BBS_uid"];
254    
255                    $rs = mysqli_query($db_conn, $sql);
256                    if ($rs == false)
257                    {
258                            $result_set["return"]["code"] = -2;
259                            $result_set["return"]["message"] = "Update nickname error: " . mysqli_error($db_conn);
260    
261                            mysqli_close($db_conn);
262                            exit(json_encode($result_set));
263                    }
264            }
265    
266          // Update email          // Update email
267          if ($old_email != $email)          if ($old_email != $email)
268          {          {
269                  $sql = "SELECT UID FROM user_pubinfo WHERE email = '$email'";                  $sql = "SELECT UID FROM user_pubinfo WHERE email = '$email' FOR SHARE";
270    
271                  $rs = mysqli_query($db_conn, $sql);                  $rs = mysqli_query($db_conn, $sql);
272                  if ($rs == false)                  if ($rs == false)


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

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