<?php
// session_save_path("/tmp");
session_start();
/*
### webboard.php Version : 2.0
Public : Mr.Burin Rujjanapan
E-mail : webmaster@thaiall.com
Last Modified : 2557-02-08 Created : 2547-12-01
Download : http://www.thaiall.com/source
### รายละเอียด (Detail)
1. โปรแกรมนี้ชื่ออะไรก็ได้ เช่น webboard.php board.php doc.php news.php แต่ให้นามสกุลเป็น .php
2. ให้ผู้ดูแลระบบเปลี่ยนรหัสผ่าน เป็นอย่างอื่นทันที
ของ $webmaster_password เดิมคือ thaiabc
ของ $edit_topic_password เดิมคือ thaiall
เพราะนักเรียนอาจเข้ามาใช้รหัสผ่าน ลบหัวข้อ หรือแก้ไขหัวข้อได้
3. กำหนด $program_type และ $dataroom ตามที่ต้องการ
4. โปรแกรมประกอบด้วย 3 ส่วน คือ 1)Setting 2)Main และ 3)Function
5. ทดสอบกับ xampp แล้วใช้งานได้ทันทีไม่ต้องปรับแต่งเลย
แต่ต้องแก้ไข DOCUMENTROOT และ <DIRECTORY "..">
### ปัญหา และวิธีแก้ไข (Problem and Solution)
กรณีที่ 1 (About installation)
- เปิด webboard.php ครั้งแรก คือ การติดตั้ง
- ปัญหาที่อาจเกิด คือ Permission Denied ในการสร้าง Folder สำหรับ Linux
- ท่านต้องกำหนด 777 ให้กับห้องที่เก็บโปรแกรมนี้
- ท่านต้องสร้างห้อง wdata ในห้องที่เก็บโปรแกรม และกำหนดเป็น 777
กรณีที่ 2 (Just information)
- แค่ run โปรแกรมก็จะติดตั้งให้ และใช้งานได้ทันที (ทดสอบกับ XP Server)
- ไม่พบปัญหา แต่ท่านต้องเปิดโปรแกรมมาแก้ไขค่าตามต้องการ เช่น รหัสลบหัวข้อ
*/
#########################################################################
### 1) Setting Section
### Setting Group 1 : ค่าสำคัญที่ผู้ดูแลต้องเข้าใจ
$webmaster_password = "thaiabc"; // รหัสนี้ใช้ลบหัวข้อ
$edit_topic_password = "thaiall"; // รหัสนี้ใช้แก้ไขหัวข้อ
$program_type = "board";
// board อ่านได้เขียนได้
// news ไม่แสดง link ให้ตั้งหัวข้อกันเอง
// intranet ความคุมการเข้าถึงด้วย IP address
// password ต้องกรอก $read_password จึงจะอ่านได้ (คุมการเขียนด้วยตัวแปร $add_keyword และ $add_text)
// intrapass เป็นทั้ง intranet และมีระบบ password (ถือเป็น secure board)
// puser ต้องเป็นสมาชิกจึงจะ post ได้ สามารถสร้าง user ในตัวแปร $user อยู่ใน Group 4
// ถ้าไม่อยากให้ตอบ ต้องแก้ตัวแปร $can_reply ให้เป็น "0" ถ้าใช้ร่วมกับ news จะเป็น readonly
if ($program_type == "board") $bgcolor="ddffff";
if ($program_type == "news") $bgcolor="ddffdd";
if ($program_type == "intranet") $bgcolor="ffddff";
if ($program_type == "password") $bgcolor="ddddff";
if ($program_type == "intrapass") $bgcolor="ffdddd";
if ($program_type == "puser") $bgcolor="ffffdd";
if (!isset($bgcolor)) $bgcolor="ddffdd";
### Setting Group 2 : ค่าทั่วไป
$dataroom = "wdata"; // ห้องเก็บข้อมูล
$max_file_size = 2097152; // 2 MB
$max_note = 204800; // 200 KB
$max_text = 1024; // size of text (title + name + email)
$titleperpage = 10; // จำนวนหัวข้อต่อหน้า
$allow_extension = "html,gif,jpg,png,txt,dbf,dat,class,swf,rar,zip,ppt,doc,xls,mdb,pdf";
#
$title = "กระดานแสดงความคิดเห็น";
$footer = "พัฒนาเพิ่มเติมโดย : thaiall.com [ ไอพีของท่านคือ ". $_SERVER["REMOTE_ADDR"] . " ]";
$footer .= "<br>ปรับปรุง : 8 กุมภาพันธ์ 2557 รุ่น : 2.0";
$header = "<center><font size=6>$title</font><br>";
$header_reply = '<b>ขอเชิญร่วมแสดงความคิดเห็น<br>(Welcome your good idea)</b>';
$header_add_topic = 'Web board เป็นที่แลกเปลี่ยนความคิดเห็นของพวกเราทุกคน<br>ขอความกรุณาใช้ถ้อยคำสุภาพ และแสดงออกในเชิงสร้างสรรค์ ที่มีเหตุผลด้วย<br><font color=red>ขอสงวนสิทธิ์ ในการแก้ไข ตัดรายการ หรือข้อความ <b>ที่ไม่เหมาะสม</b> โดยผู้ดูแลระบบ</font>';
$option_text = "<font color=blue>[dd] หรือ [b] .. [/b] หรือ [u] .. [/u]<br>[img]<font color=black>http://..../x.jpg</font>[/img]<br>[url]<font color=black>http://..../x.htm</font>[/url]</font>";
#
$file_header = ""; // ถ้ากำหนดชื่อแฟ้ม เช่น h.php จะอ่านข้อมูลในแฟ้มมาเป็น header
$file_footer = ""; // ถ้ากำหนดชื่อแฟ้ม เช่น f.php จะอ่านข้อมูลในแฟ้มมาเป็น footer
// for add-on สำหรับนำไป add-on ในโปรแกรมอื่น
$show_header = "yes"; // no = ไม่แสดง
$show_footer = "yes"; // no = ไม่แสดง
$show_writer = "yes"; // no = ไม่แสดง
$show_counter = "yes"; // no = ไม่แสดง
$can_reply = "yes"; // no = ไม่รับการตอบหัวข้อ yes:ยอมให้มีการตอบหัวข้อ
//
$have_header = "yes"; // writer header of html
$show_header_tb= "yes"; // no = ไม่แสดง
$show_no = "yes"; // no = ไม่แสดง
$can_search = "yes"; // no = ไม่แสดง
$icon_file = "iticon.gif"; // ถ้ามีแฟ้มชื่อนี้ ก็จะแสดง icon หน้าหัวข้อ
$table_width = "700"; // 700
### Setting Group 3 : สำหรับการป้องกันการเพิ่มหัวข้อ และทำงานร่วมกันถ้า $program_type = "news"
$add_keyword = "add_topic"; // การเปลี่ยนค่านี้จะทำให้ผู้ใช้เพิ่มหัวข้อไม่ได้ ถ้าไม่ทำ link ไว้
$add_text = "<center><a href='?action=".$add_keyword."'>ตั้งหัวข้อ หรือเปิดประเด็นใหม่</a></center>";
### Setting Group 4 : เก็บอาร์เรย์ของตัวแปรต่าง ๆ
# ถ้า $program_type = "intranet" จะตรวจสอบ ip ของเครื่องลูก ถ้าไม่มีใน array จะเข้า board ไม่ได้
$intranet = array("192.168.0", "202.29.78", "10.0.0", "127.0.0");
# ถ้า $program_type = "password" จะตรวจสอบ รหัสผ่านก่อนเข้า board มีให้หลายรหัส เพราะอาจมีผู้ใช้หลายกลุ่ม
$password_ar = array("thaiabc", "yoyo", "pizza");
# ถ้าไม่กำหนด $program_type = "puser" ตัวแปร $user ก็จะไม่ได้ใช้ประโยชน์
# $user["username"] = "password"
$user["boy"] = "girl";
$user["thaiall"] = "thaiabc";
$user["จักรพงษ์"] = "ศุขวิทย์"; // อ.ท่านนี้ให้หลวงพ่อเงิน และทำให้ผมเพิ่ม option นี้
$user["เอ บี"] = "ซี ดี"; // ทดสอบรหัสที่มีช่องไฟ
#########################################################################
### 2) Main Script Section
if ($program_type == "puser") {
if (isset($_POST["puser"]) && isset($user[$_POST["puser"]]) && $user[$_POST["puser"]] == $_POST["ppassword"]) {
$_SESSION['puser'] = $_POST["puser"];
}
if (isset($_POST["logout"])) {
$_SESSION['puser'] = "";
}
}
if ($program_type == "password" || $program_type == "intrapass") {
if (!isset($_SESSION['password'])) {
if (isset($_POST['password'])) {
if (in_array($_POST['password'], $password_ar)) {
$_SESSION['password'] = $_POST['password'];
} else {
echo '<meta http-equiv=refresh content="5;url=?pg=1">';
echo 'รหัสผ่านไม่ถูกต้อง';
}
} else {
text_header();
echo "<br><br><form action=? method=post>";
echo "<center>Password to access information<br>";
echo "<input name=password type=password>";
echo "<input type=submit value=check name=action></form>";
text_footer();
}
}
}
if ($program_type == "intranet" || $program_type == "intrapass") {
$found_ar = 0;
for($i=0;$i<count($intranet);$i++) {
if (substr($_SERVER["REMOTE_ADDR"],0,strlen($intranet[$i])) == $intranet[$i]) $found_ar=1;
}
if ($found_ar != 1) {
text_header();
echo "<center>IP address ของท่าน ไม่สามารถเข้าใช้โปรแกรมนี้<br>โปรดติดต่อผู้ดูแลระบบ<br>";
echo "เพราะกลุ่ม ip ที่อนุญาต คือ";
for($i=0;$i<count($intranet);$i++) echo "<br>".$intranet[$i];
text_footer();
}
}
# ===============================
if (isset($_GET['reply'])) $reply = $_GET['reply']; else $reply = "";
if (isset($_GET['d'])) $delete = $_GET['d']; else $delete = "";
if (isset($_GET['e'])) $edit = $_GET['e']; else $edit = "";
if (isset($_GET['view'])) $view = $_GET['view']; else $view = "";
if (isset($_GET['secure'])) $secure = $_GET['secure']; else $secure = "";
if (isset($_GET['action'])) $actiong = $_GET['action']; else $actiong = "";
if (isset($_POST['action'])) $actionp = $_POST['action']; else $actionp = "";
# ===============================
if (!file_exists($dataroom."/topic.htm")) startup_firsttime();
elseif ((!isset($_SERVER['QUERY_STRING']) && !isset($_POST['action'])) || isset($_GET['pg']) || isset($_GET['tot'])) list_main();
elseif ($reply <> "") reply_topic();
elseif ($view <> "") view_topic();
elseif ($secure <> "") secure_code_r();
elseif ($delete <> "") delete_topic();
elseif ($edit <> "") edit_topic();
elseif ($actiong == "secure_code") secure_code();
elseif ($actiong == $add_keyword) add_topic();
elseif ($actionp == "send_topic") send_topic();
else list_main(); // echo '<meta http-equiv=refresh content="5;url=?pg=1">';
#########################################################################
### 3) Function Section
function send_topic() {
text_header();
global $allow_extension,$max_file_size,$max_note,$max_text,$dataroom,$last_ext,$program_type,$add_keyword,$table_width;
# -------
$found_attach_ok = 0;
$ar_last_ext = explode(".",$_FILES['upload']['name']);
if (count($ar_last_ext) > 1) {
$last_ext = $ar_last_ext[count($ar_last_ext) - 1];
$ar = explode(",",$allow_extension);
$found_ext = 0;
for ($i=0;$i<count($ar);$i++){
if (strtolower($last_ext) == strtolower($ar[$i])) { $found_ext = 1; }
}
if ($found_ext == 1) {
$size = $_FILES['upload']['size'];
// == upload process ==
if ($size > 0 && $size < $max_file_size) {
$found_attach_ok = 1;
} else {
$found_attach_ok = 9;
echo "<center><table width=". $table_width ." bgcolor=yellow align=center><td><center>ส่งแฟ้มเข้า server ไม่ได้ ขนาดแฟ้มอาจเกิดที่กำหนด (<font color=blue>$"."max_file_size = ".$max_file_size.")</font><br>";
echo "แฟ้มของคุณมีขนาด <b>$size</b> Byte และ <font color=red>มีขนาดไม่เหมาะกับระบบของเรา</td></table>";
}
} else {
$found_attach_ok = 9;
echo "<center><table width=". $table_width ." bgcolor=yellow align=center><td><center>ไม่อนุญาตแฟ้มที่มีนามสกุล <font size=6>$last_ext</font> อันมีเหตุผลมาจากความปลอดภัย<br>";
echo "<font color=red>ถ้าท่านเห็นว่าแฟ้มขอท่านไม่น่ามีปัญหาเรื่องความปลอดภัย <b>โปรดติดต่อ webmaster</b> เพื่อรับการอนุญาต</td></table>";
}
}
# -------
$textlen = strlen($_POST['qtitle']) + strlen($_POST['qname']) + strlen($_POST['qemail']);
if (($_POST['qtitle'] == "") || ($_POST['qnote'] == "") || ($_POST['qname'] == "") ||
$found_attach_ok == 9 || strlen($_POST['qnote']) > $max_note || $textlen > $max_text) {
echo "<b> พบข้อผิดพลาด </b> : คุณป้อนข้อมูลไม่ครบถ้วน หรือแฟ้มมีขนาดใหญ่เกินไป หรือนามสกุลของแฟ้มไม่ถูกต้อง<br>";
echo '<meta http-equiv=refresh content="5;url=?pg=1">';
} else {
$file=file ($dataroom."/topic.htm");
$k=count($file);
$key=ord(substr(crypt($k,$k),-1,1)) . ord(substr(crypt($k,$k),-2,1));
if ($key == $_POST['securecode']) {
$qtitle= $_POST['qtitle'];
$qtitle = str_replace("?","?",$qtitle);
$qnote= $_POST['qnote'];
$qnote = str_replace("?","?",$qnote);
$qnote= str_replace(chr(92),"#92;",$qnote);
$qnote= str_replace("[dd]","<dd>",$qnote);
$qnote= str_replace("[u]","<u>",$qnote);
$qnote= str_replace("[/u]","</u>",$qnote);
$qnote= str_replace("[b]","<b>",$qnote);
$qnote= str_replace("[/b]","</b>",$qnote);
$qnote= str_replace("[img]","<img src=",$qnote);
$qnote= str_replace("[/img]",">",$qnote);
$qnote= str_replace("[url]","[ <a href=",$qnote);
$qnote= str_replace("[/url]",">คลิ๊กที่นี่ - เพื่อเปิดแหล่งข้อมูล</a> ]",$qnote);
$qnote= str_replace("#92;","\",$qnote);
$qname= $_POST['qname'];
$qname = str_replace("?","?",$qname);
$qemail= $_POST['qemail'];
$qemail = str_replace("?","?",$qemail);
$qnote= nl2br($qnote);
$qtitle= stripslashes($qtitle);
$qnote= stripslashes($qnote);
$qname= stripslashes($qname);
$qemail= stripslashes($qemail);
$file=fopen($dataroom."/number.txt","rt");
$num=fgets($file,10);
fclose ($file);
$num++;
$file=fopen($dataroom."/number.txt","w");
fputs($file,$num);
fclose($file);
$date=Date("h:ia (j/m/y)");
$attach_file = $num .".". strtolower($last_ext);
$file=fopen("$dataroom/$num.htm" , "w");
fputs ($file , "<center><a href='?'>กลับหน้าหลัก</a>");
fputs ($file , "<table width=". $table_width ." border=0 bgcolor=#aabbdd><tr><td><font color=white size=4>$qtitle</td></tr></table>");
fputs ($file , "<table width=". $table_width ." border=0 bgcolor=#aabbdd><tr><td bgcolor=white>");
if ($found_attach_ok == 1) {
fputs ($file , "ดาวน์โหลด : <a href=$dataroom/$attach_file>$attach_file</a><br>");
if (strtolower($last_ext) == "jpg" || strtolower($last_ext) == "gif" || strtolower($last_ext) == "png") { fputs ($file , "<img src=$dataroom/$attach_file><br>"); }
}
fputs($file , "$qnote<br></td></tr>");
fputs($file , "<tr><td align=right bgcolor=#dddddd><b>โดย</b> : $qname <a href=mailto:$qemail>$qemail</a><a title='". $_SERVER["REMOTE_ADDR"] . "'>.</a> ");
fputs($file , " $date</font></td></tr></table></center>");
fclose($file);
$file=fopen("$dataroom/$num.reply" , "w");
fputs($file , "0");
fclose($file);
$file=fopen($dataroom."/topic.htm" , "a");
fputs ( $file , "<a href='?view=$num'>$qtitle</a>");
if ($found_attach_ok == 1) fputs ($file , " [<a href=$dataroom/$attach_file>+</a>]");
fputs ( $file , "</td><td align=center>$qname<br><font color=#669999>$date </font></td>\n");
fclose ($file);
if ($found_attach_ok == 1) copy($_FILES['upload']['tmp_name'],"$dataroom/$num.". strtolower($last_ext));
echo "<center><table bordercolor=black border=1 cellspacing =0 width=90% bgcolor=#ddffff><tr><td>";
echo "<b>$qtitle</b><br>";
if ($found_attach_ok == 1) echo "ดาวน์โหลด : <a href=$dataroom/$attach_file>$attach_file</a><br>";
if (strtolower($last_ext) == "jpg" || strtolower($last_ext) == "gif" || strtolower($last_ext) == "png") { echo "<img src=$dataroom/$attach_file><br>"; }
echo "<hr color=black>$qnote</td></tr>";
echo "<tr><td align=right bgcolor=#dddddd><b>โดย</b> : $qname <a href=mailto:$qemail>$qemail</a><a title='". $_SERVER["REMOTE_ADDR"] . "'>.</a><br>";
echo " $date</font></td></tr></table><br><a href='?'>กลับหน้าหลัก</a> เพื่อดูผลการเพิ่มหัวข้อใหม่</center>";
} else {
echo "<center><font size=4>ไม่พบรหัสลับที่ท่าน ควรป้อนเข้ามาอย่างถูกต้อง<br>ซึ่งแสดงเป็น อักษรขาวบนพื้นสีแดง หรือรหัสลับนั้นหมดอายุ<br>รบกวนช่วยกรอกข้อมูลใหม่ด้วยค่ะ และขออภัยในความไม่สะดวก<br><br><a href='javascript:history.back();' target=_top>กลับไปกรอกข้อมูลใหม่</a>";
if ($program_type <> "news") echo "<form action=? method=get><input type=submit name=action value='".$add_keyword."'></form>";
}
}
}
# ===============================
function add_topic() {
text_header();
global $allow_extension,$program_type,$table_width,$option_text,$header_add_topic;
echo '<center><table width=' . $table_width . '><tr><td align=center>'. $header_add_topic . '</td>
<tr><form enctype="multipart/form-data" action="?" method=post target=_self><td align=center bgcolor=#ffffdd>
<table border=0 cellspacing=0 bgcolor=#dddddd width='. $table_width .'>
<tr><td>หัวข้อ (Subject) </td><td><input name=qtitle size=60 value=""></td></tr>
<tr><td valign=top>รายละเอียด</td><td valign=top><textarea rows=10 cols=90 name=qnote wrap=off>
กรอกข้อมูลที่นี่
[url]http://www.facebook.com/lampangdisaster[/url]
</textarea>
<br>' . $option_text . '</td></tr>
<tr><td>โดย</td>';
if ($program_type <> "puser") {
echo "<td><input name=qname size=50 value=''>*";
} else {
if (isset($_SESSION["puser"])) {
echo "<td bgcolor=#ddffdd><input type=hidden name=qname size=50 value='". $_SESSION["puser"] ."'>";
echo "<b>".$_SESSION["puser"];
}
}
echo '</td></tr>
<tr><td>อีเมล</td><td><input name=qemail size=50></td></tr>
<tr><td valign=top>แนบแฟ้ม (upload)</td><td><input type=file name=upload>
<br>ประเภทของแฟ้มที่อนุญาตให้ upload คือ '.$allow_extension.'
</td></tr>
<tr><td valign=top><hr color=red><img src=?action=secure_code></td><td valign=top><hr color=red><input name=securecode size=10> นำตัวอักษรบนพื้นสีแดงมากรอกในช่องว่างนี้ (Security code)
<font color=gray><br>เพื่อป้องกันการกดซ้ำหลายครั้ง ต่อการส่งข้อมูล 1 ครั้ง</td></tr>
<tr><td colspan=2 align=center><input type=submit name=action value="send_topic">
<input type=reset name=reset value="reset"></td></tr></table>รณรงค์ให้ทุกท่านใช้ชื่อจริง .. เพื่อประโยชน์ในการประสานงาน และรวมกลุ่มในอนาคต</td></table></form>';
}
# ===============================
function view_topic() {
text_header();
global $dataroom,$can_reply,$header_reply,$table_width,$option_text,$allow_extension;
$z = preg_split("/[\s=]+/",$_SERVER['QUERY_STRING']);
if (file_exists("$dataroom/".$z[1].".read")) {
$ar=file("$dataroom/".$z[1].".read");
$file=fopen("$dataroom/".$z[1].".read","w");
fputs($file,$ar[0] + 1);
} else {
$file=fopen("$dataroom/".$z[1].".read","w");
fputs($file,"1");
}
fclose($file);
$z = preg_split("/[\s=]+/",$_SERVER['QUERY_STRING']);
echo "<form enctype='multipart/form-data' method=post action='?reply=". $z[1] ."' target=_top>";
$file = file("$dataroom/".$z[1].".htm");
for ($i=0;$i < count($file); $i++) echo str_replace(chr(9),"<dd>",$file[$i]);
echo '<center>';
if ($can_reply == "yes") {
echo '<br><br><table border=0 cellspacing=0 width='. $table_width .' bgcolor=#dddddd>
<tr bgcolor=#aaaaaa><td valign=top align=center colspan=2>'. $header_reply . '<tr><td valign=top>รายละเอียด</td><td><textarea rows=10 cols=80 name=qnote wrap=off></textarea>
<br>' . $option_text . '</td></tr>
<tr><td>โดย</td><td><input name=qname size=50></td></tr>
<tr><td>อีเมล</td><td><input name=qemail size=50></td></tr>
<tr><td valign=top>แนบแฟ้ม (upload)</td><td><input type=file name=upload>
<br>ประเภทของแฟ้มที่อนุญาตให้ upload คือ '.$allow_extension.'
<tr><td valign=top><hr color=blue><img src=?secure='; echo $z[1]; echo '></td><td><hr color=blue><input name=securecode size=10>นำตัวอักษรบนพื้นสีน้ำเงินมากรอกในช่องว่างนี้ (Security code)</td></tr>
<tr><td colspan=2 align=center><input type=submit name=Submit value="ส่งข้อความ"><input type=Reset name=Reset value=Clear></td></tr>
</table></form>';
}
text_footer();
}
# ===============================
function list_main() {
text_header();
global $can_reply,$title,$add_text,$dataroom,$titleperpage,$program_type,$can_search,$show_no,$icon_file,$show_header_tb,$show_writer,$table_width,$show_counter;
$file=file($dataroom."/topic.htm");
$show=count($file);
$n=$show;
if ($program_type == "puser") {
user_login_form();
} else {
if ($program_type <> "news") echo $add_text;
}
$k="";
if ($can_search == "yes") {
echo "<table align=center><form action=? method=post><td><input size=8 name=keyword value='";
if (isset($_POST['keyword'])) $k=$_POST['keyword'];
echo $k."'><input type=submit value='สืบค้นจากหัวข้อ'></td></form></table>";
}
if (isset($_GET['pg'])) $pg = $_GET['pg']; else $pg = 1;
if (isset($_GET['tot'])) $tot = $_GET['tot']; else $tot = $titleperpage;
$pgcnt = round($n / $tot);
if(($n / $tot) > $pgcnt) { $pgcnt++; }
echo '<base target="_blank">';
if ($show_header_tb=="yes") {
echo "<table align=center width=$table_width bgcolor=#88aabb><td><b><a href='?pg=1'>หน้า</a>: </b>";
for ($i=1;$i<=$pgcnt;$i++) {
echo "<";
if ($pg == $i) { echo "! "; }
echo "a href='?pg=$i'>$i</a>.";
}
echo " <a href='?tot=$n'>ทั้งหมด</a></td><td align=right>($titleperpage หัวข้อ/หน้า)</td></table>";
}
$first = $tot * ($pg - 1) + 1;
$last = $tot * $pg;
echo "<center><table border=0 cellspacing=1 width=$table_width>";
if ($show_header_tb=="yes") {
echo "<tr bgcolor=#aabbcc align=center>";
if ($show_no == "yes") echo "<td width=30>ลำดับ</td>";
echo "<td>หัวข้อ (Subject)</td>";
if ($show_writer=="yes") echo "<td width=150>ชื่อผู้ตั้งหัวข้อ<br>เวลา และวันที่</td>";
if ($show_counter=="yes") {
echo "<td width=80>จำนวนที่<br>";
if ($can_reply == "yes") echo "เขียน/";
echo "อ่าน</td>";
}
echo "</tr>";
}
for ($i=$show - 1; $i>=0; $i--) {
$n--;
$chkline = $show - $i;
if (strlen($k) > 0) if (strlen(strpos($file[$i], $k)) == 0) continue;
if (($chkline >= $first && $chkline <= $last) || strlen($k) > 0) {
$z = preg_split("/[\s?]+/",$file[$i]);
$z = preg_split("/[\s']+/",$z[2]);
$z = preg_split("/[\s=]+/",$z[0]);
if (file_exists("$dataroom/$z[1].reply")) {
$DATA=fopen("$dataroom/$z[1].reply" , "r");
$num=fgets($DATA,3);
if (strlen($k) > 0) echo "<tr bgcolor=#ffffdd>"; else
if (($i % 2) == 0) echo "<tr bgcolor=#dddddd>"; else echo "<tr bgcolor=white>";
if ($show_no == "yes") echo "<td align=right>".($i + 1)."</td>";
if (file_exists($icon_file)) echo "<td><img src=$icon_file>"; else echo "<td>";
$title_writer = explode('</td><td align=center>',$file[$i]);
echo $title_writer[0];
if ($show_writer=="yes") echo "<td align=center>".$title_writer[1];
if ($show_counter=="yes") {
echo "</td><td align=center>";
if ($can_reply == "yes") {
if ($num > 5) echo "<font color=blue>$num</font>/"; else echo $num."/";
}
if (file_exists("$dataroom/$z[1].read")) {
$ar=file("$dataroom/$z[1].read");
if ($ar[0] > 20) echo "<font color=blue>$ar[0]</font>"; else echo "$ar[0]";
}
}
echo "<a href='?d=".$z[1]."'>.</a><a href='?e=".$z[1]."'>.</a></td></tr>\n";
fclose ($DATA);
}
}
}
echo "</table>";
text_footer();
}
# ===============================
function reply_topic() {
text_header();
global $dataroom,$table_width,$allow_extension;
$z = preg_split("/[\s=]+/",$_SERVER['QUERY_STRING']);
# $k=filesize("$dataroom/".$z[1].".htm");
# $k=count($file) + $z[1];
# $k=fileatime("$dataroom/".$z[1].".htm") * $z[1] + filesize("$dataroom/".$z[1].".htm");
$k=fileatime("$dataroom/".$z[1].".htm") * filesize("$dataroom/".$z[1].".htm");
$key=ord(substr(crypt($k,$k),-1,1)) . ord(substr(crypt($k,$k),-2,1));
if ((strlen($_POST['qnote']) < 5) || (strlen($_POST['qname']) < 5) || ($key <> $_POST['securecode'])) {
echo "<center><br><b>ข้อมูลอาจไม่ครบ หรือ Security code อาจผิดก็ได้<br>กรุณากรอกข้อมูลใหม่ด้วยค่ะ</b></center>";
} else {
$qnote= $_POST['qnote'];
$qnote= str_replace("?","?",$qnote);
$qnote= str_replace(chr(92),"#92;",$qnote);
$qnote= str_replace("[img]","<img src=",$qnote);
$qnote= str_replace("[/img]",">",$qnote);
$qnote= str_replace("[url]","[ <a href=",$qnote);
$qnote= str_replace("[/url]",">คลิ๊กที่นี่ - เพื่อเปิดแหล่งข้อมูล</a> ]",$qnote);
$qnote= str_replace("#92;","\",$qnote);
$qname= $_POST['qname'];
$qname = str_replace("?","?",$qname);
$qemail= $_POST['qemail'];
$qemail = str_replace("?","?",$qemail);
$qnote= nl2br ($qnote);
$qnote= stripslashes($qnote);
$qname= stripslashes($qname);
$qemail= stripslashes($qemail);
$date=date("h:ia (j/m/y)");
#
$file =fopen("$dataroom/". $z[1] .".reply" , "r");
$num=fgets($file,10);
fclose ($file);
$num++;
$file=fopen("$dataroom/". $z[1] .".reply" , "w");
fputs($file,$num);
fclose($file);
#
# upload reply
$ar_last_ext = explode(".",$_FILES['upload']['name']);
$found_ext = 0;
if (count($ar_last_ext) > 1) {
$last_ext = $ar_last_ext[count($ar_last_ext) - 1];
$ar = explode(",",$allow_extension);
for ($i=0;$i<count($ar);$i++){
if (strtolower($last_ext) == strtolower($ar[$i])) { $found_ext = 1; }
}
if ($found_ext == 1) {
$attach_file = $z[1] ."_". $num .".". strtolower($last_ext);
copy($_FILES['upload']['tmp_name'],"$dataroom/$attach_file");
}
}
#
$file=fopen("$dataroom/".$z[1].".htm", "at");
fputs($file,"<br><table border=0 cellspacing =0 width=" . $table_width . " bgcolor=#ffffdd align=center><tr><td valign=top align=center width=100 bgcolor=#dddddd>");
fputs($file,"ความเห็นที่<br>".$num);
fputs($file,"</td><td valign=top width=600>");
if ($found_ext == 1) {
fputs ($file , "ดาวน์โหลด : <a href=$dataroom/$attach_file>$attach_file</a><br>");
if (strtolower($last_ext) == "jpg" || strtolower($last_ext) == "gif" || strtolower($last_ext) == "png") { fputs ($file , "<img src=$dataroom/$attach_file><br>"); }
}
fputs($file,"$qnote</td></tr>");
fputs($file,"<tr><td align=right bgcolor=#808080 colspan=2><font color=white><b>โดย</b> : $qname <a href='mailto:$qemail'>$qemail</a> ");
fputs($file,"$date<! ". $_SERVER["REMOTE_ADDR"] ."></td></tr></table>");
fclose ($file);
echo "<br><center><table border=0 cellspacing =0 width=90% bgcolor=white><tr><td>$qnote</td></tr>";
echo "<tr><td align=right bgcolor=#dddddd><font color=green><b>โดย</b> : $qname <a href='mailto:$qemail'>$qemail</a><! ". $_SERVER["REMOTE_ADDR"] ."> ";
echo " $date</font></td></tr></table><br><a href='?' target=_self>กลับหน้าหลัก</a></center>";
}
}
# ===============================
function secure_code_r() {
global $dataroom;
$z = explode("=",$_SERVER["QUERY_STRING"]);
# $z = explode("=",$_SERVER["REQUEST_URI"]);
# $k=filesize("$dataroom/".$z[1].".htm");
# $k=fileatime("$dataroom/".$z[1].".htm") * $z[1] + filesize("$dataroom/".$z[1].".htm");
$k=fileatime("$dataroom/".$z[1].".htm") * filesize("$dataroom/".$z[1].".htm");
$key=ord(substr(crypt($k,$k),-1,1)) . ord(substr(crypt($k,$k),-2,1));
header("Content-type: image/jpeg");
$myImage = ImageCreate(80, 20);
$white = ImageColorAllocate($myImage, 255, 255, 255);
$red = ImageColorAllocate($myImage, 0 , 0, 255); # blue color
ImageFill($myImage, 0, 0, $red);
Imagestring($myImage, 5, 2, 4, "$key", $white);
Imageline($myImage,1,5,75,5,$white);
Imageline($myImage,1,17,75,17,$white);
Imagejpeg($myImage);
Imagedestroy($myImage);
}
# ===============================
function secure_code() {
global $dataroom;
$file=file ($dataroom."/topic.htm");
$k=count($file);
$key=ord(substr(crypt($k,$k),-1,1)) . ord(substr(crypt($k,$k),-2,1));
header("Content-type: image/jpeg");
$myImage = ImageCreate(80, 20);
$white = ImageColorAllocate($myImage, 255, 255, 255);
$red = ImageColorAllocate($myImage, 255, 0, 0); # red color
ImageFill($myImage, 0, 0, $red);
Imagestring($myImage, 5, 2, 4, "$key", $white);
Imageline($myImage,1,5,75,5,$white);
Imageline($myImage,1,17,75,17,$white);
Imagejpeg($myImage);
Imagedestroy($myImage);
}
# ===============================
function delete_topic() {
text_header();
global $delete,$webmaster_password,$dataroom;
if (isset($_POST['securecode'])) {
$file=file("$dataroom/topic.htm");
$k=count($file);
$key=ord(substr(crypt($k,$k),-1,1)) . ord(substr(crypt($k,$k),-2,1));
if ($_POST['securecode'] == $key && $webmaster_password == $_POST['webmaster_password']) {
$ar=file($dataroom."/topic.htm");
$file=fopen($dataroom."/topic.htm","w");
for ($i=0;$i<count($ar);$i++) {
$z = explode("view=",$ar[$i]);
$z = explode("'",$z[1]);
if ($z[0] <> $delete) {
fputs($file,"$ar[$i]");
} else {
echo "<center><font size=6>Delete $delete : ok<br><a href='?'>Back to listing</a>";
}
}
fclose($file);
unlink("$dataroom/".$delete.".htm");
if (file_exists("$dataroom/".$delete.".read")) unlink("$dataroom/".$delete.".read");
if (file_exists("$dataroom/".$delete.".reply")) unlink("$dataroom/".$delete.".reply");
} else {
echo "<center>รหัส secure และรหัส webmaster_password ไม่ถูกต้อง โปรดตรวจสอบใหม่";
}
} else {
echo "<center><form action='?d=".$delete."' method=post target=_self>".'<table align=center bgcolor=#ffffdd><tr><td colspan=2>
<font size=6>เว็บเพจหน้านี้สำหรับผู้ดูแลเท่านั้น</td></tr>
<tr><td>รหัส secure <img src=?action=secure_code>=></td><td><input name=securecode size=10>นำตัวอักษรบนพื้นสีแดงมากรอกในช่องว่างนี้ (Security code)</td></tr>
<tr><td>$webmaster_password =></td><td><input type=password name=webmaster_password size=10></td></tr>
<tr><td colspan=2><input type=submit value=ยืนยันการลบหัวข้อ></td></tr></table>
</form>';
}
}
# ===============================
function edit_topic() {
text_header();
global $edit,$edit_topic_password,$dataroom;
if (isset($_POST['securecode'])) {
$file=file("$dataroom/topic.htm");
$k=count($file);
$key=ord(substr(crypt($k,$k),-1,1)) . ord(substr(crypt($k,$k),-2,1));
if ($_POST['securecode'] == $key && $edit_topic_password == $_POST['edit_topic_password']) {
$file=fopen($dataroom."/".$edit.".htm","w");
fputs($file,$_POST['qnote']);
fclose($file);
echo "<center>แก้ไขเรียบร้อย<br><a href='?' target=_self>กลับหน้าหลัก</a>";
} else {
echo "<center>รหัส secure และรหัส edit_topic_password ไม่ถูกต้อง โปรดตรวจสอบใหม่";
}
} else {
echo "<center><form action='?e=".$edit."' method=post target=_self>"."<table align=center bgcolor=#ffdddd><tr><td colspan=2 align=center>
<font size=6>เว็บเพจหน้านี้สำหรับผู้ดูแลเท่านั้น</td></tr>
<tr><td align=right>รหัส secure <img src=?action=secure_code>=></td><td><input name=securecode size=10>นำตัวอักษรบนพื้นสีแดงมากรอกในช่องว่างนี้ (Security code)</td></tr>
<tr><td align=right>edit_topic_password =></td><td><input type=password name=edit_topic_password size=10></td></tr>
<tr><td colspan=2>
<textarea rows=15 cols=90 name=qnote>";
$ear=file("$dataroom/".$edit.".htm");
for ($i=0;$i<count($ear);$i++) {
echo $ear[$i];
}
echo '</textarea></td></tr>
<tr><td colspan=2 align=center><input type=submit value=ยืนยันการแก้ไขหัวข้อ></td></tr></table>
</form>';
}
}
# ===============================
function user_login_form() {
global $add_text;
echo "<table width=98% bgcolor=white><form action='' method=post>";
if (!isset($_SESSION["puser"]) || strlen($_SESSION["puser"]) < 1) {
echo "<td><b>ระบบ Login</b>
<br>สำหรับผู้มีสิทธิ์<br>ผู้อ่านทั่วไปไม่จำเป็นต้อง Login
<td>User :<td><input name=puser>
<td>Password :<td><input name=ppassword type=password>
<td valign=middle><br><input type=submit value=login name=login>";
} else {
echo "<td><b>ยินดีต้อนรับ<b> : ". $_SESSION["puser"] . "<br>". $add_text ."
<td valign=middle><br><input type=submit value=logout name=logout>";
}
echo "</form></table>";
}
# ===============================
function text_header() {
global $title,$bgcolor,$show_header,$have_header,$file_header,$header;
if (file_exists($file_header))
require($file_header); else {
if ($have_header == "yes") {
echo '<html><head><meta http-equiv=content-type content="text/html; charset=windows-874">
<meta name=keywords content="webboard,opinion,forum"><meta name=description content="';
echo $title;
echo '"><title>';
echo $title; echo '</title><style type="text/css">
body{scrollbar-base-color:gray;scrollbar-arrow-color:yellow;font-family:microsoft sans serif;font-size:10pt}
a:link{color:red;text-decoration:none;}
a:visited{color:purple;text-decoration:underline;}
a:hover{color:blue;text-decoration:none;background-color:#ffffdd;}
td{font-size:10pt;font-family:microsoft sans serif;}
textarea{font-size:10pt;font-family:microsoft sans serif;}
</style><body bgcolor=#'; echo $bgcolor; echo ' leftmargin=0 topmargin=0>';
}
if ($show_header == "yes") echo $header;
}
}
# ===============================
function text_footer() {
global $footer,$show_footer,$file_footer;
if (file_exists($file_footer))
require($file_footer); else {
if ($show_footer == "yes") echo $footer;
}
exit;
}
# ===============================
function startup_firsttime() {
global $dataroom;
mkdir("$dataroom",0755);
$file=fopen($dataroom."/topic.htm","w");
fclose ($file);
$file=fopen($dataroom."/number.txt","w");
fputs ($file,"0");
fclose ($file);
echo '<html><head><meta http-equiv=content-type content="text/html; charset=windows-874">';
echo '<meta http-equiv=refresh content="30;url=?pg=1"><center>โปรมนี้ถูกติดตั้ง โดยการสร้างห้อง ';
echo $dataroom;
echo ' ในห้องนี้เพื่อเก็บข้อมูล<br>สร้างแฟ้ม topic.htm ไว้เก็บข้อมูล<br>สร้างแฟ้ม number.txt ไว้เก็บเลขหัวข้อล่าสุด';
echo '<hr color="red">โปรดรอประมาณ 30 วินาที<br>เพื่อเข้าสู่ <a href="?pg=1">หน้าแรก</a> ของระบบ';
}
?>
จำนวน : 659 บรรทัด