2008年10月 のアーカイブ

参照変数に関する注意点

2008年10月30日

関数で参照を返す

関数の戻り値を参照にする事もできます。関数名の前に&を付けて、戻り値が参照である事を明示しておきます。返ってきた参照を代入する時も同様に&を付けます。この場合、どちらの&が欠けても参照渡しにはなりません。

PHP

  1. function & toRef(&$val) {
  2.   return $val;
  3. }
  4. // 参照渡し
  5. $val = 'BEFORE';
  6. $ref =& toRef($val);
  7. $ref = 'AFTER';
  8. print $val;// AFTER
  9. // コピー渡し
  10. $val = 'BEFORE';
  11. $notref = toRef($val);
  12. $notref = 'AFTER';
  13. print $val;// BEFORE

関数に参照を渡したい時は、必ず定義する時に&を付けておく必要があります。
引数に&をつけて関数を呼ぶ方法は、今後廃止される予定です。

PHP

  1. // 正
  2. function func(&$arg) {}
  3. func($arg);
  4. // 誤
  5. function func($arg) {}
  6. func(&$arg);

インスタンス生成時の注意点

PHP4でコンストラクタ定義で&を付ける必要はありません。ただし、インスタンス生成時にnewがコピーを返すので注意が必要です。

PHP

  1. class Test {
  2.   var $value = 'foo';
  3.   function Test() {
  4.     $GLOBALS['test'] =& $this;
  5.   }
  6.   function set($value) {
  7.     $this->value = $value;
  8.   }
  9.   function display() {
  10.     echo '<br />' . $this->value;
  11.   }
  12. }
  13. $obj = new Test();
  14. $obj->set('bar');
  15. $obj->display(); // bar
  16. $test->display();// foo
  17. $obj =& new Test();
  18. $obj->set('bar');
  19. $obj->display(); // bar
  20. $test->display();// bar

インスタンスの代入

PHP5からインスタンスの扱いはJAVA同様に参照となります。

PHP

  1. $obj =& new Class();
  2. // PHP4
  3. $ref_obj =& $obj;// 2つは同じ
  4. $copy_obj = $obj;// 2つは独立
  5. // PHP5
  6. $ref_obj = $obj;// 2つは同じ
  7. $copy_obj = clone $obj;// 2つは独立

参考資料


ユーザーエージェント携帯判別

2008年10月30日

NTT DoCoMo

  • MOVA ブラウザフォン
    • DoCoMo/1.0で始まる。
    • DoCoMo/1.0/N505iS/c20/TB/W20H10
  • FOMA (XHTML)
    • DoCoMo/2.0で始まる。
    • DoCoMo/2.0 F901iC(c100;TB;W23H12)

SoftBank

  • 1G, 2G
    • J-PHONEで始まる。
    • J-PHONE/5.0/V801SH/SN000000000 SH/0005aa Profile /MIDP-1.0 Configuration/CLDC-1.0 Ext-Profile/JSCL-1.1.0
  • 3G (XHTML)
    • MOT-C980かMOT-V980で始まる。
    • MOT-C980/80.2F.2E. MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
    • MOT-V980/80.2F.2E. MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1
  • 3G (XHTML)
    • Vodafoneで始まるが、AUと同じUP.Browserが含まれる場合がある。
    • Vodafone/1.0/V802SH/SHJ000 Browser/UP.Browser/7.0.2.1 Profile
      /MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2
  • 3G (XHTML)
    • SoftBankで始まる。
    • SoftBank/1.0/910T/TJ001/SN Browser/NetFront/3.3 Profile
      /MIDP-2.0 Configuration/CLDC-1.1

AU

  • WAP1 (HDML)
    • UP.Browserが含まれる。
    • UP.Browser/3.04-CA14 UP.Link/3.4.5.8
    • SIE-M65/12 UP.Browser/7.0.0.1.c.3 (GUI) MMP/2.0 Profile
      /MIDP-2.0 Configuration/CLDC-1.1
  • WAP2 (XHTML)
    • KDDI-で始まる。
    • KDDI-CA23 UP.Browser/5.2.0.1.126 (GUI) MMP/2.0

WILLCOM

  • EDGE LINK
    • PDXGWで始まる。
    • PDXGW/1.0 (TX=8;TY=7;GX=96;GY=84;C=C256;G=BF;GI=2)
  • Air EDGE PHONE
    • DDIPOCKETが含まれる。
    • Mozilla/3.0 (DDIPOCKET;KYOCERA/AH-K3001V/1.5.2.8.000/0.1/C100) Opera 7.0
    • Mozilla/3.0 (DDIPOCKET;JRC/AH-J3001V,AH-J3002V/1.0/0100/c50) CNF/2.0
  • WILLCOM
    • WILLCOMが含まれる。
    • Mozilla/3.0(WILLCOM;SANYO/WX310SA/2;1/1/C128) NetFront/3.3
    • Mozilla/3.0(WILLCOM;KYOCERA/WX300K/1;1.0.2.8.000000/0.1/C100) Opera/7.0

