FrontPage 新規 編集 検索 一覧 ヘルプ

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);
 ?>

ダウンロード

  count.php

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);

ダウンロード

  count.cgi

PHPデバッガのインストールメモ

インストール環境

環境バージョン
OSWindows98SE
PHP4.3.1

手順

 [Debugger]
 debugger.enabled=on
 debugger.profiler_enabled=on

変数の値を交換する

変数を使わずに値を入れ替える方法です。

 <?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に移植した感じです。

 <?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 = "&lt;&lt;";
 $NEXT_TEXT = "&gt;&gt;";
 
 // エラー処理
 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>
Yesterday Today Total