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

Diff of /fenglin/bbs/post.php

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

Revision 1.4 by sysadm, Sat Apr 5 01:01:14 2025 UTC Revision 1.9 by sysadm, Wed Apr 23 04:51:55 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";
         require_once "./common_lib.inc.php";  
4          require_once "./session_init.inc.php";          require_once "./session_init.inc.php";
5          require_once "./check_sub.inc.php";          require_once "./check_sub.inc.php";
6          require_once "../lib/lml.inc.php";          require_once "../lib/lml.inc.php";
7          require_once "../lib/str_process.inc.php";          require_once "../lib/str_process.inc.php";
8  ?>          require_once "./theme.inc.php";
9  <?  
10          force_login();          force_login();
11    
12            $result_set = array(
13                    "return" => array(
14                            "code" => 0,
15                            "message" => "",
16                            "errorFields" => array(),
17                    )
18            );
19    
20          $id = (isset($_GET["id"]) ? intval($_GET["id"]) : 0);          $id = (isset($_GET["id"]) ? intval($_GET["id"]) : 0);
21          $reply_id = (isset($_GET["reply_id"]) ? intval($_GET["reply_id"]) : 0);          $reply_id = (isset($_GET["reply_id"]) ? intval($_GET["reply_id"]) : 0);
22          $sid = (isset($_GET["sid"]) ? intval($_GET["sid"]) : $BBS_default_sid);          $sid = (isset($_GET["sid"]) ? intval($_GET["sid"]) : $BBS_default_sid);
23          $quote = (isset($_GET["quote"]) && $_GET["quote"] == "0" ? false : true);          $quote = (isset($_GET["quote"]) && $_GET["quote"] == "0" ? false : true);
24    
25            $uid = 0;
26            $tid = 0;
27          $title = "";          $title = "";
28            $r_username = "";
29            $r_nickname = "";
30          $content = "";          $content = "";
31          $emoji = 1;          $emoji = 1;
32          $reply_note = ($reply_id == 0 ? 1 : 0);          $reply_note = ($reply_id == 0 ? 1 : 0);
33            $excerption = 0;
34            $attachments = array();
35    
36          if($id == 0) // Post article          if($id == 0) // Post article
37          {          {
# Line 29  Line 42 
42                          $rs = mysqli_query($db_conn, $sql);                          $rs = mysqli_query($db_conn, $sql);
43                          if ($rs == false)                          if ($rs == false)
44                          {                          {
45                                  echo("Query section error: " . mysqli_error($db_conn));                                  $result_set["return"]["code"] = -2;
46                                  exit();                                  $result_set["return"]["message"] = "Query section error: " . mysqli_error($db_conn);
47                    
48                                    mysqli_close($db_conn);
49                                    exit(json_encode($result_set));
50                          }                          }
51                                    
52                          if ($row = mysqli_fetch_array($rs))                          if ($row = mysqli_fetch_array($rs))
# Line 39  Line 55 
55                          }                          }
56                          else                          else
57                          {                          {
58                                  error_msg("版块不存在!",true);                                  $result_set["return"]["code"] = -1;
59                                  exit();                                  $result_set["return"]["message"] = "版块不存在!";
60                    
61                                    mysqli_close($db_conn);
62                                    exit(json_encode($result_set));
63                          }                          }
64                          mysqli_free_result($rs);                          mysqli_free_result($rs);
65    
66                          if (!$_SESSION["BBS_priv"]->checkpriv($sid, S_POST))                          if (!$_SESSION["BBS_priv"]->checkpriv($sid, S_POST))
67                          {                          {
68                                  error_msg("您无权发表文章!", true);                                  $result_set["return"]["code"] = -1;
69                                  exit();                                  $result_set["return"]["message"] = "您无权发表文章!";
70                    
71                                    mysqli_close($db_conn);
72                                    exit(json_encode($result_set));
73                          }                          }
74                  }                  }
75                  else // Reply article                  else // Reply article
# Line 61  Line 83 
83                          $rs = mysqli_query($db_conn, $sql);                          $rs = mysqli_query($db_conn, $sql);
84                          if ($rs == false)                          if ($rs == false)
85                          {                          {
86                                  echo("Query article error: " . mysqli_error($db_conn));                                  $result_set["return"]["code"] = -2;
87                                  exit();                                  $result_set["return"]["message"] = "Query article error: " . mysqli_error($db_conn);
88                    
89                                    mysqli_close($db_conn);
90                                    exit(json_encode($result_set));
91                          }                          }
92    
93                          if ($row = mysqli_fetch_array($rs))                          if ($row = mysqli_fetch_array($rs))
# Line 78  Line 103 
103                          }                          }
104                          else                          else
105                          {                          {
106                                  error_msg("回复的文章不存在!", true);                                  $result_set["return"]["code"] = -1;
107                                  exit();                                  $result_set["return"]["message"] = "回复的文章不存在!";
108                    
109                                    mysqli_close($db_conn);
110                                    exit(json_encode($result_set));
111                          }                          }
112                          mysqli_free_result($rs);                          mysqli_free_result($rs);
113    
# Line 90  Line 118 
118                                  $rs = mysqli_query($db_conn, $sql);                                  $rs = mysqli_query($db_conn, $sql);
119                                  if ($rs == false)                                  if ($rs == false)
120                                  {                                  {
121                                          echo("Query article error: " . mysqli_error($db_conn));                                          $result_set["return"]["code"] = -2;
122                                          exit();                                          $result_set["return"]["message"] = "Query article error: " . mysqli_error($db_conn);
123                            
124                                            mysqli_close($db_conn);
125                                            exit(json_encode($result_set));
126                                  }                                  }
127                    
128                                  if ($row = mysqli_fetch_array($rs))                                  if ($row = mysqli_fetch_array($rs))
# Line 101  Line 132 
132                                  }                                  }
133                                  else                                  else
134                                  {                                  {
135                                          error_msg("回复的主题不存在!", true);                                          $result_set["return"]["code"] = -1;
136                                          exit();                                          $result_set["return"]["message"] = "回复的主题不存在!";
137                            
138                                            mysqli_close($db_conn);
139                                            exit(json_encode($result_set));
140                                  }                                  }
141                                  mysqli_free_result($rs);                                                                  mysqli_free_result($rs);                                
142                          }                          }
143    
144                          if (!$_SESSION["BBS_priv"]->checkpriv($sid, S_POST))                          if (!$_SESSION["BBS_priv"]->checkpriv($sid, S_POST))
145                          {                          {
146                                  error_msg("您无权发表文章!", true);                                  $result_set["return"]["code"] = -1;
147                                  exit();                                  $result_set["return"]["message"] = "您无权发表文章!";
148                    
149                                    mysqli_close($db_conn);
150                                    exit(json_encode($result_set));
151                          }                          }
152    
153                          if ($lock)                          if ($lock)
154                          {                          {
155                                  error_msg("该主题谢绝回复!", true);                                  $result_set["return"]["code"] = -1;
156                                  exit();                                  $result_set["return"]["message"] = "该主题谢绝回复!";
157                    
158                                    mysqli_close($db_conn);
159                                    exit(json_encode($result_set));
160                          }                          }
161                  }                  }
162          }          }
# Line 131  Line 171 
171                  $rs = mysqli_query($db_conn, $sql);                  $rs = mysqli_query($db_conn, $sql);
172                  if ($rs == false)                  if ($rs == false)
173                  {                  {
174                          echo("Query article error: " . mysqli_error($db_conn));                          $result_set["return"]["code"] = -2;
175                          exit();                          $result_set["return"]["message"] = "Query article error: " . mysqli_error($db_conn);
176            
177                            mysqli_close($db_conn);
178                            exit(json_encode($result_set));
179                  }                  }
180    
181                  if ($row = mysqli_fetch_array($rs))                  if ($row = mysqli_fetch_array($rs))
# Line 149  Line 192 
192                  }                  }
193                  else                  else
194                  {                  {
195                          error_msg("修改的文章不存在!", true);                          $result_set["return"]["code"] = -1;
196                          exit();                          $result_set["return"]["message"] = "修改的文章不存在!";
197            
198                            mysqli_close($db_conn);
199                            exit(json_encode($result_set));
200                  }                  }
201                  mysqli_free_result($rs);                  mysqli_free_result($rs);
202    
203                  if (!($_SESSION["BBS_priv"]->checkpriv($sid, S_POST) && $_SESSION["BBS_uid"] == $uid && (!$excerption)))                  if (!($_SESSION["BBS_priv"]->checkpriv($sid, S_POST) && $_SESSION["BBS_uid"] == $uid && (!$excerption)))
204                  {                  {
205                          error_msg("您无权修改此文章!",true);                          $result_set["return"]["code"] = -1;
206                          exit();                          $result_set["return"]["message"] = "您无权修改此文章!";
207                  }          
208          }                          mysqli_close($db_conn);
209  ?>                          exit(json_encode($result_set));
 <html>  
 <head>  
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
 <title>发表文章</title>  
 <link rel="stylesheet" href="css/default.css" type="text/css">  
 <script language="JavaScript" src="/js/nw_open.js"></script>  
 <script language="JavaScript" src="/js/lml_assistant.js"></script>  
 <script src="../js/polyfill.min.js"></script>  
 <script src="../js/axios.min.js"></script>  
 <script type="text/javascript">  
 function refresh_err_msg(errorFieldMap)  
 {  
         document.getElementsByName("err_msg").forEach(element => {  
                 if (errorFieldMap.has(element.id))  
                 {  
                         element.innerHTML = errorFieldMap.get(element.id);  
                 }  
                 else  
                 {  
                         element.innerHTML = "";  
                 }  
         });  
 }  
   
 function post_article(f)  
 {  
         instance.post('post_service.php', {  
         id: <? echo $id; ?>,  
         reply_id: <? echo $reply_id; ?>,  
         sid: <? echo $sid; ?>,  
         title: f.title.value,  
                 transship: (f.transship != null && f.transship.checked ? "1" : "0"),  
                 content: f.content.value,  
                 emoji: f.emoji.value,  
                 sign_id: f.sign_id.value,  
                 reply_note: (f.reply_note.checked ? "1" : "0"),  
                 attachment: f.attachment.files,  
     }, {  
                 headers: {  
                         'Content-Type': 'multipart/form-data',  
210                  }                  }
         })  
     .then(function (response) {  
         var ret = response.data;  
                 var errorFieldMap = new Map();  
         switch (ret.return.code)  
         {  
                         case 0: // OK  
                                 var returnPath = "view_article.php?id=" + ret.return.tid + "#" + ret.return.aid;  
                                 document.location = returnPath;  
                                 refresh_err_msg(errorFieldMap);  
                                 break;  
                         case -1: // Input validation failed  
                                 ret.return.errorFields.forEach(field => {  
                                         errorFieldMap.set("err_msg_" + field.id, "<br />" + field.errMsg);  
                                 });  
                                 refresh_err_msg(errorFieldMap);  
                                 break;  
                         case -2: // Internal error  
                                 console.log(ret.return.message);  
                                 errorFieldMap.set("err_msg_prompt", "内部错误");  
                                 refresh_err_msg(errorFieldMap);  
                                 break;  
                         default:  
                                 console.log(ret.return.code);  
                                 break;  
         }  
     })  
     .catch(function (error) {  
         console.log(error);  
     });  
   
         return false;  
 }  
   
 function upload_del(id)  
 {  
         if (window.confirm('真的要删除吗?') == false)  
         {  
                 return false;  
         }  
211    
         instance.post('upload_del.php', {  
         aid: id  
     })  
     .then(function (response) {  
         var ret = response.data;  
                 var errorFieldMap = new Map();  
         switch (ret.return.code)  
         {  
                         case 0: // OK  
                         case 1: // Already deleted  
                                 document.getElementById("attachment_" + id).style.display = "none";  
                                 refresh_err_msg(errorFieldMap);  
                                 break;  
                         case -1: // Input validation failed  
                                 errorFieldMap.set("err_msg_attachment", "<br />" + ret.return.message);  
                                 refresh_err_msg(errorFieldMap);  
                                 break;  
                         case -2: // Internal error  
                                 console.log(ret.return.message);  
                                 errorFieldMap.set("err_msg_prompt", "内部错误");  
                                 refresh_err_msg(errorFieldMap);  
                                 break;  
                         default:  
                                 console.log(ret.return.code);  
                                 break;  
         }  
     })  
     .catch(function (error) {  
         console.log(error);  
     });  
   
         return false;  
 }  
   
 const instance = axios.create({  
     withCredentials: true,  
     timeout: 3000,  
     baseURL: document.location.protocol + '//' + document.location.hostname + (document.location.port=='' ? '' : (':' + document.location.port)) + '/bbs/',  
 });  
   
 window.addEventListener("load", () => {  
         var f = document.getElementById("post_form");  
         f.addEventListener("submit", (e) => {  
                 e.preventDefault();  
                 post_article(f);  
         });  
 });  
   
 </script>  
 </head>  
 <body>  
 <center>  
 <table border="0" cellpadding="1" cellspacing="0" width="770">  
         <tr>  
                 <td>  
                         <a class="s2" href="main.php?sid=<? echo $sid; ?>"><? echo $BBS_name; ?></a>&gt;&gt;<a class="s2" href="bbs.php?sid=<? echo $sid; ?>"><? echo $section_title; ?></a>&gt;&gt;<?  
         if ($id == 0)  
         {  
                 if ($reply_id > 0)  
                 {  
 ?><a class="s2" href="view_article.php?id=<? echo ($tid ? $tid : $reply_id) . "#$reply_id"; ?>"><? echo split_line(htmlspecialchars($title, ENT_HTML401, 'UTF-8'), "", 65, 2, "<br />"); ?></a>&gt;&gt;<a class="s2" href="#">回复文章</a><?  
                 }  
                 else  
                 {  
 ?><a class="s2" href="#">发表新文章</a><?  
                 }  
         }  
         else  
         {  
 ?><a class="s2" href="view_article.php?id=<? echo ($tid ? $tid : $id) . "#$id"; ?>"><? echo split_line(htmlspecialchars($title, ENT_HTML401, 'UTF-8'), "", 65, 2, "<br />"); ?></a>&gt;&gt;<a class="s2" href="#">修改文章</a><?  
         }  
 ?>  
                 </td>  
         </tr>  
 </table>  
 <form method="POST" ENCTYPE="multipart/form-data" id="post_form" name="post_form" action="#">  
 <table border="0" cellpadding="5" cellspacing="0" width="770">  
         <tr>  
                 <td colspan="2" align="center" style="color:red;">别忙着发贴,请先看一下<a class="s0" href="doc/management.xml" target=_blank>《论坛管理章程》</a>吧!<br>  
                 (请对您的言论负责,遵守有关法律、法规,尊重网络道德)</td>  
         </tr>  
         <tr height="10">  
                 <td colspan="2" align="center"><span id="err_msg_prompt" name="err_msg" style="color: red;"></span></td>  
         </tr>  
         <tr>  
                 <td width="10%" align="right">标题<span id="err_msg_title" name="err_msg" style="color: red;"></span></td>  
                 <td width="90%">  
                         <input type="text" name="title" id="title" size="80" <? echo ($id != 0 ? "readonly" : ""); ?> value="<? echo ($reply_id > 0 ? split_line(htmlspecialchars($title, ENT_QUOTES | ENT_HTML401, 'UTF-8'), "Re: ", 80, 1) : htmlspecialchars($title, ENT_QUOTES | ENT_HTML401, 'UTF-8')); ?>">  
 <?  
         if ($id == 0 && $reply_id == 0)  
         {  
 ?>  
                         <input type="checkbox" name="transship">转载  
 <?  
         }  
 ?></td>  
         </tr>  
         <tr>  
                 <td align="right">正文<span id="err_msg_content" name="err_msg" style="color: red;"></span></td>  
                 <td>  
                         <textarea name="content" id="content" cols="80" rows="25"><?  
 if ($reply_id == 0)  
 {  
         echo htmlspecialchars($content, ENT_HTML401, 'UTF-8');  
 }  
 else if ($quote)  
 {  
 ?>  
   
   
   
 【 在 <? echo htmlspecialchars($r_username, ENT_HTML401, 'UTF-8'); ?> (<? echo htmlspecialchars($r_nickname, ENT_HTML401, 'UTF-8'); ?>) 的大作中提到: 】  
 <?  
         echo htmlspecialchars(LMLtagFilter(LML(split_line($content, ": ", 76, 20), false, false, 1024)), ENT_HTML401, 'UTF-8');  
 }  
 ?></textarea>  
                 </td>  
         </tr>  
         <tr>  
                 <td align="right"><a class="s0" href="doc/lml.htm" target=_blank>LML</a>助手</td>  
                 <td>  
                         <INPUT type="button" value="B" onclick="b_bold(content)" style="font-weight:bold; width:25px;">  
                         <INPUT type="button" value="I" onclick="b_italic(content)" style="font-style:italic; width:25px;">  
                         <INPUT type="button" value="U" onclick="b_underline(content)" style="text-decoration:underline; width:25px;">  
                         <INPUT type="button" value="[" onclick="b_left(content)" style="width:20px;">  
                         <INPUT type="button" value="]" onclick="b_right(content)" style="width:20px;">  
                         <INPUT type="button" value="Aa" onclick="b_size(content)" style="width:30px;">  
                         <INPUT type="button" value="A" onclick="b_color(content)" style="font-weight:bold; color:red; width:25px;">  
                         <INPUT type="button" value="@" onclick="b_email(content)" style="width:25px;">  
                         <INPUT type="button" value="Link" onclick="b_link(content)" style="text-decoration:underline; color:blue; width:40px;">  
                         <INPUT type="button" value="主题" onclick="b_article(content)" style="text-decoration:underline; color:green; width:40px;">  
                         <INPUT type="button" value="图片" onclick="b_image(content)" style="width:40px;">  
                         <INPUT type="button" value="字幕" onclick="b_marquee(content)" style="width:40px;">  
                 </td>  
         </tr>  
         <tr>  
                 <td align="right">上传附件<span id="err_msg_attachment" name="err_msg" style="color: red;"></span></td>  
                 <td>  
                         单个文件大小不能超过<? echo $BBS_upload_size_limit; ?>M,  
                         单次上传不超过<? echo $BBS_upload_count_limit; ?>个文件<br />  
                         文件类型限于BMP,GIF,JPEG,PNG,TIFF,TXT,ZIP,RAR<br />  
                         <INPUT TYPE=FILE SIZE=40 name="attachment[]" id="attachment" multiple>  
 <?  
         if ($id != 0) // Modify article  
         {  
212                  $sql = "SELECT * FROM upload_file WHERE ref_AID = $id                  $sql = "SELECT * FROM upload_file WHERE ref_AID = $id
213                                  AND deleted = 0 AND deny = 0                                  AND deleted = 0 AND deny = 0
214                                  ORDER BY AID";                                  ORDER BY AID";
# Line 395  else if ($quote) Line 216  else if ($quote)
216                  $rs = mysqli_query($db_conn, $sql);                  $rs = mysqli_query($db_conn, $sql);
217                  if ($rs == false)                  if ($rs == false)
218                  {                  {
219                          echo ("Read attachment error: " . mysqli_error($db_conn));                          $result_set["return"]["code"] = -2;
220                          exit();                          $result_set["return"]["message"] = "Read attachment error: " . mysqli_error($db_conn);
221            
222                            mysqli_close($db_conn);
223                            exit(json_encode($result_set));
224                  }                  }
225                                    
                 if (mysqli_num_rows($rs) > 0)  
                 {  
 ?>  
                         <hr width="80%" align="left" />已上传附件<br />  
 <?  
                 }  
   
226                  while ($row = mysqli_fetch_array($rs))                  while ($row = mysqli_fetch_array($rs))
227                  {                  {
228                          $filename = $row["filename"];                          $attachments[$row["AID"]] = array(
229                          $ext = strtolower(substr($filename, (strrpos($filename, ".") ? strrpos($filename, ".") + 1 : 0)));                                  "filename" => $row["filename"],
230  ?>                                  "size" => $row["size"],
231                          <span id="attachment_<? echo $row["AID"]; ?>"><img src="images/closed.gif"><a class="s2" href="dl_file.php?aid=<? echo $row["AID"]; ?>" target="_target"><? echo $filename; ?></a> (<? echo $row["size"]; ?>字节)                                  "check" => $row["check"],
232  <?                          );
                         if ($row["check"] == 0)  
                         {  
 ?><font color="red">未审核</font><?  
                         }  
 ?>  
                         <a class="s2" href="#" onclick="return upload_del(<? echo $row["AID"]; ?>);">删除</a>  
                         <br /></span>  
 <?  
233                  }                  }
                   
234                  mysqli_free_result($rs);                  mysqli_free_result($rs);
235          }          }
236  ?>  
                 </td>  
         </tr>  
         <tr>  
                 <td align="right">表情<span id="err_msg_emoji" name="err_msg" style="color: red;"></span></td>  
                 <td><?  
         for ($i = 1; $i <= $BBS_emoji_count; $i++)  
         {  
 ?><input type="radio" name="emoji" value="<? echo $i; ?>" <? echo ($i == $emoji ? "checked" : ""); ?>><img src="images/expression/<? echo $i; ?>.gif" width="15" height="15" alt="<? echo $i; ?>.gif"><?  
                 if (($i % 12)==0)  
                 {  
 ?><br><?  
                 }  
         }  
 ?></td>  
         </tr>  
 <?  
         if ($id == 0)  
         {  
 ?>  
         <tr>  
                 <td align="right">签名<span id="err_msg_sign" name="err_msg" style="color: red;"></span></td>  
                 <td>  
                         <input type="radio" id="sign_id_0" name="sign_id" value="0" checked>不使用&nbsp;  
                         <input type="radio" id="sign_id_1" name="sign_id" value="1">1&nbsp;  
                         <input type="radio" id="sign_id_2" name="sign_id" value="2">2&nbsp;  
                         <input type="radio" id="sign_id_3" name="sign_id" value="3">3&nbsp;  
                         <a class="s0" href="" onclick="return NW_open('preference.php', 'member_service', 500, 550);">设置个人签名</a>  
                 </td>  
         </tr>  
 <?  
         }  
 ?>  
         <tr>  
                 <td align="right"></td>  
                 <td><input type="checkbox" name="reply_note" id="reply_note" <? echo ($reply_note ? "checked":""); ?>>有人回复该主题时通知我</td>  
         </tr>  
 </table>  
 <p><input type="submit" value="提交" name="submit">&nbsp;&nbsp;&nbsp;<input type="reset" value="重填" name="reset"></p>  
 </center>  
 </form>  
 <?  