まとめ

PHP

  1. $agent = $_SERVER['HTTP_USER_AGENT'];
  2. if (preg_match('{^DoCoMo/[12]\.0}', $agent)) {
  3.   return 'd';// docomo
  4. } else if (preg_match('{^(J\-PHONE|Vodafone|MOT\-[CV]980|SoftBank)/}', $agent)) {
  5.   return 's';// softbank
  6. } else if (preg_match('/^KDDI\-|UP\.Browser/', $agent)) {
  7.   return 'a';// au
  8. } else if (preg_match('{^PDXGW/|DDIPOCKET;|WILLCOM;}',
  9.   $agent)) {
  10.   return 'w';// willcom
  11. } else {
  12.   return 'p';// pc
  13. }

更に詳しい端末情報が欲しい場合は個体識別番号(吐かない端末あり)を解析すれば取得できます。また、PDAの様なモバイルPCを判別したい場合はSHやSANYO、KYOCERAといった社名から判断できる場合があります。

参考資料

携帯サイト開発用品

  • iモードHTMLシミュレータ
    • i-mode用コンテンツ動作テスター
      ヘッダの確認や、サイズオーバー等の携帯特有の警告も確認できます。
      FLASHのテストも可能。
  • Openwave SDK
    • EZweb用コンテンツ動作テスター
      WAP2.0対応ブラウザとHDMLブラウザの切り替え機能付き。
  • User Agent Switcher Extension
    • Mozilla Firefoxでユーザーエージェントを偽装して携帯サイトの閲覧が可能に。

自前Utilityクラス

2008年10月30日

私が使っている便利な関数を紹介していきます。
ウェブアプリでは、文字をチェック、加工したい場面が頻繁に訪れます。
よく使う処理を関数化して、このクラスに集めておくと便利です。

番号とパスワードの妥当性チェック

PHP

  1. function isDigit($id) {
  2.   if (!preg_match('/^[1-9][0-9]*$/', $id)) $id = '';
  3.   return $id;
  4. }
  5. function isPass($pass) {
  6.   if (!preg_match('/^[0-9a-z]+$/i', $pass)) $pass = '';
  7.   return $pass;
  8. }

isDigitは、引数が0から始まらず数字のみで構成されているかどうかを判断します。
単に数字の羅列かどうかを調べたいなら、is_numeric関数が用意されています。
isPassは、引数が半角英数字のみで構成されているかどうかを判断します。

メールアドレス、URLの妥当性チェック

PHP

  1. function isMail($mail) {
  2.   if (!preg_match('/^[\w\-\.]+@[\w\-]+(\.[\w\-]+)+$/', $mail)) {
  3.     $mail = '';
  4.   }
  5.   return $mail;
  6. }
  7. function isUrl($url) {
  8.   if (!preg_match('/^(https?|ftp):\/\/[\w+$\;?-\/.%,!#~*:@&=]+$/', $url)) {
  9.     $url = '';
  10.   }
  11.   return $url;
  12. }
  13. // \w = 英数字[_a-zA-Z0-9]

メールアドレスの妥当性はこれで大体計れますが、厳密には相当長い正規表現になります。更に、携帯用アドレスには例外もあります。旧J-PHONE機で「?」「/」「+」が含まれるものや、上記関数では通りますが、ピリオドが連続するような不思議なアドレスも存在します。

文字列からURLをリンクで置換する

PHP

  1. function autolink($str) {
  2.   return preg_replace(
  3.     '/(https?|ftp)(:\/\/[\w+$\;?-\/.%,!#~*:@&=]+)/',
  4.     '<a href="$1$2">$1$2</a>', $str);
  5. }

第二引数の$1、$2は後方参照と言って、第一引数内括弧()一番目、二番目に相当します。
($0は第一引数の正規表現全部にマッチした文字列になります。)

秒数を計る

PHP

  1. function getMicrotime() {
  2.   list($usec, $sec) = explode(' ', microtime());
  3.   return ((float)$sec + (float)$usec);
  4. }
  5. // $start = getMicrotime(); ~ループなどの処理~ $end = getMicrotime();
  6. // 所要時間(秒) = $end - $start;

ベンチマークなど、処理経過時間を計算したい時に使います。
microtime

文字列の最初と最後の余分なホワイトスペースを取り除く

