File : webboardphp.txt. ID : 9119
Skin : Default | Sons-of-obsidian | Sunburst | Highlighter | Frame
<?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("?","&#63",$qtitle);

    $qnote= $_POST['qnote']; 

    $qnote = str_replace("?","&#63",$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;","&#92;",$qnote);

    $qname= $_POST['qname'];

    $qname = str_replace("?","&#63",$qname);

    $qemail= $_POST['qemail'];

    $qemail = str_replace("?","&#63",$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("?","&#63",$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;","&#92;",$qnote);

  $qname= $_POST['qname'];

  $qname = str_replace("?","&#63",$qname);

  $qemail= $_POST['qemail'];

  $qemail = str_replace("?","&#63",$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>=&gt;</td><td><input name=securecode size=10>นำตัวอักษรบนพื้นสีแดงมากรอกในช่องว่างนี้ (Security code)</td></tr>

<tr><td>$webmaster_password =&gt;</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>=&gt;</td><td><input name=securecode size=10>นำตัวอักษรบนพื้นสีแดงมากรอกในช่องว่างนี้ (Security code)</td></tr>

<tr><td align=right>edit_topic_password =&gt;</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> ของระบบ';

}

?>