PHP

掲示板のサンプル・ソース


<?php
header("content-type:text/html; charset=UTF-8");
// 18 feb 05
?>

<HTML><HEAD>
<META NAME="ROBOTS" CONTENT="NONE">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>A bulletin board. Any news?</TITLE>
</HEAD>
<BODY BGCOLOR="#FFEEEE" VLINK="#00CC66">

<?php
// 12 feb 05
$ecgi = 'notice.php';

$ggroup = $_GET['group'];
$topad = '/' . $ggroup . '/index.html';
if ($ggroup == ''){ $topad = '/index.html'; }

function therd($errmes)
{
global $topad;

print "<BR />\n";
print "<div align=\"center\">\n";
print " $errmes <P>\n";
print "<A HREF=\"$topad\">トップページ</A>\n";
print "</div>\n";
print "</BODY>\n";
print "</HTML>\n";

exit();
}

$page = $_GET{'page'};
if ($page == ''){ $page = 0; }
if ($page < 0){ $page = 0; }
$front = $page - 5;
$rear = $page + 5;

$gclass = $_GET{'class'};
if ($gclass == ''){ $gclass = 'var'; }

$ftpas = '../cgi-bin/bbs/firstplace.log';
$fope = fopen($ftpas, "r");
if ($fope == 0){
$errmes = "$ftpas が読めません。";
therd($errmes);
}

$firstplac = fread($fope, filesize($ftpas));
fclose($fope);

$firstplac = mb_convert_encoding($firstplac, "UTF-8", "SJIS");
$one = explode("\n" , $firstplac);
$akaunt = 0;

foreach ($one as $two) {
list($kurasu , $title , $hozonkensu , $gazosaizu , $chakushin , $mailto , $modoruurl , $riyosha) = explode( "," , $two);
if ($kurasu == $gclass){
$akaunt = 1;
break;
}
}

if ($akaunt == 0){
$errmes = "アカウントがありません。";
therd($errmes);
}

if ($modoruurl != ''){ $topad = $modoruurl; }

$mdir = "../cgi-bin/$gclass";
$flug = opendir($mdir);

if ($flug == 0){
$errmes = "$mdir が読めません。";
therd($errmes);
}

$idlist = array();
$toros = 0;

while (false !== ($file = readdir($flug))) {
$m = strpos($file , '.');
if ($m === false) {
$ar = array_push($idlist, $file);
$toros = $toros + 1;
}
}
closedir($flug);

// 13 feb 05
rsort ($idlist);
$tpas = '../cgi-bin/bbs/' . $gclass . 'r.log';
$top = '9000';

$flug = fopen($tpas, "r");
if ($flug == 0){
$errmes = "$tpas が読めません。";
therd($errmes);
}

$top = fread($flug, filesize($tpas));
fclose($flug);

$shou = array();
$daai = array();
$arud = 0;

foreach ($idlist as $two) {
if ($two < $top){
$ar = array_push($shou, $two);
}else{
$ar = array_push($daai, $two);
$arud = 1;
}
}

rsort ($shou);
$idlist = $shou;

if ($arud == 1){
rsort ($daai);
$ar = array_push($idlist, $daai);
}

$list = array();
$ko = 0;

foreach ($idlist as $two) {
if ($page <= $ko){
$ar = array_push($list, $two);
}
$ko = $ko + 1;
if ($ko >= $rear){ break; }
}

?>

<TABLE BORDER="0" CELLSPACING="0" WIDTH="100%">
<TR><TD>
<IMG SRC="/club/ANYNEWS.GIF" alt="どんなニュース?">
</TD><TD ALIGN="Right">
<form action="/cgi-bin/bbs/question.cgi" method="get">
<INPUT TYPE="hidden" NAME="group" VALUE="<?= $_GET{'group'} ?>">
<INPUT TYPE="hidden" NAME="class" VALUE="<?= $_GET{'class'} ?>">
<input type="text" name="word" VALUE="<?= $_GET{'word'} ?>" size="30">
<input type="submit" value="Question">
</form>
</TD></TR>
</TABLE>
<span STYLE=" font-size: 14pt ; font-weight: bold ; ">
 掲示板:<?= $title ?>
</span>

<P ALIGN="Right">

<?php

function fiveth($subj)
{
$one = strpos($subj, "ユース");
$two = strpos($subj, "テニス");
$thr = strpos($subj, "スキー");
$for = strpos($subj, "ダンス");

if ($one >= 0 && $one !== false){ $bcolor = "#FFFFCC"; }
if ($two >= 0 && $two !== false){ $bcolor = "#FFEEFF"; }
if ($thr >= 0 && $thr !== false){ $bcolor = "#EEFFEE"; }
if ($for >= 0 && $for !== false){ $bcolor = "#EEFFFF"; }

return $bcolor;
}

function synthesis($gclass)
{
$count_log = '../cgi-bin/bbs/' . $gclass . 'page.log';
$flug = fopen($count_log, "r+");
if ($flug == 0){ return; }
$counter = fread($flug, filesize($count_log));
$counter = $counter + 1;
rewind($flug);
flock($flug, LOCK_EX);
fwrite($flug, $counter);
fclose($flug);
print $counter;
// 14 feb 05
}