PHP

  1. function mb_trim($str, $chars='\s ') {
  2.   $str = mb_ereg_replace("^[$chars]+"'', $str);
  3.   $str = mb_ereg_replace("[$chars]+$"'', $str);
  4.   return $str;
  5. }
  6. // \s = 空白文字[ \t\n\r\f]

内蔵のtrim関数に全角スペースを追加した機能。
(PHPでマルチバイトを正確に扱うには注意が必要です。)
マルチバイト文字列関数
UTF-8の場合はpreg_replaceで書けます。

PHP

  1. function mb_trim($str, $chars='\s ') {
  2.   $str = preg_replace("/^[$chars]+/u"'', $str);
  3.   $str = preg_replace("/[$chars]+$/u"'', $str);
  4.   return $str;
  5. }

改行コードをBRタグに変換する

PHP

  1. function nlToBr($str) {
  2.   $str = preg_replace("/\x0D\x0A|\x0D|\x0A/""\n", $str);
  3.   $str = preg_replace("/\n{3,}/""\n\n", $str);
  4.   $str = str_replace("\n"'', $str);
  5.   return $str;
  6. }

フォームから受け取った文章内の改行をBRタグに変換します。改行を表す改行コードはOSによって異なる為、統一してから変換するとどのOSでも同じ効果が得られます。

OS 表示記号 改行コード 改行文字
Windows CRLF \x0D\x0A \n
Macintosh CR (Carriage Return 改行) \x0D \n
Unix LF (Line Feed 行頭復帰) \x0A \n

(注) 内蔵のnl2br(string)は改行文字の前に改行タグを挿入します。


メールフォーム ES-FORM

2008年10月30日

特徴

管理画面から簡単にフォームを作成できます。
問い合わせ、商品注文、人材募集、事業見積もり、資料請求など様々な用途にご利用頂けます。
アンケートフォームとしても利用できる様に、選択項目の集計結果を記録します。
アップロード用のファイル選択フォームを複数配置する事も可能。
ファイルはメールに添付して送信されます。

  • こんな人に最適
    • フォームを作るのが面倒
    • 複数のフォームを一括して管理したい
    • 一風変わったオリジナルのフォームにしたい
    • 後でフォームの設定を変更したい
  • こんな使い方も
    • ブログやCMSなどの任意のページへ埋め込んで使いたい
      (フォーム部分だけ抽出して埋め込めば可能)

機能

  • 基本機能
    • PC用、携帯用の両方のフォームに対応(自動判別機能アリ)
    • 複数の受信アドレスを指定可能
    • フォーム毎に別々の受信アドレスを指定可能
    • 送信メールと控えメールの文面編集機能
    • メール文面にIPアドレスや問い合わせ番号などを追加可能
    • 送信ログの保存とダウンロード
    • 送信内容の選択項目を集計して記録
    • テンプレート編集機能
    • メールアドレスのリンクを掲載できる様に難読化済み
    • 他に管理画面からパスワードの変更やPHPのバージョン確認が行えます
  • フォームコントロール
    • フォーム一覧から編集、並び替え、削除が可能
    • 入力必須の切り替え
    • メールアドレス、郵便番号、入力確認などのフォーマット選択
    • 正規表現による独自の入力チェックと対応するエラー文のカスタマイズ
    • ime-modeなどのstyle設定
    • 入力文字数制限の設定
    • フォームの幅と高さの設定
    • フォーム右側に付ける単位や下に表示する記入例の設定
    • 選択肢を改行区切りで続けて入力可能
    • 選択肢のグルーピング機能
    • ラジオボタンとチェックボックスの途中改行が可能
    • 設定内容を確認できるプレビュー機能

推奨環境

PHP4.3以上推奨。
マルチバイト関数が有効になっている事。
セーフモードではお使いになれません。

サンプル

サンプル

ダウンロード

必ず利用規約を読んで、同意の上でダウンロードして下さい。esform.lzh

内容、構成

public_html / index.html (トップページ)
     │
     └─── esform [707]
                 │
                 └─── app [707] アプリケーションディレクトリ
                           │
                           ├─── data [707] データディレクトリ
                           │
                           ├─── log  [707] 送信ログディレクトリ(任意)
                           │
                           └─── tmp  [707] 一時ディレクトリ

以上のディレクトリは書き込み処理をするので、権限(パーミッション)を変更して下さい。

使用方法

  1. 解凍したファイルを全てアップロード。
  2. 上記ディレクトリの権限を変更。
  3. 転送先のindex.htmlへアクセス。

使用前の注意点