237          mysqli_close($db_conn);          mysqli_close($db_conn);
238    
239            // Fill up result data
240            $result_set["data"] = array(
241                    "id" => $id,
242                    "reply_id" => $reply_id,
243                    "uid" => $uid,
244                    "sid" => $sid,
245                    "tid" => $tid,
246                    "title" => $title,
247                    "r_username" => $r_username,
248                    "r_nickname" => $r_nickname,
249                    "content" => $content,
250                    "quote" => $quote,
251                    "emoji" => $emoji,
252                    "reply_note" => $reply_note,
253                    "excerption" => $excerption,
254                    "section_title" => $section_title,
255                    "attachments" => $attachments,
256            );
257    
258            // Cleanup
259            unset($id);
260            unset($reply_id);
261            unset($uid);
262            unset($sid);
263            unset($tid);
264            unset($title);
265            unset($r_username);
266            unset($r_nickname);
267            unset($content);
268            unset($emoji);
269            unset($reply_note);
270            unset($excerption);
271            unset($section_title);
272            unset($attachments);
273                    
274          include "./foot.inc.php";          // Output with theme view
275            $theme_view_file = get_theme_file("view/post", $_SESSION["BBS_theme_name"]);
276            if ($theme_view_file == null)
277            {
278                    exit(json_encode($result_set)); // Output data in Json
279            }
280            include $theme_view_file;
281  ?>  ?>
 </body>  
 </html>  


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

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