PHPマスター

プログラム言語の勉強はPHPからスタート!

Browsing Posts tagged file

$count = count(file('FILENAME'));

管理システムを作ろうとするとどうしてもアクセス制限をする必要があります。ApacheのソースIP制限が最も有効ですが、ユーザ登録をした人に対してログインさせる場合はそうもいきません。また、パスワードは万一流出しても暗号化しておく事も重要です。

今回のソースは、Crypt関数で暗号化されたパスワードで認証することとします。これで、UNIX系のサーバであれば「htpasswd」コマンドで作成したファイルがそのまま利用できます。

Crypt関数認証を行う場合、次のようにパスワードが合っているか確かめます。

if(ファイルに保存された暗号化パスワード == crypt(入力されたパスワード,
   ファイルに保存された暗号化パスワード))

continue reading…

プログラミングにおいて簡易カウンターを作る事で「ファイルの読み込み」「ファイルのデータ取得」「データの加工」「ファイルへの書込」という基本事項が学べます。注意すべき点は、ファイルに対する同時書き込みの制御です。データベースでは、トランザクションや排他ロックなどのしくみがデータベースサーバ自体にあらかじめ備わっていますが、単なるテキストファイルとなると、また、あなたの作るプログラムにその機能を実装しなければなりません。

プログラム言語には排他処理を司るコマンドが用意されていますのでそれを使うだけの話ですが、「ファイルへの書込」の排他制御は常に意識しておきましょう。

<?php
//
$num = 0;
$cfile = "./count.txt";
//$data  = file($cfile);
//$old   = $data[0];
$data  = fopen($cfile,"r+");
$old   = fgets($data, 1024);
$old   = str_replace('', "\n|\r", $old);
if(!$old) { $old = $num; }
//
$new   = $old + 1;
$fp = fopen($cfile,"w+");
flock($fp, LOCK_EX);
fputs($fp, $new);
flock($fp, LOCK_UN);
fclose($fp);
//
print $new;
//
?>

continue reading…

PHPに限らずプログラムを組む場合、文字列検索をする場合が非常に多いことに気づきます。任意のファイルから入力された文字列を検索して表示するという処理が最も一般的でしょう。

アルゴリズム
1) 任意のファイルを配列に格納
2) 1行ずつ文字列が存在するかチェック
3) 文字列見つかったらその1行を配列へ格納
4) 最期に見つけてきた行を格納した配列を表示

使う関数
file, for, strpos, preg_match

■strposを使った文字検索

<?php
$str = "test";
$mystr = "This is a test.";
if(strpos($mystr, $str) > -1) { print "ari"; }
else { print "nasi"; }
?>

■preg_matchを使った文字検索

<?php
$str = "test";
$mystr = "This is a test.";
if(preg_match("/$str/", $mystr)) { print "ari"; }
else { print "nasi"; }
?>

では、特定のファイルを開いて、任意の文字列が含まれているかチェックし、含まれていたらその行を表示してみましょう。
continue reading…

XOOPSやWordPressなど、他人が作ったデザインに対してもう少し「こうしたい!」と思うことが多々あります。Smartyのテーマで作られたデザインであれば、Smartyをちょっと変更したり、CSSを変更したりして見た目は変えられます。

ただ、やりたいことが動的な項目の場合、どうしてもプログラムを組む必要があります。システムを改変するより、Smartyにプログラムをちょっと書いて対応させてみましょう。

Smartyとは
Smartyで使用するテンプレートでは、単に値をはめ込むだけでなく、if文による条件分岐やforeachによるループ処理など、必要最低限の制御構造や組み込み関数が利用可能です。もちろんこうした機能の利用は必須ではなく、HTMLテキストと単純な変数のみでテンプレートをまとめることもできます。

 またSmartyは動作速度の面でも秀でています。最初にリクエストが発生した際に、テンプレートファイルを実行可能なPHPスクリプトにコンパイルし、その後のリクエストではコンパイルされたPHPスクリプトを再利用します。テンプレートに変更が加えられたときにのみコンパイルを再実行するなど効率面でも優れています。

 ほかにも、キャッシュ機能を搭載するなど、PHP本来のパフォーマンスを損なうことなく、ロジックとデザインを分離することができます。

XOOPSを例にすると、theme.htmlに次のように直接PHPを記述できます。

<{php}> ~~ <{/php}>

continue reading…

Powered by WordPress Web Design by SRS Solutions © 2018 PHPマスター Design by SRS Solutions