本スクリプトにはPHPの設定を含んだ.htaccessとphp.iniを同梱しております。サーバによっては、これらのファイルで設定を変更できない項目があったり、対応していないファイルを配置した場合に、500エラー(Internal Server Error)が出る場合があります。サーバによって設定方法が異なりますので、必ず運営会社の説明に従って使用して下さい。

携帯用フォームを作成する場合の注意点

  • PC用フォームを携帯と兼用する場合、AU端末において確認画面が文字化けする可能性があります。
  • ファイル送信フォームは一部の端末しか使えませんので、使う場合は必ず必須チェックを外しておきましょう。(主にSoftBank携帯が対応しています。)
  • テンプレートの文字コードであるUTF-8に対応していない旧型機種ではご利用頂けない場合があります。

更新履歴

2008/10/19 フォーム毎の受信アドレス設定追加
2008/10/02 テンプレート編集画面のプレビュー画面削除、オプション項目追加
2008/07/14 控えメール編集機能
2008/06/22 ファイル添付時に元のファイル名を表示する様に変更
2008/06/16 アンケートフォーム用の集計機能
2008/06/02 テンプレート自動選択機能を設定項目に追加
2008/06/01 PCと携帯の設定共有機能、PCと携帯のテンプレート自動選択機能
2008/05/28 携帯用テンプレートを選択肢に追加、管理画面のUI変更
2008/05/22 ファイル選択フォームの任意設定ミス修正
2008/03/19 控えメール文面に添付ヘッダが入ってしまうのを修正
2008/03/14 大文字拡張子のファイルが拒否されるのを修正
2008/02/28 ログ構成変更(以前のログと互換性がなくなりました。)
2008/02/15 メール文面のメールアドレスにmailto:追加
2008/01/26 インストーラ搭載
2008/01/23 送信ログを記録、日付の文字化けとfcloseの引数抜けを修正
2008/01/15 添付ファイルに対応、細かなバグフィクス
2008/01/01 リリース

シェアウェア 写メール掲示板 IMG-BBS+

2008年10月30日

機能

携帯からも操作しやすい軽快な画像掲示板です。主な機能は無料版IMG-BBSと共通します。
詳細は無料版のこちらのページをご覧下さい。

有料版の特徴

  • 構成
    • XHTML 1.0 Strict
    • PHP4、PHP5対応(少しの変更でPHP6にも対応)
    • テンプレートエンジン未使用(テンプレート内でPHPが使えます。)
  • 返信機能
    • 返信記事への返信に対応
    • 階層を把握しやすいツリー表示機能
  • 管理者機能
    • 記事の修正と削除
    • デフォルトの表示モード変更
  • 携帯用
    • 記事検索に対応
    • 画像リンクに画像サイズを表示
    • 写メールによる画像投稿の返信に対応
    • 写メール投稿のアドレス認証不要
  • その他
    • 騙り防止用トリップ表示
    • ホスト名から算出したID表示
    • メールアドレスが公開されないメールフォーム機能
    • アクセスカウンター (別途ダウンロード)

推奨環境

PHP4.3以上推奨。
マルチバイト関数が有効になっている事。
セーフモードではお使いになれません。

サンプル

PC用サンプル 携帯用サンプル

購入方法

5,460円(税込)
問い合わせフォームよりご注文頂けます。
購入希望の方は利用規約をご覧の上、無料版IMG-BBSにて動作検証をお願い致します。
入金の確認後にスクリプトをメールにてお渡し致します。

写メール投稿手順

投稿手順は無料版のアドレス認証がなく手軽になっています。

  1. 投稿フォームの「画像添付」にチェックを入れ記事を登録する。
  2. 「コチラ」をクリックしてメールを作成して送信する。
  3. 暫くしてから「受信ボタン」を押して記事を完成させる。

使用方法

  1. 解凍したファイルを全てアップロード。
  2. dataディレクトリと中のディレクトリの権限を757or707に変更。
  3. 転送先のindex.phpへアクセス。

更新履歴

2007/11/03 書き出し機能削除、キャッシュ機能追加
2007/10/29 タグの制限を緩和してYouTubeタグなどの複数属性に対応
2007/09/21 端末番号設定追加
2007/09/16 サムネイル加工設定追加、URL送信フォーム追加
2007/09/05 削除確認画面追加、顔文字パレット追加
2007/08/06 トリップ機能追加、UA投稿拒否設定追加
2007/07/13 写メール投稿大幅変更、発言ランク追加、管理者承認機能削除
2007/07/09 ID表示追加、携帯のメニュー追加
2007/04/14 管理者承認機能追加
2007/04/04 写メールの複数枚画像を一度にファイル化
2007/03/16 メールフォーム追加、EXIF画像の幅を取得
2007/03/13 RSS用スタイルシート追加
2007/02/18 トップページ書き出し機能追加、タグ有効化
2006/12/28 環境設定追加
2006/11/12 リリース

