|
||||
1 : /* file: board.inc¢Ò 2 : ¢Ò 3 : °Ô½ÃÆÇ °øÅë ºÎ ÇÁ·Î±×·¥ (author: ¼±¤Çö)¢Ò 4 : ¢Ò 5 : Copyright (c) 2001/03/25 by Wesoft¢Ò 6 : All Rights Reserved.¢Ò 7 : */¢Ò 8 : ¢Ò 9 : // your system configuration¢Ò 10 : ¢Ò 11 : myhost= "localhost"; // MySQL host¢Ò 12 : mydb= "welboard2"; // MySQL database name¢Ò 13 : myuser= "********"; // MySQL user id¢Ò 14 : enpass= "********"; // MySQL password¢Ò 15 : COOKIE_EXPIRE= 30; // ÄíÅ°¸¸±â ½Ã°£ 30ºÐ¢Ò 16 : decode_variable= "@cgipasswd"; // password decoding variable¢Ò 17 : cookie_garbage= 24; // ÄíÅ°ÀÇ ¾²·¹±â°ª À§Ä¡¢Ò 18 : ¢Ò 19 : // end system configuration¢Ò 20 : ¢Ò 21 : PROGRAM_NAME= "WelBoard";¢Ò 22 : PROGRAM_VERSION= "V2.0.4";¢Ò 23 : fch= "\\|'"; // DB¿ë ãÀ» ¹®ÀÚ¢Ò 24 : rch= "\\\\|\\'"; // DB¿ë ¹Ù²Ü ¹®ÀÚ¢Ò 25 : html_fch= "<|\"|&#|&"; // HTML¿ë ãÀ» ¹®ÀÚ¢Ò 26 : html_rch= "<|"|&#|&"; // HTML¿ë ¹Ù²Ü ¹®ÀÚ¢Ò 27 : OK= 1;¢Ò 28 : FAIL= 0;¢Ò 29 : mytable= db;¢Ò 30 : mypass= decode(enpass, "", decode_variable);¢Ò 31 : if(prg_title=="") prg_title= "°Ô½ÃÆÇ";¢Ò 32 : message_form= "form/message.fom";¢Ò 33 : message_title= db ~ " " ~ prg_title ~ " ¿À·ù ¸Þ½ÃÁö";¢Ò 34 : MSG0= "<b>ERROR: </b>";¢Ò 35 : cpright= "<font color=#5c5c5c face=Verdana size=1>"¢Ò 36 : ~ "<b>Wesoft Corp.</b> ¨Ï 2001 All rights reserved.</font>";¢Ò 37 : ¢Ò 38 : week_str= array("ÀÏ","¿ù","È","¼ö","¸ñ","±Ý","Åä");¢Ò 39 : ¢Ò 40 : function string insert_week(string dtime)¢Ò 41 : {¢Ò 42 : int pos, yy, mm, dd;¢Ò 43 : string date, time;¢Ò 44 : ¢Ò 45 : pos= strfind(dtime, " ");¢Ò 46 : if(pos>1)¢Ò 47 : {¢Ò 48 : date= left(dtime, pos-1);¢Ò 49 : time= mid(dtime, pos+1);¢Ò 50 : yy= val(left(date, 4));¢Ò 51 : mm= val(mid(date, 6, 2));¢Ò 52 : dd= val(mid(date, 9, 2));¢Ò 53 : dtime= date ~ "(" ~ week_str[iweek(yy,mm,dd)] ~ ") " ~ time;¢Ò 54 : }¢Ò 55 : return(dtime);¢Ò 56 : }¢Ò 57 : ¢Ò 58 : string bt_comment;¢Ò 59 : ¢Ò 60 : DEFINE_BUTTON=¢Ò 61 : {[ <input type="button" value="{$btname}" id=ib onClick="{$action}"{$style}{$comment}]}¢Ò 62 : ¢Ò 63 : DEFINE_BUTTON2=¢Ò 64 : {[¢Ò 65 : onmouseover="this.style.color='#f00000'"¢Ò 66 : onmouseout= "this.style.color='#000000'">]}¢Ò 67 : /*¢Ò 68 : mode==0 : Ãâ·Â¾øÀÌ ¹®ÀÚ¿À» ¸®ÅÏÇÔ¢Ò 69 : mode==1 : ¹öÆ°À» Ãâ·ÂÇÔ¢Ò 70 : mode>1 : ¹öÆ°À» Ãâ·ÂÇÑ ÈÄ °³ÇàÀ» ÇÔ¢Ò 71 : styleÀÇ Ã¹±ÛÀÚ°¡ "!" : offµÈ ¸ð¾ç¢Ò 72 : */¢Ò 73 : ¢Ò 74 : function free button(int mode, string action, string btname, string style)¢Ò 75 : {¢Ò 76 : string bt, bt_str, comment;¢Ò 77 : ¢Ò 78 : bt= DEFINE_BUTTON;¢Ò 79 : if(left(style,1)!="!") bt~= DEFINE_BUTTON2;¢Ò 80 : else style= mid(style,2), bt~= ">";¢Ò 81 : if(style!="") style= " style=\"" ~ style ~ "\"";¢Ò 82 : if(bt_comment!="")¢Ò 83 : {¢Ò 84 : comment= " title=\"" ~ bt_comment ~ "\"";¢Ò 85 : bt_comment= "";¢Ò 86 : }¢Ò 87 : bt_str= strform(bt);¢Ò 88 : if(mode==0) return(bt_str);¢Ò 89 : print(bt_str);¢Ò 90 : if(mode>1) print();¢Ò 91 : return;¢Ò 92 : }¢Ò 93 : ¢Ò 94 : BACK_BUTTON= "<br><br>" ~ button(0, "history.back()", "µÚ·Î°¡±â","width:60");¢Ò 95 : ¢Ò 96 : free mysql; // mysql pointer¢Ò 97 : int mysql_connected= 0; // mysql ¿¬°á flag¢Ò 98 : vlock mysql_connected; // Àбâ Àü¿ë ¼³Á¤¢Ò 99 : ¢Ò 100 : free getrecord_result= MYSQL_ERR, getrecord_recnt= 0, getrecord_prefix;¢Ò 101 : vlock getrecord_result, getrecord_recnt;¢Ò 102 : ¢Ò 103 : function mysql_free_getrecord()¢Ò 104 : {¢Ò 105 : if(getrecord_result!=MYSQL_ERR)¢Ò 106 : {¢Ò 107 : mysql_free_result(getrecord_result);¢Ò 108 : vunlock getrecord_result;¢Ò 109 : getrecord_result= MYSQL_ERR;¢Ò 110 : vlock getrecord_result;¢Ò 111 : }¢Ò 112 : }¢Ò 113 : ¢Ò 114 : int no_disconnect= 0;¢Ò 115 : ¢Ò 116 : function disconnect()¢Ò 117 : {¢Ò 118 : if(no_disconnect==1) return;¢Ò 119 : if(getrecord_result!=MYSQL_ERR) mysql_free_getrecord();¢Ò 120 : if(mysql_connected==1)¢Ò 121 : {¢Ò 122 : mysql_close(mysql);¢Ò 123 : vunlock mysql_connected;¢Ò 124 : mysql_connected= 0;¢Ò 125 : vlock mysql_connected;¢Ò 126 : }¢Ò 127 : return;¢Ò 128 : }¢Ò 129 : ¢Ò 130 : function int mysql_dbselect(string dbname)¢Ò 131 : {¢Ò 132 : if(dbname=="") dbname= mydb;¢Ò 133 : if(mysql_select_db(mysql, dbname)==MYSQL_ERR)¢Ò 134 : {¢Ò 135 : MSG1= "MySQL µ¥ÀÌÅͺ£À̽º ¼±Åà ¿À·ù";¢Ò 136 : MSG2= dbname ~ " µ¥ÀÌÅͺ£À̽º°¡ ¾ø°Å³ª ³»ºÎ ¿À·ùÀÔ´Ï´Ù." ~ BACK_BUTTON;¢Ò 137 : formdump(message_form);¢Ò 138 : return(MYSQL_ERR);¢Ò 139 : }¢Ò 140 : return(OK);¢Ò 141 : }¢Ò 142 : ¢Ò 143 : function int mysql_connection(string dbname)¢Ò 144 : {¢Ò 145 : if(mysql_connected==1) disconnect();¢Ò 146 : mysql= mysql_connect(myhost, myuser, mypass); // MySQL ¼¹ö ¿¬°á¢Ò 147 : if(mysql==MYSQL_ERR)¢Ò 148 : {¢Ò 149 : MSG1= "MySQL ¼¹ö ¿¬°á ¿À·ù";¢Ò 150 : MSG2= "MySQL ¼¹ö°¡ ÀÛµ¿ÇÏÁö ¾Ê°Å³ª MySQL »ç¿ëÀÚ ID ¶Ç´Â"¢Ò 151 : ~ " ¾ÏÈ£°¡ À߸øµÇ¾ú½À´Ï´Ù." ~ BACK_BUTTON;¢Ò 152 : formdump(message_form);¢Ò 153 : return(MYSQL_ERR);¢Ò 154 : }¢Ò 155 : if(mysql_dbselect(dbname)==MYSQL_ERR)¢Ò 156 : {¢Ò 157 : mysql_close(mysql);¢Ò 158 : return(MYSQL_ERR);¢Ò 159 : }¢Ò 160 : vunlock mysql_connected;¢Ò 161 : mysql_connected= 1;¢Ò 162 : vlock mysql_connected;¢Ò 163 : return(OK);¢Ò 164 : }¢Ò 165 : ¢Ò 166 : // rtvalue=mysql_getrecord(qstr, prefix) ÇÔ¼ö´Â óÀ½ ÇÑ °³ÀÇ ·¹Äڵ带 ¾ò¾î¿È¢Ò 167 : // qstr= query string¢Ò 168 : // prefix= db Çʵ庯¼öÀÇ Á¢µÎ»ç¢Ò 169 : // rtvalue<0 ---> MYSQL_ERR=fetch_row ¿¡·¯, -2=query ¿¡·¯, -3=store result ¿¡·¯¢Ò 170 : // rtvalue>=0 --> ·¹ÄÚµå °¹¼ö¢Ò 171 : ¢Ò 172 : function long mysql_getrecord(string qstr, string prefix)¢Ò 173 : {¢Ò 174 : int rt;¢Ò 175 : ¢Ò 176 : if(mysql_query(mysql, qstr)==MYSQL_ERR) { err_query(); return(-2); }¢Ò 177 : if(getrecord_result!=MYSQL_ERR) mysql_free_getrecord();¢Ò 178 : vunlock getrecord_result;¢Ò 179 : getrecord_result= mysql_store_result(mysql);¢Ò 180 : vlock getrecord_result;¢Ò 181 : if(getrecord_result==MYSQL_ERR) { err_store_result(); return(-3); }¢Ò 182 : vunlock getrecord_recnt;¢Ò 183 : getrecord_recnt= mysql_num_rows(getrecord_result);¢Ò 184 : if(getrecord_recnt>0)¢Ò 185 : {¢Ò 186 : getrecord_prefix= prefix;¢Ò 187 : rt= mysql_fetch_global(getrecord_result, getrecord_prefix);¢Ò 188 : if(rt==MYSQL_ERR) { err_fetch_row(); getrecord_recnt= MYSQL_ERR; }¢Ò 189 : }¢Ò 190 : vlock getrecord_recnt;¢Ò 191 : return(getrecord_recnt);¢Ò 192 : }¢Ò 193 : ¢Ò 194 : // mysql_nextrecord() ÇÔ¼ö´Â mysql_getrecord()ÈÄÀÇ ·¹Äڵ带 Çϳª¾¿ ¾ò¾î¿È¢Ò 195 : // rtvalue<0 ---> MYSQL_ERR=fetch_row ¿¡·¯¢Ò 196 : // rtvalue>=0 --> ·¹ÄÚµå °¹¼ö¢Ò 197 : ¢Ò 198 : function int mysql_nextrecord()¢Ò 199 : {¢Ò 200 : int rt;¢Ò 201 : ¢Ò 202 : if(getrecord_recnt>0)¢Ò 203 : {¢Ò 204 : vunlock getrecord_recnt;¢Ò 205 : --getrecord_recnt;¢Ò 206 : vlock getrecord_recnt;¢Ò 207 : }¢Ò 208 : if(getrecord_recnt<=0) return(0);¢Ò 209 : rt= mysql_fetch_global(getrecord_result, getrecord_prefix);¢Ò 210 : if(rt==MYSQL_ERR) { err_fetch_row(); return(MYSQL_ERR); }¢Ò 211 : return(getrecord_recnt);¢Ò 212 : }¢Ò 213 : ¢Ò 214 : function err_form(string formname)¢Ò 215 : {¢Ò 216 : MSG1= formname ~ " Æû °³¹æ ¿À·ù";¢Ò 217 : MSG2= formname ~ " ÆÄÀÏÀ» °³¹æÇÒ ¼ö ¾ø½À´Ï´Ù." ~ BACK_BUTTON;¢Ò 218 : formdump(message_form);¢Ò 219 : return disconnect();¢Ò 220 : }¢Ò 221 : ¢Ò 222 : function err_query()¢Ò 223 : {¢Ò 224 : MSG1= "MySQL query ¿À·ù";¢Ò 225 : MSG2= "MySQL query error!<br><font color=#f00000>QUERY:</font> "¢Ò 226 : ~ qstr ~ "<br>" ~ BACK_BUTTON;¢Ò 227 : formdump(message_form);¢Ò 228 : return disconnect();¢Ò 229 : }¢Ò 230 : ¢Ò 231 : function err_store_result()¢Ò 232 : {¢Ò 233 : MSG1= "MySQL store result ¿À·ù";¢Ò 234 : MSG2= "¸Þ¸ð¸®°¡ ºÎÁ·Çϰųª MySQL¿¡ ¹®Á¦°¡ ¹ß»ýÇß½À´Ï´Ù." ~ BACK_BUTTON;¢Ò 235 : formdump(message_form);¢Ò 236 : return disconnect();¢Ò 237 : }¢Ò 238 : ¢Ò 239 : function err_fetch_row()¢Ò 240 : {¢Ò 241 : MSG1= "MySQL fetch row ¿À·ù";¢Ò 242 : MSG2= "¸Þ¸ð¸®°¡ ºÎÁ·Çϰųª MySQL¿¡ ¹®Á¦°¡ ¹ß»ýÇß½À´Ï´Ù." ~ BACK_BUTTON;¢Ò 243 : formdump(message_form);¢Ò 244 : return disconnect();¢Ò 245 : }¢Ò 246 : ¢Ò 247 : function long get_recount(string table, string cond)¢Ò 248 : {¢Ò 249 : string qstr;¢Ò 250 : free r, myresult;¢Ò 251 : ¢Ò 252 : qstr= "select count(*) from " ~ table;¢Ò 253 : if(cond!="") qstr~= " where " ~ cond;¢Ò 254 : if(mysql_query(mysql, qstr)==MYSQL_ERR) return(-1);¢Ò 255 : myresult= mysql_store_result(mysql);¢Ò 256 : if(myresult==MYSQL_ERR) return(-2);¢Ò 257 : r= mysql_fetch_row(myresult);¢Ò 258 : mysql_free_result(myresult);¢Ò 259 : return(r[0]);¢Ò 260 : }¢Ò 261 : ¢Ò 262 : function long get_maximum(string table, string field, string cond)¢Ò 263 : {¢Ò 264 : string qstr;¢Ò 265 : free r, myresult;¢Ò 266 : ¢Ò 267 : qstr= "select max(" ~ field ~ ") from " ~ table;¢Ò 268 : if(cond!="") qstr~= " where " ~ cond;¢Ò 269 : if(mysql_query(mysql, qstr)==MYSQL_ERR) return(-1);¢Ò 270 : myresult= mysql_store_result(mysql);¢Ò 271 : if(myresult==MYSQL_ERR) return(-2);¢Ò 272 : r= mysql_fetch_row(myresult);¢Ò 273 : mysql_free_result(myresult);¢Ò 274 : return(r[0]);¢Ò 275 : }¢Ò 276 : ¢Ò 277 : function send_cookie(string id, string pass, string email, string name)¢Ò 278 : {¢Ò 279 : int r;¢Ò 280 : ¢Ò 281 : if(ckid=="" && id=="" && ckemail==email && ckname==name) return;¢Ò 282 : usinfo= "ckid="~id~"&ckpass="~pass~"&ckemail="~email~"&ckname="~name¢Ò 283 : ~ "&ckdate="~date(0)~"&cktime="~time(0);¢Ò 284 : usinfo= encode(usinfo, encodekey(), "", decode_variable);¢Ò 285 : if(usinfo!="")¢Ò 286 : {¢Ò 287 : randomize();¢Ò 288 : r= rand(3);¢Ò 289 : if(r==0) r= rand(10) + '0';¢Ò 290 : else if(r==1) r= rand(26) + 'A';¢Ò 291 : else r= rand(26) + 'a';¢Ò 292 : ch= chr(r);¢Ò 293 : usinfo= left(usinfo, cookie_garbage)~ch~mid(usinfo, cookie_garbage+1);¢Ò 294 : }¢Ò 295 : setcookie("usinfo", usinfo);¢Ò 296 : return;¢Ò 297 : }¢Ò 298 : ¢Ò 299 : function replace_location(string url)¢Ò 300 : {¢Ò 301 : print("<html><head><meta http-equiv='refresh' content=\"0; url='",¢Ò 302 : url, "'\"></head></html>");¢Ò 303 : return;¢Ò 304 : }¢Ò 305 : ¢Ò 306 : function string bytes_str(double size, int lowpoint)¢Ò 307 : {¢Ò 308 : string str_num, unit;¢Ò 309 : ¢Ò 310 : unit= " bytes";¢Ò 311 : if(size>=1024) size= size / 1024.0, unit= " Kbytes";¢Ò 312 : if(size>=1024) size= size / 1024.0, unit= " Mbytes";¢Ò 313 : if(size>=1024) size= size / 1024.0, unit= " Gbytes";¢Ò 314 : strnum= size;¢Ò 315 : pos= strfind(strnum, ".");¢Ò 316 : if(pos>0)¢Ò 317 : {¢Ò 318 : if(lowpoint<1) strnum= left(strnum, pos-1);¢Ò 319 : else¢Ò 320 : {¢Ò 321 : strnum= left(strnum, pos+lowpoint);¢Ò 322 : while(right(strnum,1)=="0") strnum= left(strnum, len(strnum)-1);¢Ò 323 : }¢Ò 324 : }¢Ò 325 : return(strnum ~ unit);¢Ò 326 : }¢Ò 327 : ¢Ò 328 : max_skin_cnt= 30;¢Ò 329 : skin_base_dir= "skin/";¢Ò 330 : string skin_dir[max_skin_cnt], skin_desc[max_skin_cnt];¢Ò 331 : skin_cnt= 0;¢Ò 332 : fp= fopen(skin_base_dir~"skin.dat", "r");¢Ò 333 : if(fp==FILE_OPEN_ERR)¢Ò 334 : {¢Ò 335 : MSG1= "½ºÅ² Á¤º¸ ÆÄÀÏ ¿À·ù";¢Ò 336 : MSG2= "½ºÅ² Á¤º¸ ÆÄÀÏ(skin/skin.dat)À» ÀÐÀ» ¼ö ¾ø½À´Ï´Ù." ~ BACK_BUTTON;¢Ò 337 : formdump(message_form);¢Ò 338 : return(FAIL);¢Ò 339 : }¢Ò 340 : while(skin_cnt<max_skin_cnt)¢Ò 341 : {¢Ò 342 : line= finput(fp);¢Ò 343 : if(flastch()==EOF) break;¢Ò 344 : pos= strfind(line, ",");¢Ò 345 : if(pos==0) continue;¢Ò 346 : dir= lrtrim(left(line, pos-1));¢Ò 347 : desc= lrtrim(mid(line, pos+1));¢Ò 348 : if(fexist(skin_base_dir~dir) && desc!="")¢Ò 349 : {¢Ò 350 : skin_dir[skin_cnt]= dir;¢Ò 351 : skin_desc[skin_cnt]= desc;¢Ò 352 : skin_cnt++;¢Ò 353 : }¢Ò 354 : }¢Ò 355 : if(skin_cnt==0)¢Ò 356 : {¢Ò 357 : MSG1= "½ºÅ² Á¤º¸ ÆÄÀÏ ¿À·ù";¢Ò 358 : MSG2= "½ºÅ² Á¤º¸°¡ ¾ø½À´Ï´Ù." ~ BACK_BUTTON;¢Ò 359 : formdump(message_form);¢Ò 360 : return(FAIL);¢Ò 361 : }¢Ò 362 : ¢Ò 363 : if(break_on==-1) return(OK); // board ¼³Á¤ÀÌ ÇÊ¿ä¾ø´Â °æ¿ì¢Ò 364 : ¢Ò 365 : if(db=="") not_exist= 1;¢Ò 366 : else¢Ò 367 : {¢Ò 368 : conf_file= "conf/" ~ db ~ ".conf";¢Ò 369 : if(!fexist(conf_file)) not_exist= 2;¢Ò 370 : else¢Ò 371 : {¢Ò 372 : not_exist= 0;¢Ò 373 : include(conf_file, -1); // ȯ°æÆÄÀÏ ¼Õ»ó½Ã ¿¡·¯ ó¸® ÇÏÁö ¾ÊÀ½¢Ò 374 : }¢Ò 375 : }¢Ò 376 : if(not_exist!=0)¢Ò 377 : {¢Ò 378 : MSG1= prg_title ~ " ¸íĪ ¿À·ù";¢Ò 379 : if(not_exist==1) MSG2= prg_title ~ " À̸§ÀÌ ¾ø½À´Ï´Ù!";¢Ò 380 : else MSG2= "<font color=#0000c0>" ~ db ~ "</font> " ~ prg_title¢Ò 381 : ~ "ÀÌ ¸¸µé¾îÁöÁö ¾Ê¾Ò°Å³ª ȯ°æÆÄÀÏÀÌ ¾ø½À´Ï´Ù!";¢Ò 382 : MSG2~= BACK_BUTTON;¢Ò 383 : formdump(message_form);¢Ò 384 : return disconnect();¢Ò 385 : }¢Ò 386 : if(break_on!=-2)¢Ò 387 : { // ·Î±×ÀÎÀÌ ¾Æ´Ò¶§ ¾Æ·¡ ºí·°À» ¼öÇà¢Ò 388 : if(include("include/chkuser.sub")!=OK) return(FAIL);¢Ò 389 : if(mysql_connection("")==MYSQL_ERR) return(FAIL);¢Ò 390 : }¢Ò 391 : if(sk=="") sk= skin_code;¢Ò 392 : if(sk<0) sk= 0; else if(sk>=skin_cnt) sk= skin_cnt - 1;¢Ò 393 : skin= skin_base_dir ~ skin_dir[sk] ~ "/";¢Ò 394 : if(ignore_center==1) scenter= ecenter= "";¢Ò 395 : else scenter= "<center>", ecenter= "</center>";¢Ò 396 : if(board_background=="") background= "bgcolor='" ~ board_bgcolor ~ "'";¢Ò 397 : else background= "background='" ~ board_background ~ "'";¢Ò 398 : if(write_only_admin!=0 && us_class!="A") read_only= 1; else read_only= 0;¢Ò 399 : if(view_board==0) viewboard_flag= ""; else viewboard_flag= "1";¢Ò 400 : file_upload_flag= "";¢Ò 401 : if(file_upload>0)¢Ò 402 : {¢Ò 403 : if(file_upload==1 || us_class=="A") file_upload_flag= "1";¢Ò 404 : }¢Ò 405 : max_upload_bytes= max_upload_ksize * 1024;¢Ò 406 : pagerec= list_rec;¢Ò 407 : if(pagerec<5) pagerec= 5;¢Ò 408 : else if(pagerec>30) pagerec= 30;¢Ò 409 : if(board_htflag==1) system_htskip="1"; else system_htskip= "";¢Ò 410 : if(max_upload_bytes<1) upload_limit= "";¢Ò 411 : else upload_limit= "¡Ø ÆÄÀÏ Àü¼Û ÃÖ´ë ¿ë·®ÀÌ <font color=#f00000>"¢Ò 412 : ~ bytes_str(max_upload_bytes,2)¢Ò 413 : ~ "</font>·Î Á¦ÇѵǾî ÀÖ½À´Ï´Ù!<br>";¢Ò 414 : return(OK);¢Ò 415 : ¢Ò |
||||
|