PHP - เรื่อง bbs
posted on 09 Apr 2006 10:37 by rije in PHPยินดีต้อนรับครับ วันนี้เป็นเรื่อง php แล้วนะครับ ^^
สามารถดูเรื่องเก่าๆ ได้ที่ recommended นะครับ
ว่ากันตามตรงแล้วผมก็ไม่ค่อยเก่ง php เท่าไหร่นะครับ
เท่าที่ผมพอได้ก็มีเรื่องพวกสร้าง board พวก bbs phpbb พวกนี้น่ะครับ
เพราะงั้นขอหยิบเรื่องนี้มาเสนอแล้วกัน ถ้ามีส่วนไหนผิดพลาดก็ช่วยแนะนำด้วยนะครับ ^^
หากต้องการข้อมูลเพิ่มเติมผมขอแนะนำเว็บ http://www.thaimisc.com ครับ
....................................................................
ผมเอาตัว bbs ที่มีอยู่มาให้ดูก่อนนะครับ bbs ที่นำมาเป็นของคนญี่ปุ่นเขียนไว้ครับ
ขออธบายพอสังเขปควบคู่กับตัวโค้ดด้านล่างละกันนะครับ มันเยอะมากเลย
ดูวิธีนำโค้ดไปใช้ด้านล่างสุดนะครับ
....................................................................
<?php
extract($_SERVER);
extract($_REQUEST);
$ip = $_SERVER['REMOTE_ADDR'];
$host = @gethostbyaddr($ip);
#===================================#
# STUDIO ZERO PHP*BBS #
# (c) kazuki owada #
# http://rkp.s24.xrea.com/ #
#===================================#
//ตัวไฟล์ php ที่เราเซฟ bbs.php ถ้าเซฟเป็นชื่ออื่นต้องมาเปลี่ยนตรงนี้
$self = './bbs.php';
//ไฟล์ .log ครับ
$logfile = './bbs.log';
//จัดเก็บข้อมูลสูงสุด
$max = 100;
//ใน 1 เพจที่จะแสดง
$max_view = 10;
//ชื่อ title bbs ของคุณครับ
$title = "ใส่ชื่อ title ตรงนี้ครับ";
//ตัวลิงค์กลับไปหน้า home ครับ
$home = '../ใส่urlครับ';
//จะเก็บพลาสเข้าระบบของคุณ
$pass = "ใส่รหัสตัวเลข";
//ตั้งค่า
// yes=1 no=0
$tag = 0;
//ตัวอักษรแบบ array (จัดเก็บทีละตัว)
$ng_word = array("ใส่ข้อความ");
//ภาพที่คุณจะใช้ใน bbs นี้
$img = 'http://rije.4-dezign.com/geustb.gif';
#===========================================#
function head(){
global $title,$img;
print <<<HTML
<html>
<head>
<meta http-equiv="Content-Stytle-Type" content="text/css">
<style>
<!--
body{
font-size:13px;
background-image: url($img);
background-repeat:no-repeat;
background-attachment:fixed;
background-position:10% 50%;
scrollbar-track-color: #ffffff;
scrollbar-face-color: #ffffff;
scrollbar-shadow-color: #ffffff;
scrollbar-darkshadow-color: #ffffff;
scrollbar-highlight-color: #ffffff;
scrollbar-3dlight-color: #ffffff;
scrollbar-arrow-color: #000000;
}
table{
font-size:13px;
}
.input {
border-left: 0px;
border-right: 0px;
border-top: 0px;
border-bottom: 1px solid #000000;
background-color:#FFFFFF;
font-size: 13px; color: #000000;
scrollbar-track-color: #ffffff;
scrollbar-face-color: #ffffff;
scrollbar-shadow-color: #ffffff;
scrollbar-darkshadow-color: #ffffff;
scrollbar-highlight-color: #ffffff;
scrollbar-3dlight-color: #ffffff;
scrollbar-arrow-color: #000000;
}
.button {
font-size:12px;
color:000000;
background-color:#FFFFFF;
border-style:solid;
border-color:000000;
border-width:1;
}
small{
font-size:12px;
color:#b1b1b1;
-->
</style>
<title>$title</title>
</head>
<body>
HTML;
}
function foot(){
print "</body></html>\n";
}
function err($msg){
global $self;
head();
print "<center><font color=red>ERROR!</font><br><br>$msg<br><br><a href='$self'>BACK</a></center>\n";
exit();
}
if($m == "save"){
if(!$name){err("หากไม่ใส่ชื่อจะขึ้นข้อความเตือนอันนี้");}
if(!$com){err("หากไม่ได้ใส่คอมเม้นท์จะขึ้นข้อความเตือนอันนี้");}
//เช็คชื่อและคอมเม้นท์
if(get_magic_quotes_gpc()){
$name = stripslashes($name);
$sub = stripslashes($sub);
$com = stripslashes($com);
}
//ส่วนทำการจัดเก็บ
$name = htmlspecialchars($name);
$sub = htmlspecialchars($sub);
$url = htmlspecialchars($url);
//เช็ค error
foreach($ng_word as $value){
if(preg_match("/$value/",$name)){err("ใส่ข้อความ error ของ name ตรงนี้");}
if(preg_match("/$value/",$sub)){err("ใส่ข้อความ error ของ sub ตรงนี้");}
if(preg_match("/$value/",$com)){err("ใส่ข้อความ error ของ comment ตรงนี้");}
}
//จัดเก็บข้อความ url
if($tag){
$com = str_replace("<>","<>",$com);
}else{$com = htmlspecialchars($com);}
$url = str_replace("http://","",$url);
//จัดเก็บข้อความ comment
$com = str_replace(array("\r\n","\r","\n"),"<br>",$com);
//จัดเก็บชื่อ sub mail url
list($name,$sub,$mail,$url) = str_replace(array("\r","\n"),"",array($name,$sub,$mail,$url));
//วันเดือนปีที่โพส
$date = date("Y/m/d(D) H:i");
$logs = @file($logfile);
list($no,$n,$s,$m,$c,$d,$p,$i,$h) = explode("<>",$logs[0]);
if($n == $name || $c == $com){err("name || comment");}
//
$no++;
if(!$sub){$sub = "–ณ‘่";}
$new = "$no<>$name<>$sub<>$mail<>$url<>$com<>$pw<>$date<>$ip<>$host\n";
//ตัวนี้จะเช็คการเรียกไฟล์แล้ว error
@flock($fp,LOCK_EX);
$fp = fopen($logfile,"w") or err("OPEN ERROR! file");
fputs($fp,$new);
//ส่วนที่จะแสดงผล error เป็นข้อความ
for($i = 0; $i < $max-1; $i++){
fputs($fp,$logs[$i]);
}
fclose($fp);
}
if($m == "delete"){
if(!$id || !$pwd){err("โปรดใส่ id หรือ pass ที่ถูกต้อง");}
$lines = file($logfile);
$flag = 0;
foreach($lines as $delfile){
list($no2,$name2,$sub2,$mail2,$url2,$com2,$pw2,$date2,$ip2,$host2) = explode("<>",$delfile);
if($id == $no2){
if(!$pw2){
err("pass ไม่ถูกกรุณาใส่ใหม่");
}
if($pwd != $pw2){
err("โปรดตรวจสอบความถูกต้องอีกครั้ง");
}
$flag = 1;
}
else{$new .= $delfile;}
}
if($flag == 0){err("ตรวจสอบข้อมูลดีๆ ด้วยครับ");}
//เปิดไฟล์ขึ้นมาลบ
$fp = fopen($logfile,"w") or err("open file");
fputs($fp,$new);
fclose($fp);
head();
print "<center>ข้อความถูกลบเรียบร้อยแล้ว<br><br><a href=$self>BACK</a>\n";
foot();
unset($value);
exit();
}
if($m == "admin"){
head();
if(!$master){
print "<form action=$self method=POST>\n";
print "<input type=hidden name=m value='admin'>\n";
print "<center><hr width=200>admin system<br>\n";
print "<input type=password name=master size=8 class=input>\n";
print "<input type=submit value='LOGIN' class=button>\n";
print "<hr width=200></center></form>\n";
exit();
}
if($master != $pass){err("เกิดปัญหากับ pass");}
if($action == "del"){
$delfile = @file($logfile);
$flag=0;
foreach($delfile as $value){
list($no1,$name1,$sub1,$mail1,$ur1l,$com1,$ext1,$w1,$h1,$pw1,$date1,$ip1,$host1) = explode("<>",$value);
//เช็ค error
if($num == $no1){
$flag=1;
}
else{$new_dat .= $value;}
}
if($flag == 0){err("ใส่ข้อความ error ตรงนี้");}
//เปิดไฟล์แล้ว error
$fp = fopen($logfile,"w") or err("ใส่ข้อความ error ตรงนี้");
#@flock($fp,2);
fputs($fp,$new_dat);
fclose($fp);
}
print <<<HTML
<form action=$self method=POST>
<input type=hidden name=m value=admin>
<input type=hidden name=action value=del>
<input type=hidden name=master value=$pass>
<input type=hidden name=p value=$p>
[<a href=$self>back to bbs</a>]<br>
<center>
<hr>
edit system<br>
edit system and data : comment<br><br>
<table border=1 width=700 style='border-collapse:collapse;' bordercolor=#000000>
<tr align=center>
<td>no</td><td>name</td><td>url</td><td>com</td><td>date</td><td>ip</td><td>host</td></tr>
HTML;
$dat = @file($logfile);
$s = $p + 1;
$e = $p + $max_view;
$j=0;
foreach($dat as $line){
list($no2,$name2,$mail2,$url2,$com2,$pw2,$date2,$ip2,$host2) = explode("<>",$line);
$k++;
if($k < $s){continue;}
if($k > $e){continue;}
if($mail2){$name2 = "<a href=mailto:$mail2>$name2</a>";}
if($url2){$url2 = "<a href=http://$url taeget=_blank>HOME</a>";}
$com2 = mb_substr($com2,0,15);
$com2 .= "...";
print "<tr><td>\n";
print "<input type=checkbox name=num value=$no2>\n";
print "$no2</td><td>$name2</td><td>$sub2</td><td>$url2</td><td>\n";
print "$com2</td><td>$date2</td><td>$ip2</td><td>$host2</td></tr>\n";
}
print "</td></tr></table><br><br>\n";
print "<input type=submit value='DELETE' class=button></form><br><br>\n";
$n = $p + $max_view;
$e = $p - $max_view;
if($n < $k){
print "[<a href=$self?m=admin&master=$pass>N E X T</a>]\n";
}
exit();
}
head();
print <<<HTML
<div align="right">
<form action="$self" method="POST">
<input type="hidden" name="m" value="save">
<table border="0" width="400"><tr><td>
$title <a href="HOMEhttp://rije.4-dezign.com/main.htm">HOME</a> || <a href="$self?m=admin">admin</a>
<hr color="#000000" size="1">
<br>
<div align="right">
<table border=0>
<tr>
<td align="right">name</td><td><input type="text" name="name" size="33" class="input">
</td>
</tr>
<tr>
<td align="right">title</td><td><input type="text" name="sub" size="33" class="input" value="> ">
</td>
</tr>
<tr>
<td align="right">mail</td><td><input type="text" name="mail" size="33" class="input">
</td>
</tr>
<tr>
<td align="right">url</td><td><input type="text" name="url" size="33" value="http://" class="input">
</td>
</tr>
<tr>
<td align="right" valign="top">message</td><td><textarea rows="5" cols="25" name="com" class="input"></textarea>
<td>
</tr>
<tr>
<td colspan="2" align="right">pass<input type="password" name="pw" size="8" class="input">
<input type="submit" value="Send" class="button"> <input type="reset" value="reset" class="button">
</td>
</tr>
</table>
</form>
</div>
<hr size="1">
HTML;
$start = $page + 1;
$end = $page + $max_view;
$data = @file($logfile);
$i=0;
//ส่วนนี้จะโชว์ข้อมูลที่ comment ไปว่ามีอะไรบ้าง ในโค้ดมีส่วนที่ต้องใส่ภาพด้วยนะครับ แก้ไขได้ครับ
foreach($data as $lines){
list($no,$name,$sub,$mail,$url,$com,$pw,$date,$ip,$host) = explode("<>",$lines);
$i++;
if($i < $start){continue;}
if($i > $end){continue;}
if($mail){$mail = "<a href=mailto:$mail><img src=ใส่ภาพเมล์ border=0></a>";}
if($url){$url = "<a href=http://$url target=_blank><img src=ใส่ภาพhome border=0></a>";}
print "<table border=0 width=100% style='border-style:solid;border-width:1px;border-color:#000000;'>\n";
print "<tr><td colspan=2>\n";
print "<table width=100% cellpadding=0 cellspacing=0><tr><td>\n";
print "[$no] $sub</td><td align=right>$mail $url</td></tr></table>\n";
print "<small>from></small>$name<br><small>date></small>$date\n";
print "</td></tr><tr><td></td><td>$com\n";
print "</td></tr></table><br><br>\n";
}
$next = $page + $max_view;
$back = $page - $max_view;
print "<center><table><br>\n";
//เช็คหน้าเพจว่ามีหน้าต่อไปหรือหน้าก่อนหน้าหรือไม่
if($back >= 0){
print "<td><form action=$self method=POST>\n";
print "<input type=hidden name=page value='$back'>\n";
print "<input type=submit value='back' class='button'></form></td>\n";
}
if($next < $i){
print "<td><form action=$self method=POST>\n";
print "<input type=hidden name=page value='$next'>\n";
print "<input type=submit value='next' class='button'></form>\n";
}
print "</td></tr></table></center>\n";
//พิมพ์ form ออกมา (code html)
print "<div align=right>\n";
print "<form action=$self method=POST>\n";
print "<input type=hidden name=m value='delete'>\n";
print "No<input type=text name=id size=4 class=input>\n";
print "Pass<input type=password name=pwd size=8 class=input>\n";
print "<input type=submit value='del' class=button></form><br><br>\n";
//แสดงข้อความใน "" ออกมาเป็นลิงค์ ZERO BBS
print "<a href=http://rkp.s24.xrea.com/ target=_blank>\n";
print "<font style='text-decoration:none;color:orange;'>ZERO BBS</font></a>\n";
print "</td></tr></table>\n";
?>
....................................................................
โค้ดนี้นำไปใช้ได้ทักทีเลยครับ แค่ก๊อบใส่ notepad แล้วเป็นเซฟชื่อ bbs.php
และสร้างไฟล์ log ด้วย notepad โดยการเปิด notepad ขึ้นมาแล้วเซฟเลยครับ
เป็นชื่อ bbs.log นะครับ สามารถเปลี่ยนชื่อไฟล์เซฟได้แต่ต้องมาเปลี่ยนชื่อไฟล์ที่โค้ดด้านบนด้วยครับ
ผมฝากโค้ด bbs อีกตัวเอาไว้ลองเอาไปใช้กันดูได้นะครับ ลองโหลดไปดูนะครับ
http://www.savefile.com/files.php?fid=8793552....................................................................














I want to find out about poaeoq technology .
Who can tell about it ?
Bye
#1 By Noxketanob (201.17.230.153) on 2006-12-29 08:42