FLASH掲示板 FLA-BBS

2008年10月30日

機能・特徴

  • Macromedia FLASHを使った掲示板
  • 付属のCSSでテキストの装飾を変更可能
  • タイトルごとに記事を一覧表示
  • REP-BBSとログの共有が可能

推奨環境

  • PHP
    • 4.3以上推奨。(4.2.3で不具合報告、4.2.4で完動報告あり。)
    • マルチバイト関数が有効になっている事。
  • FLASH
    • プラグイン バージョン7以上。
    • FLASH MX 2004 ver7.0.1にて製作

サンプル

サンプル FLASHプレイヤー

ダウンロード

必ず利用規約を読んで、同意の上でダウンロードして下さい。flabbs.lzh

内容、構成

public_html / index.html (トップページ)
     │
     └─── flabbs [701] / config.php  [604] 設定ファイル
                │           flabbs.php  [604] PHPファイル
                │           amfdata.php [604] PHPファイル
                │           log.cgi     [606] ログファイル
                │           flabbs.swf  [604] FLASHファイル
                │           flabbs.css  [604] FLASH用スタイルシート
                │           flabbs.html [604] アクセスファイル
                │
                └───── lock        [707] ロックディレクトリ(任意)

CSS改造の注意点

FLASH用のCSSは通常のHTML用と比べると解釈が違ったりエラーが出やすい特徴があります。エラーが直せない場合はサポート掲示板にて対応します。

使用方法

  1. ダウンロードしたファイルを解凍する。
  2. config.phpをメモ帳で開いて設定する。
  3. 転送してパーミッションを変更する。
  4. 転送先へブラウザでアクセス。

FAQページ

更新履歴

2007/02/11 エラー文はみ出し現象修正
2007/01/25 編集機能追加
2005/11/04 リリース

アクセスカウンター S-COUNTER

2008年10月30日

特徴、機能

  • シンプルで高速なアクセス・カウンター
  • 累計、昨日、今日、一定時間内、を計測
  • テキスト、画像(非連結)、一枚画像の3つの表示モード搭載
  • カウンター掲載側から桁数と表示モードの変更が可能
  • 一定時間内の連続アクセスカウント防止機能
  • 巡回クローラのカウント防止機能
  • 累計のキリ番メッセージ表示機能
  • 耐久性のあるファイルロック機能
  • アクセス統計機能搭載
  • 便利な携帯判別関数を搭載

サンプル

累計 昨日 今日 閲覧中
                      

統計サンプル

ダウンロード

必ず利用規約を読んで、同意の上でダウンロードして下さい。scounter.lzh

内容、構成

your_root / index.php (トップページ)
    │
    └─── scounter [701] / scounter.php
               │             scounter.html
               │             report.php
               │             report.html
               │             common.css
               │             sprite.css
               │
               ├────── data [707] データディレクトリ
               │
               └────── gif  [701] 画像ディレクトリ (任意)

使用方法

  1. ダウンロードしたファイルを解凍する。
  2. scounter.phpをメモ帳などで設定をする。
  3. ページにカウンターを埋め込む。
  4. 転送してdataディレクトリのパーミッションを変更する。
  5. カウンター掲載ページへアクセス。

FAQページ

カウンターの埋め込み方

このカウンターはPHP製ですので、埋め込むページがPHPファイルでなければいけません。HTMLファイルでも、拡張子を.phpに変えると使えるかもしれません。

まず、カウンタースクリプトを読み込んで下さい。アクセスすると$sc変数が生成されてカウントされます。内蔵の携帯判別関数を使えば、携帯の処理を分岐させる事もできます。PCと携帯で異なる表示モードを利用できます。

PHP

  1. require_once './scounter/scounter.php';
  2. if ($sc->isMobile()) {
  3.   // 携帯用の画面を出力
  4. } else {
  5.   // パソコン用の画面を出力
  6. }

最後に、データを引っ張ってきます。
各カウントは桁数指定でき、それに満たない場合は左側に0が補われます。
(桁数を指定しなかった場合や、指定桁数を超えた場合は整形されません。)

3桁毎のカンマ区切りにしたい場合は桁数の次に1を与えて下さい。
[例:7桁カンマ区切り] total(7, 1) => 1.234.567