if ($front >= 0){
print "<A HREF=\"$ecgi?page=$front&group=$ggroup&class=$gclass\">前ページ</A>  \n";
}
if ($toros > $rear){
print "<A HREF=\"$ecgi?page=$rear&group=$ggroup&class=$gclass\">次ページ</A>  \n";
}
print "<A HREF=\"/cgi-bin/bbs/board.cgi?group=$ggroup&class=$gclass\">新規登録</A>  \n";
print "<A HREF=\"/cgi-bin/bbs/clean.cgi?group=$ggroup&class=$gclass\">削除編集</A>  \n";
print "<A HREF=\"/cgi-bin/bbs/havealook.cgi?group=$ggroup&class=$gclass\">タイトル</A>  \n";
print "<A HREF=\"$topad\">トップページ</A></P>\n";
$place = 1;

foreach ($list as $fname){
$start = $mdir . '/' . $fname;
$flug = fopen($start, "r");

if ($flug == 0){
$errmes = "$mdir/$fname が読めません。";
therd($errmes);
}

$contents = fread($flug, filesize($start));
fclose($flug);
$contents = mb_convert_encoding($contents, "UTF-8", "SJIS");
$messe = explode("\n" , $contents);

$photo = '';
$bcolor = "#FFFFFF";
$fcolor = "#000000";
$mest = '';
$homepage = '';

foreach ($messe as $text){
$one = strpos($text, 'Date:');
$two = strpos($text, 'From:');
$thr = strpos($text, 'Subject:');
$col = strpos($text, 'Color:');
$pic = strpos($text, 'Picture:');
$hom = strpos($text, 'Homepage:');

if ($one === false && $two === false && $thr === false && $col === false && $pic === false && $hom === false){
$mest = $mest . $text . "<BR />\n";
} else {
list($four , $five) = explode(" " , $text , 2);
}

if ($one == 0 && $one !== false){ $hizu = $five; }
if ($two == 0 && $two !== false){
list($nama , $six) = explode("<" , $five , 2);
$rec = strpos($six, '>accept');
$six = '';
}
if ($thr == 0 && $thr !== false){ $subj = $five; }
if ($col == 0 && $col !== false){ list($bcolor , $fcolor) = explode(":" , $five , 2); }
if ($pic == 0 && $pic !== false){ $photo = substr($five, 3); }
if ($hom == 0 && $hom !== false){ $homepage = $five; }
}// $messe

if ($gclass == 'var'){ $bcolor = fiveth($subj); }

if ($place == 0){
$position = 'right';
$place = 1;
} else {
$position = 'left';
$place = 0;
}

print "<TABLE BORDER=\"4\" CELLSPACING=\"4\" ALIGN=\"$position\">\n";
print "<TR><TD BGCOLOR=\"$bcolor\">\n";
print "<B>#$fname $subj</B><BR />\n";
print "<I>$hizu</I><BR />\n";

$homp = '';
if ($homepage != ''){ $homp = "さんの<A HREF=\"$homepage\">ページ</A>"; }

if ($rec > 1){
print "<A HREF=\"/cgi-bin/bbs/interpret.cgi?number=$fname&group=$ggroup&class=$gclass\">$nama</A> $homp <BR />\n";
} else {
print "$nama $homp <BR />\n";
}

$gazosaiz = $gazosaizu * 1000;
// 16 feb 05
$fsize = 0;
if ($photo != ''){ $fsize = filesize($photo); }

if ($photo != '' && $fsize < $gazosaiz){
print "<BR />";
print "<IMG SRC=\"$photo\">";
}
print "<FONT color=\"$fcolor\">\n";
print "$mest";
print "</FONT>\n";

$fsizel = (int) ($fsize / 1000);
if ($photo != '' && $fsize >= $gazosaiz){
print "<P>";
print "<A HREF=\"$photo\">画像 $fsizel KB</A>";
}

print "</TD></TR>\n";
print "</TABLE>\n";
print "<BR Clear=\"All\"><BR />\n";
}// $list

// 14 feb 05
print "<P ALIGN=\"Right\">";
if ($front >= 0){
print "<A HREF=\"$ecgi?page=$front&group=$ggroup&class=$gclass\">前ページ</A>  \n";
}
if ($toros > $rear){
print "<A HREF=\"$ecgi?page=$rear&group=$ggroup&class=$gclass\">次ページ</A>  \n";
}
print "<A HREF=\"/cgi-bin/bbs/board.cgi?group=$ggroup&class=$gclass\">新規登録</A>  \n";
print "<A HREF=\"/cgi-bin/bbs/clean.cgi?group=$ggroup&class=$gclass\">削除編集</A>  \n";
print "<A HREF=\"/cgi-bin/bbs/havealook.cgi?group=$ggroup&class=$gclass\">タイトル</A>  \n";
print "<A HREF=\"$topad\">トップページ</A></P>\n";

synthesis($gclass);

?>

</BODY>
</HTML>

February 18, 2005
The following clause.
ソフトウェア