PHP
シンプルテキストカウンタ
PHPのシンプルなテキストカウンタです。実行には、0(初期値)を書いたcount.txtを用意してください。
<?
// count.php - シンプルテキストカウンタ Ver1.10
// 2003/11/29 by tuka.
//
$DATA = "count.txt"; // カウンタ記録ファイル
$FIG = 5; // カウンタ最低桁数
$FH = @fopen($DATA, "r+");
flock($FH, 2);
$count = fgets($FH);
$count++;
fseek($FH, 0);
ftruncate($FH, 0);
fputs($FH, $count);
fclose($FH);
printf("%0${FIG}d", $count);
?>
ダウンロード
Perlで書くと
PHPのページですが参考に書いておきます。同じものをPerl/SSIで書くと以下のようになります。
#!/usr/bin/perl -w
# stcount.cgi - SSIシンプルテキストカウンタ
use strict;
my $DATA = 'count.txt'; # カウンタ記録ファイル
my $FIG = 5; # カウンタ最低桁数
### メイン
my $count;
print "Content-type: text/html\n\n";
open(FH, "+< $DATA");
flock(FH, 2);
$count = <FH>;
$count++;
seek(FH, 0, 0);
truncate(FH, 0);
print FH $count;
close(FH);
printf("%0${FIG}d", $count);
ダウンロード
PHPデバッガのインストールメモ
インストール環境
| 環境 | バージョン |
|---|---|
| OS | Windows98SE |
| PHP | 4.3.1 |
手順
- http://dd.cron.ru/dbg/downloads.php より、DBG 2.11.5 zip [351Kb]をダウンロード
- 解凍後、serverフォルダの php_dbg.dll-4.3.0rc2 を PHPのextensionsフォルダにコピー
- php.ini の extension=... という箇所に extension=php_dbg.dll-4.3.0rc2 を追加
- php.ini の 最後に下記を追加
[Debugger] debugger.enabled=on debugger.profiler_enabled=on
- phpinfo() を閲覧すると dbg という部分が表示されることを確認
- cliantフォルダのinstall.bat をダブルクリック
- インストール完了
変数の値を交換する
変数を使わずに値を入れ替える方法です。
<?php // swap.php - 変数の値を交換する $hoge = 'Hogege'; $fuga = 'Fugaga'; list($hoge, $fuga) = array($fuga, $hoge); print "\$hoge = $hoge\n"; print "\$fuga = $fuga\n"; ?>
ちなみにPerlでは、もっと簡単に書くことができます。
#!perl -w # swap.pl - 変数の値を交換する use strict; my $hoge = 'Hogege'; my $fuga = 'Fugaga'; ($hoge, $fuga) = ($fuga, $hoge); print "\$hoge = $hoge\n"; print "\$fuga = $fuga\n";
サンプル掲示板
PerlのぷるぷるぼーどをPHPに移植した感じです。
- 動作サンプル
- Download >> bbsphp.lzh
<?php
// シンプルでサンプルなPHP掲示板 - ぷるぷるぼ〜ど for PHP -
// 2003/12/03 by tuka.
$MYSELF = basename(__FILE__);
$TITLE = 'ぷるぷるぼ〜ど for PHP';
$TOP_TEXT = $TITLE . 'はシンプルでサンプルな掲示板です。<br>ご自由にテストしてくださいませ。';
$LOGFILE = 'bbsphp.log';
$PAGESIZE = 10;
$PREV_TEXT = "<<";
$NEXT_TEXT = ">>";
// エラー処理
function error($msg) {
global $myself;
print "<h1>ERROR!</h1>\n";
print "<p>$msg</p>\n";
print "<p><a href=\"$myself\">[ 戻る ]</a></p>\n";
exit();
}
// 行数調べ&textがあれば書き込み
$fp = @fopen($LOGFILE, "a+") or error("ログファイルのオープンに失敗しました");
flock($fp, 2);
while(!feof($fp)){ $no = @fgets($fp); }
if($_POST["text"]){
$name = htmlspecialchars($_POST["name"]);
$mail = htmlspecialchars($_POST["mail"]);
$text = htmlspecialchars($_POST["text"]);
$text = preg_replace("/\r\n|\r|\n/", "<br>", $text);
$time = date("Y/m/d H:i:s", time());
if(!$name){ $name = '匿名さん'; }
$no++;
fputs($fp, "\t$time\t$name\t$mail\t$text\n$no");
}
fclose($fp);
$no--;
// ページ、開始終了位置
$page = $_GET["page"];
if(!$page){ $page=1; }
$end = $page * $PAGESIZE;
$start = $end - $PAGESIZE + 1;
if($no < $end){ $end = $no;}
list($start, $end) = array($no - $end + 1, $no - $start + 1);
// ログ読み込み
$data = array();
$fp = @fopen($LOGFILE, "r") or error("読み込みに失敗しました");
while(!feof($fp)){
$line = @fgets($fp);
if(!$line){ break;}
list($no, $time, $name, $mail, $text) = split("\t", $line);
if($start <= $no && $end >= $no){
if($mail){ $name = "<a href=\"mailto:$mail\">$name</a>"; }
array_push($data, "<dt>$no : <b>$name</b> : $time</dt><dd>$text<p></p></dd>");
}
}
$prev = $page - 1;
$next = $page + 1;
// ナビ生成
$array_navi = array();
$field = ($page==1) ? $PREV_TEXT : "<a href=\"?page=$prev\">$PREV_TEXT</a>";
array_push($array_navi, $field);
for($i=1; $i<=intval(($no-2) / $PAGESIZE) + 1; $i++){
$field = ($page==$i) ? $i : "<a href=\"?page=$i\">$i</a>";
array_push($array_navi, $field);
}
$field = ($page+1==$i) ? $NEXT_TEXT : "<a href=\"?page=$next\">$NEXT_TEXT</a>";
array_push($array_navi, $field);
$navi = ($i > 2) ? join(' ', $array_navi).'<hr>' :'';
?>
<html>
<head>
<title><?=$TITLE?></title>
</head>
<body>
<h1><?=$TITLE?></h1>
<hr><?=$TOP_TEXT?><hr>
<form action="<?=$MYSELF?>" method="post">
<input type="submit" value="書き込む">
名前:<input type="text" name="name" value="">
E-mail:<input type="text" name="mail" value=""><br>
<textarea name="text" rows="6" cols="60"></textarea>
</form>
<hr><?=$navi?>
<dl><?=join("\n", array_reverse($data))?></dl>
<hr><?=$navi?>
<div><a href="http://tuka.s12.xrea.com/">ぷるぷるぼ〜ど for PHP</a></div>
</body>
</html>
{{edit 更新履歴}}