PHP

  1. 累計のカウントは<?php echo $sc->total(桁数); ?>
  2. 昨日のカウントは<?php echo $sc->yesterday(桁数); ?>
  3. 今日のカウントは<?php echo $sc->today(桁数); ?>
  4. 閲覧中のカウントは<?php echo $sc->online(桁数); ?>
  5. キリ番の時だけ表示されるメッセージ<?php echo $sc->just(); ?>

画像モード

画像モードの場合は、0.gif~9.gifとカンマのc.gifを用意して下さい。
画像のディレクトリも設定します。(デフォルトは./scounter/gif/)
表示前にディレクトリを変更すれば、合計と今日のカウントを別々の画像にする事もできます。

PHP

  1. // 画像モードにする
  2. $sc->setMode('image');
  3. // 画像ディレクトリを設定
  4. $sc->setImgDir('/images');

スプライトモード(一枚画像モード)

このモードは、画像ファイルを一枚だけ使うので、桁数分の画像リクエストが発生せず、表示速度も上がります。ただし事前に手間がかかるので、サーバの負荷を極力減らしたいヘビーユーザー向けの機能です。

PHP

  1. // スプライトモードにする
  2. $sc->setMode('sprite');

一枚の画像を使って、各桁をspan要素の背景で表現します。例えば32は以下の様に出力されます。

HTML

  1. <span class="d3"> </span><span class="d2"> </span>

まず、10桁がまとまった1枚画像(0~9の横並びが良いでしょう)を用意し、各桁の位置と幅をCSSで指定します。カンマ区切りにする場合はカンマ画像も追加します。以下の参考CSSを同梱しておりますので、読み込むページに合わせて文字コードを変換してお使い下さい。

CSS

  1. /* 一枚画像モード用CSS */
  2. #counter {
  3. }
  4. /* 背景や幅を設定する為にブロック化して桁を並べる */
  5. #counter span {
  6.   display: block;
  7.   float: left;
  8. }
  9. /* 累計、昨日、今日、閲覧中の桁要素を包む要素 */
  10. #counter span.wrapper {
  11.   margin-right: 8px;
  12. }
  13. /* 桁要素に画像背景を設定 */
  14. #counter span span {
  15.   background: url(/scounter/gif/sprite.gif);
  16.   background-repeat: no-repeat;
  17. }
  18. /* 画像背景の位置と幅を調節 .dcはカンマ */
  19. #counter .d0{background-position:   0px 0px; width: 7px;}
  20. #counter .d1{background-position: -10px 0px; width: 4px;}
  21. #counter .d2{background-position: -20px 0px; width: 7px;}
  22. #counter .d3{background-position: -30px 0px; width: 7px;}
  23. #counter .d4{background-position: -40px 0px; width: 7px;}
  24. #counter .d5{background-position: -50px 0px; width: 7px;}
  25. #counter .d6{background-position: -60px 0px; width: 7px;}
  26. #counter .d7{background-position: -70px 0px; width: 6px;}
  27. #counter .d8{background-position: -80px 0px; width: 7px;}
  28. #counter .d9{background-position: -90px 0px; width: 7px;}
  29. #counter .dc{background-position: -100px 0px; width: 4px;}

例えば以下の様に埋め込んだ場合は、その下の様に出力されます。

PHP

  1. <p id="counter">
  2.   <?php echo $sc->total(2); ?>
  3.   <?php echo $sc->today(2); ?>
  4. </p>

HTML

  1. <p id="counter">
  2.   <span class="wrapper" title="total">
  3.     <span class="d8"> </span><span class="d5"> </span>
  4.   </span>
  5.   <span class="wrapper" title="today">
  6.     <span class="d2"> </span><span class="d3"> </span>
  7.   </span>
  8. </p>

更新履歴

2009/10/22 データ破損時に処理が中断してしまう問題を解消、携帯判別にiPhoneとAndroid追加
2009/08/11 処理速度向上、カウンター値確認画面追加
2009/05/28 携帯判別関数追加
2009/05/27 設定値や関数をclassで隠蔽
2009/05/23 スプライトモードのカンマ区切りに対応
2008/10/02 統計画面に月別アクセス数を表示
2008/08/23 表示モード設定削除
2008/03/10 大晦日のデータを翌年のレポートファイルに記録してしまうバグ修正
2008/02/16 簡単な統計レポート表示追加
2007/10/17 スプライトモード追加
2007/09/23 ファイルロックを更に強化
2007/09/19 ファイルロックを修正
2007/05/20 ロボットのカウント除外設定追加
2006/11/26 キリ番機能、一定時間内計測、などの変更と追加
2005/08/01 リリース

写メール掲示板 IMG-BBS

2008年10月30日

