本範例展示一個極簡的訪客簽到簿,僅需 sign.txt 文字檔與 sign.php 單一程式檔即可運作,無需 MySQL 資料庫,適合虛擬主機或快速原型。
http 開頭)。<?php
if (isset($name) && isset($msg)) {
$name = ltrim($name);
$t = date("y年m月d日");
$dat = "[$t]";
$msg = ltrim($msg);
$name = trim($name);
$msg = trim($msg);
$pristr = $name . " " . $dat . " " . $msg . "\n";
$f = fopen("sign.txt", "a");
fwrite($f, $pristr);
fclose($f);
}
?>
<?php
$file = file("sign.txt");
if (!isset($pagenum)) $pagenum = 1;
$lesssign = 0;
$num = count($file);
$dispnumed = 6 * ($pagenum - 1);
$dispnumbeg = $num - $dispnumed;
$artnumeof1 = 6 * $pagenum;
$isdispnum = $num - $artnumeof1;
if ($isdispnum <= 0) {
$dispnumeof = 1;
$lesssign = 1;
} else {
$dispnumeof = $isdispnum + 1;
}
// 計算總頁數
$sign = 0; $pagec = 0;
for ($icount=0; ($icount<$num) && ($sign==0); $icount+=6) {
for ($i=0; $i<=6; $i++) {
if (($icount*6+$i) == $num) $sign = 1;
}
$pagec++;
}
$pagecount = $pagec;
// 輸出表格
echo "<table width=100% cellspacing=3>";
echo "<tr><td bgcolor=00ff00 align=center>斑竹園簽到簿</td></tr>";
$fuhao = "◇ ";
$color = "e9eae9";
$iscolor = 0;
$lessnum = 5;
for ($i=$dispnumbeg; $i>=$dispnumeof; $i--) {
$linknum = $num - $i;
$lessnum--;
$stringmsg1 = $file[($i-1)];
$stringmsg2 = strrev($stringmsg1);
$stringmsg3 = strstr($stringmsg2, "psbn"); // 反向找 "nbsp"
$stringmsg = strrev($stringmsg3);
$stringlink = strstr($file[($i-1)], "http");
$dispvar = $fuhao . $stringmsg;
echo "<tr><td bgcolor=$color>";
echo $dispvar;
echo "<img src=gif/home3.gif>";
echo "<a href=$stringlink>$stringlink</a>";
echo "</td></tr>";
// 交替顏色
if ($iscolor==0) { $color="ffffff"; $iscolor=1; }
else { $color="e9eae9"; $iscolor=0; }
}
// 補空白列
if ($lesssign==1) {
for ($iless=$lessnum; $iless>0; $iless--) {
echo "<tr bgcolor=$color><td>".$fuhao."<br>\n</td></tr>";
if ($iscolor==0) { $color="ffffff"; $iscolor=1; }
else { $color="e9eae9"; $iscolor=0; }
}
}
// 簽到表單
echo "<tr><form action=index.php method=post><td>";
echo "稱呼:<input name=name size=10 maxlength=20>";
echo "地址:<input name=msg size=20 maxlength=60 value=https://>";
echo "<input type=submit name=submit value=簽到>";
echo "</td></form></tr>";
echo "</table>";
?>
sign.txt,設定可寫入權限(666 或 777)。sign.php 上傳至支援 PHP 的主機。gif/home3.gif 圖片存在,或移除該行。action=index.php 若檔名非 index.php 請修正。$msg 與 $name,應使用 htmlspecialchars() 轉義。flock() 檔案鎖定或改用 SQLite/MySQL。ceil($num/6) 並用 array_slice 切片。strstr($line, "http") 只能偵測第一個連結,建議用 preg_replace 全域替換。