特徴

  • 画像対応形式(JPG、GIF、PNG)
  • サムネイル作成表示(環境による)
  • テンプレート採用で楽々デザイン変更
  • ページ切替ボタン、表示切替ボタン、メニューボタンの充実
  • 携帯には半角片仮名と短い日付で軽く表示
  • 写メールによる携帯画像投稿(要POP3サーバ)※

※携帯からの画像添付メールのみ受付、写メールを送信後にフォームから文章を追加

基本機能

  • PC機能
    • 書込、返信、修正、削除、検索、管理、過去ログ、クッキー任意記録、RSS発行、
      記事個別表示、スレッド表示、ツリー表示、トピック表示、画像一覧表示
  • 携帯機能
    • 記事個別表示、トピック表示、書込、返信、修正、削除、管理、写メール画像投稿
  • 共通機能
    • 空投稿防止、連続投稿防止、ファイルロック、サムネイル作成(環境による)、
      本文URL自動リンク(ON/OFF) 、投稿メール通知(親投稿/全投稿/OFF)
  • スパム対策
    • 平仮名を含まない投稿の拒否、迷惑ホストアクセス制限、投稿禁止語句設定

推奨環境

PHP4.3以上推奨。(4.2.3で不具合報告、4.2.4で完動報告あり。)
マルチバイト関数が有効になっている事。
セーフモードではお使いになれません。

写メール投稿手順

携帯からの画像投稿は、スパムメールや必須項目の記入漏れを防ぐ理由で、写メールを送っただけでは記事に反映されないようになっています。

  1. 携帯のメールに写真(1枚のみ)を添付して送信
  2. BBSにアクセスして「写メール」ボタンを押す
  3. メールアドレスを入力して認証(認証フォームが現れない場合は、メールが届いていません。)
  4. 文章追加フォームで書き込み
  5. 投稿完了

サンプル

PC用サンプル 携帯用サンプル

ダウンロード

必ず利用規約を読んで、同意の上でダウンロードして下さい。imgbbs.lzh

使用方法

  1. ダウンロードしたファイルを解凍する。
  2. 転送してパーミッションを変更する。
  3. 転送先へブラウザでアクセス。
  4. パスワードを設定。

FAQページ

更新履歴

2007/05/09 ロボット排除タグ追加
2006/11/15 SoftBank UserAgent追加
2006/10/13 携帯用説明ページ追加
2006/09/02 通知メール文字化け対策
2006/08/19 スパム設定追加
2006/07/07 トピック表示機能追加 デザイン変更
2006/06/06 スパム設定追加
2006/03/31 携帯サムネイル画像に対応
2006/03/21 禁止語句設定追加
2005/08/06 RSS追加
2005/06/01 メール解析処理強化
2005/04/03 ツリー表示機能追加
2005/03/06 画像一覧表示機能追加
2005/03/05 携帯ツリー表示に変更
2005/03/03 携帯管理機能追加
2005/02/20 修正画面からの画像変更に対応
2005/02/07 携帯の二重投稿防止
2005/01/29 ピリオド連続使用アドレスの写メール投稿に対応
2005/01/25 ファイル1つ削減
2005/01/21 ファイルロック強化
2005/01/18 携帯返信機能追加
2005/01/16 ファイル1つ削減
2005/01/13 ファイル容量エラー出力ミス修正
2004/12/28 半角カナ投稿文字化け修正 携帯版カナ表示を半角に変更
2004/12/25 想定外ページ数エラー追加
2004/12/22 ピリオドを含む携帯アドレス判別ミス修正 画像権限強制変更
溢れた記事の画像を残す選択肢追加
2004/12/19 画像削除ミス修正
2004/12/17 リリース

携帯対応掲示板 REP-BBS

2008年10月30日

特徴

  • テンプレート採用で楽々デザイン変更
  • シンプルなデザインで見やすい記事
  • RSSで新着記事をいち早くチェック
  • 携帯からの閲覧、書込に対応
  • 携帯には半角片仮名と短い日付で軽く表示

基本機能

  • PC機能
    • 書込、返信、修正、削除、検索、管理、過去ログ、クッキー任意記録、RSS発行
  • 携帯機能
    • 記事個別表示、トピック表示、書込、返信、修正、削除、管理
  • 共通機能
    • 空投稿防止、連続投稿防止、ファイルロック、本文URL自動リンク(ON/OFF)
      投稿メール通知(親投稿/全投稿/OFF)
  • スパム対策
    • 平仮名を含まない投稿の拒否、迷惑ホストアクセス制限、投稿禁止語句設定

推奨環境

PHP4.3以上推奨。(4.2.3で不具合報告、4.2.4で完動報告あり。)
マルチバイト関数が有効になっている事。
セーフモードではお使いになれません。

サンプル

PC用サンプル 携帯用サンプル

ダウンロード

必ず利用規約を読んで、同意の上でダウンロードして下さい。repbbs.lzh

使用方法

  1. ダウンロードしたファイルを解凍する。
  2. 転送してパーミッションを変更する。
  3. 転送先へブラウザでアクセス。
  4. パスワードを設定。

FAQページ

更新履歴

2007/05/09 ロボット排除タグ追加
2006/11/15 SoftBank UserAgent追加
2006/10/13 携帯用説明ページ追加
2006/09/02 通知メール文字化け対策
2006/08/19 スパム設定追加
2006/07/07 トピック表示機能追加
デザイン変更
2006/06/06 スパム設定追加
2006/03/21 禁止語句設定追加
2005/08/06 RSS追加
2005/03/05 携帯ツリー表示に変更
2005/03/03 携帯管理機能追加
2005/02/07 携帯の二重投稿防止
2005/01/21 ファイルロック強化
2005/01/18 携帯返信機能追加
2005/01/16 デザイン変更とモバイル対応化
2004/12/25 アクセスファイル名取得ミス修正
2004/11/20 リリース

スクリプトFAQ

2008年10月30日

ファイルのアクセス権(パーミッション)

変更なしで動作する場合は問題ありません。主に変更が必要なのは書込みされるファイル及びディレクトリです。サーバ会社の説明に従って変更して下さい。
ファイル 666 606
ディレクトリ 757 707

記事が文字化けします

PHPの関数用文字コードや出力文字コードは、予めサーバ側で設定されています。この為、スクリプトの文字コードとサーバの設定値が異なった場合に文字化けが起こります。 設定方法は様々ですが、レンタルのホスティング・サービスでは、主に以下の方法で行えます。セキュリティ上の理由から変更できない項目が設けられている場合があります。必ずサーバ会社の説明に従って設定して下さい。

  • httpd.confにて設定(サーバ単位)
  • コントロールパネルから設定(ドメイン単位)
  • php.iniを配置して設定(ディレクトリ単位)
  • .htaccessを配置して設定(ディレクトリ単位)
  • プログラムからini_set関数で設定(プログラム単位)

サーバのPHPの詳細を知りたい

PHPのバージョンや導入されているライブラリなどの詳細を知りたい場合、以下のコードをphpinfo.phpファイルに記載の上、サーバに転送してブラウザでアクセスして下さい。ただし、このファイルを放置しておくと悪意ある第三者に情報を与える事になりますので、用が済んだら削除しておきましょう。
<?
phpinfo();
?>

セーフモードって何?

お使いのサーバでPHPがセーフモードで稼動している場合は、機能が制限されます。
主に以下の機能が使えません。

過去ログなどの、ファイルやディレクトリを操作する機能
リロードなどのリダイレクト機能

写メール投稿でエラーが出ます

Warning: fsockopen(): unable to connect to ~
Warning: fsockopen(): php_network_getaddresses ~
このエラーが出る場合、メールボックスへの接続ができない為、写メール投稿が出来ません。設定が不安なら、一度メールソフトでメールを受信できるか試してみましょう。このエラーはPHPの機能が制限されている低価格なレンタルサーバに多いようです。

サムネイルが表示されず、テキストリンクになります

サムネイル作成にはグラフィック用のGDライブラリが必要です。これがない場合、サムネイルは作成されずにテキストリンクになります。GDのバージョン1.6以前ではPNGがサポートされておらず、1.6以降ではライセンスの関係上GIFがサポートされなくなりました。 2.0.28からGIFが再度サポートされているようです。

携帯で画像が見れません

機種によって様々ですが、携帯が表示できる画像は種類、幅、容量の厳しい制限があります。特にPCから投稿された画像は幅が大きく、容量が小さくても表示できない場合があります。どうしても携帯で見れるようにしたい場合は、こんなサイトがありますので改造してみて下さい。

携帯用にQRコードを作成したい

オンラインで作成できるサービスがあります。
Googleで検索

htmltemplateタグ説明

htmltemplateを使用したHTMLファイルには、PHPからデータを受け取る為の専用タグを使っています。中でも制御用のタグは、通常の HTMLタグ同様に開始タグと終了タグで対になっており、どちらが欠けてもエラーが出てしまいますので、消さないように注意して下さい。

ループタグ(主に記事を表示させるのに使います。)
<!--{each DATA/key}-->
<!--{/each}-->

分岐タグ(データがあった場合だけ表示させます。)
<!--{def DATA/key}-->
<!--{/def}-->

分岐タグ(データがなかった場合だけ表示させます。)
<!--{ndef DATA/key}-->
<!--{/ndef}-->