PHP関連記事 - 連続表示

新規書き込み

※該当の記事タイトル一覧はリンク一覧から参照できます。

PHP学習におススメの本

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2007年11月24日
今までにPHP関連の書籍を3冊購入しましたが、どれも使える本だったので、ここに詳しく紹介したいと思います。

Web開発者のためのPHPベストサンプル集
私が初めて購入したPHP本です。「文字列を操作する」「ファイルの情報を習得する」「セッション処理の基本」など、サンプルプログラムを添えて、項目別にわかりやすく書かれています。どちらかと言うと、Perlなどのプログラム言語を知っている人が「PHPをはじめたい」という場合に向いており、プログラム言語初心者には、少々ハードルが高いかも知れません。

PHP ポケットリファレンス (Pocket reference)
PHPの「コマンド辞典」のような感じです。サイズが小さいので、小さな本棚でも入るのが嬉しいです。この本は「関数の引数の順番を忘れた」とか、「どんなコマンドがあるのか」など、PHPの細かいところを調べるのに向いています。ただ、慣れている人はホームページで調べる方がいいのかも知れませんね(私は「本派」ですが)。

Programming PHP(洋書)
アメリカから取り寄せて、納期が2週間もかかりました。洋書で、もちろん英語で書かれていますが、「変数(Variables)とは」とか「演算子(Operators)とは」とか、プログラミングの初歩的なところから丁寧に説明しているので、プログラム言語初心者にお勧めの本です(ただし、要英語力)。もしくは、PHPの知識がある人が、英語の勉強をするのにいいかも知れません。

今ではコンピュータ言語を学習するのも、「ホームページで調べながら」という人が多いと思いますが、学習の初期段階においては、本を見ながらの方が効率がいいことがあります。ホームページでは自分の調べたい事を調べるには便利ですが、「こういう方法もあったのか」という発見を得ることは難しいと思います。本の場合には最初から最後まで目を通すだけでも、自分の考えもつかなかったアイデアが、突然現れたりすることもあります。



PHP関連記事(リンク一覧): さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / PHP REVERSI(オセロもどき)の続き / PHP REVERSI(リバーシ) - オセロもどきゲームの公開 / PHP版-簡易アクセスブロック(IPアドレス、ホスト名、OS、ブラウザ名で制御) / ...(記事連続表示)

PHP簡易アクセスカウンター

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2007年10月27日
3年ほど前に作成したジョークサイト「世界一大きなアクセスカウンター」ですが、メインのカウント部分のプログラムはPerlで作られていました。しかし、このサイトのちょっとしたリニューアルを考えていて、今後のことも考えてPHPで新たにプログラムを作りなおしました。

とは言ってもかなり単純なもので、心臓のカウント部分は下記のプログラムの通りです。カウンターファイルが読み込めなかった場合や、同一人物からの大量のアクセスなど、トラブル処理には全く対応していませんが、何しろ基本はこれだけなのです。"0.gif"、"1.gif"、"2.gif"…、"9.gif"という数字の画像ファイルと、下記のプログラムを書き込んだPHPファイルさえあれば、アクセスカウンターとして立派に動作します。

■■簡易アクセスカウンター■■
<?php

//カウンターファイルを読み込みのみでオープン
$fp = fopen('counter.cnt','r');

//数値をファイルから読み込む
$no = fgets($fp);

//数値に1を加える
$no += 1;

//カウンター表示用の変数に数値を代入
$hyoji = $no;

//繰り返し処理で6桁分表示
for ($dig = 5; $dig >=0; $dig--) {

//乗数計算
$keta = pow(10,$dig);

//表示する数字を変数に代入
$suji = floor($hyoji/$keta);

//数値をGIF画像で表示
print '<img src="'.$suji.'.gif">';

//繰り返し処理の該当桁の数字をマイナス
$hyoji = $hyoji - $suji * pow(10,$dig);

}

//カウンターファイルを書き込みのみでオープン
$fp = fopen('counter.cnt','w');

//カウンターファイルに数値を書き込む
fputs($fp,$no);

?>
■■■■■■■■■■■■■■■

具体的に「世界一大きなアクセスカウンター」をどうリニューアルするかは…、お楽しみにしておいてください。多分、誰も期待していないでしょうけど。



PHP関連記事(リンク一覧): さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / PHP REVERSI(オセロもどき)の続き / PHP REVERSI(リバーシ) - オセロもどきゲームの公開 / PHP版-簡易アクセスブロック(IPアドレス、ホスト名、OS、ブラウザ名で制御) / ...(記事連続表示)

PHP簡易おみくじメール送信プログラム

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2007年10月25日
PHPミニプログラム第5弾は、「簡易おみくじメール送信プログラム」です。あなたのメールボックスに、おみくじを届けます。

今回は「空ファイルの作成」、「ファイルの作成日時チェック」、「古いファイルの削除」、「ディレクトリ内のファイル検索」などを習得する目的で作りました。当初メールを送る関数"mb_send_mail"が、文字化けが発生してうまく使えなかったのですが、エンコード設定を正しくやることで解決しました。

■簡易おみくじメール送信プログラム■
<?php

//おみくじの種類
$omik = array('大吉','中吉','小吉','吉','凶','大凶');

//乱数ジェネレーターの初期化
srand(microtime()*1000000);

//乱数の発生(10000~99999);
$rd = rand (10000,99999);

//空ファイル(キーファイル)の作成
touch( $rd.".omikuji");

//タイトル画像ファイルの読み込み
$titl = imagecreatefromjpeg("jinja.jpg");

//キーの色
$fontcol = imagecolorallocate($titl,0,0,0);

//タイトル画像にキーを書き込み
imagestring ($titl,5,rand(125,170),rand(180,200),$rd,$fontcol);

//タイトル画像のファイル作成
imagejpeg($titl,"jinja01.jpg");

//タイトル画像表示
print '<img src="jinja01.jpg"><br>';

//今現在のタイムスタンプを取得
$timnow = time();

//ディレクトリハンドルをオープン
$res_dir = opendir( '.' );

//ディレクトリ内のファイル名を1つずつを取得
while( $file_name = readdir( $res_dir ) ){

//omikujiの拡張子の名が入ったファイル名のみを表示
if (eregi(".omikuji",$file_name)){

//該当キーファイルの作成日時の取得(現在時間-該当ファイル作成日時)
$stam = filectime($file_name);

//作成から3600秒以上経過したキーファイルは削除
if (($timnow - $stam) > 3600){
unlink($file_name);
}

}

}

//ディレクトリ・ハンドルをクローズ
closedir( $res_dir );

//ファイルの存在の有無チェック
if ($_GET[KEY]!="") {
if (file_exists($_GET[KEY].'.omikuji')) {

//該当キーファイルの削除
unlink($_GET[KEY].'.omikuji');

//おみくじ選択
$rd2 = rand (0,5);
$comment = $omik[$rd2];

//エンコード設定
mb_language("ja");
mb_internal_encoding("SJIS");

//メール送信
mb_send_mail($_GET[ADDRESS],'PHP簡易おみくじメール送信プログラム','あなたの今日の運勢は'.$comment.'です。','From:web_server@kunisan.jp');
print '<font color="red">おみくじメールが送信されました。</FONT><br>';
} else {
//正しくないキー入力
print '<font color="red">正しいキーが入力されていません。</font><br>';
}
}

//HTMLフォーム
print '
<form action="'.$_SERVER[PHP_SELF].'" method="get">
上に表示されている5桁の数字を
入れてください(半角数字)。<br>
<input size="12" type="text" name="KEY"><br>
メールアドレスを入れてください。<br>
<input size="24" type="mail" name="ADDRESS"><br>
<input type="submit" name="SUBMIT" value="送信"><br>
</form>
'

?>
■■■■■■■■■■■■■■■

いつも通りですが、暇な方は遊んでみてください。



PHP関連記事(リンク一覧): さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / PHP REVERSI(オセロもどき)の続き / PHP REVERSI(リバーシ) - オセロもどきゲームの公開 / PHP版-簡易アクセスブロック(IPアドレス、ホスト名、OS、ブラウザ名で制御) / ...(記事連続表示)

PHPテキストページ閲覧君

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2007年10月17日
懲りずに「PHP」ミニプログラム第4弾、「PHPテキストページ閲覧君」です。「URL」の欄にホームページのアドレスを入力すると、画像やテーブルを一切取り除いた形で、テキストが表示されます。一応、携帯でブログの文章のみをチェックしたい時などに使えるかなと思いましたが、本当に使えるのかどうかは定かではありません。(携帯サイト - http://kunisan.jp/m/text/)

「Perl」で同様の処理をやろうとすると、正規表現の表記がやや面倒なのですが、「PHP」ではコマンド一つで簡単にできます。やはり、新しい言語はより便利になっているんですね。

余談ですが、雑誌や書籍などでは携帯のことを「ケータイ」とカタカナで書くんですね。つい先日まで気づきませんでした。

■■■テキストページ閲覧君■■■
<?php

//HTMLフォーム
print '<form action="striptag.php" method="get">';

//フォーム情報取得
$d1 = $_GET[DATA1];

//ホームページのHTML取得
$html = file_get_contents($d1);

//フォームが空の場合の処理
if ((($d1 == "")||($d1 == "http://"))&&($html == "")) {
$d1 = 'http://';
$html = 'URLを入力してください。';
}
if (($d1 != "")&&($html == "")) {
$html = 'データを表示できません。';
}

//HTML表示
print 'URL: <input type="text" value="'.$d1.'" name="DATA1" size="24"><br>';
print '<input type="submit" value="テキスト閲覧">';
print '</form>';

//HTMLタグの除去
$html01 = strip_tags($html,"<br>");

//テキスト表示
print $html01;

?>
■■■■■■■■■■■■■■■



PHP関連記事(リンク一覧): さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / PHP REVERSI(オセロもどき)の続き / PHP REVERSI(リバーシ) - オセロもどきゲームの公開 / PHP版-簡易アクセスブロック(IPアドレス、ホスト名、OS、ブラウザ名で制御) / ...(記事連続表示)


PHP適正スポーツ診断

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2007年10月16日
PHPミニプログラム第3弾は、『適正スポーツ診断』です。64種類ものスポーツから、あなたに合ったものを一つだけ選んでくれます。

タネを明かすと、「名前」を1バイトずつに分けて、そのコードの合計値を64で割った「余り」によって結果が変わるというものです。プログラムを見れば、わかる人はわかると思います。

■■■■適正スポーツ診断■■■■
<?php

//フォームの受け取り
$d1 = $_POST[DATA1];

//配列変数への代入
$sports = array('マラソン','走り幅跳び','走り高跳び','棒高跳び','砲丸投げ','円盤投げ','ハンマー投げ','サッカー','サッカー(ゴールキーパー)','野球(ピッチャー)','野球(野手)','ソフトボール','テニス','ゴルフ','ラグビー','アメリカンフットボール','ビーチバレー','自転車(2人乗り)','自転車','射撃','アーチェリー','バスケットボール','バレーボール','ハンドボール','バドミントン','卓球','フェンシング','つり輪','あん馬','平行棒','鉄棒','平均台','段違い平行棒','トランポリン','新体操','重量挙げ','レスリング','ボクシング','プロレス','ボディビル','柔道','空手','相撲','剣道','弓道','クロール','平泳ぎ','バタフライ','高飛び込み','シンクロナイズドスイミング','水球','クロスカントリースキー','スキー','モーグルスキー','スキージャンプ','ショートトラックスケート','スピードスケート','アイスホッケー','カーリング','スケルトン','ボブスレー(2人乗り)','ボブスレー(4人乗り)','リュージュ(2人乗り)','フィギュアスケート');

//空白の除去
$d1 = str_replace(" ","",$d1);
$d1 = str_replace(" ","",$d1);

//文字列の長さ
$l1 = mb_strlen($d1);

//文字数分繰り返し
for ($count = 1; $count <= $l1; $count++){

//1文字取り出し
$moji = substr($d1,$count,2);

//取り出した文字のアスキーコードを取得
$ascc = ord($moji);

//アスキーコードの合計値計算
$sumas += $ascc;

}

//アスキーコード合計値を64で割った時の余り(最大値63)
$amari = $sumas - floor($sumas/64)*64;

//画像&メッセージ表示
if ($d1 == "") {
print '<img src="sptt.gif" alt="適正スポーツ診断"><br><br>';
print 'あなたのお名前から、一番合ったスポーツを診断します。<br><br>';
} else {
print '<img src="sp'.$amari.'.gif"><br>';
print $d1.'様<br>';
print 'あなたに一番合ったスポーツは、「'.$sports[$amari].'」です。<br><br>';
}

?>
■■■■■■■■■■■■■■■

画像が携帯サイトでも表示できるサイズなので、近いうちに携帯用にも公開してみようと思います。まあ、暇つぶしにはちょうどいいかなと…。



PHP関連記事(リンク一覧): さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / PHP REVERSI(オセロもどき)の続き / PHP REVERSI(リバーシ) - オセロもどきゲームの公開 / PHP版-簡易アクセスブロック(IPアドレス、ホスト名、OS、ブラウザ名で制御) / ...(記事連続表示)

PHPデカ - ホスト名、OS、ブラウザーを言い当てます

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2007年10月15日
「PHP」を学習し始めてから3日ほど経ちますが、データベース関連以外の関数は、ほぼ習得できました。「Perl」さえ知っていれば「PHP」への乗り換えも、そんなに難しくはなさそうです。今後はサーバーサイドスクリプトを作成する時には、できるだけ「PHP」で作ってみようと思います。

「PHP」自作プログラム第2弾は、「PHPデカ」です。あなたのホスト名、OS、ブラウザーを言い当てます。またまた大したプログラムではありませんが、こうしたミニプログラムの知識をいくつも集めていくと、後の大規模プログラム作成時の糧ともなってきます。

■■■■■■PHPデカ■■■■■■
<?php

//現在の日時を取得
$now = getdate();

//センテンス(1)
$mes .= "君はこのページに".$now[year]."年";
$mes .= $now[mon]."月";
$mes .= $now[mday]."日";
$mes .= $now[hours]."時";
$mes .= $now[minutes]."分";
$mes .= $now[seconds]."秒にアクセスしてきた。";
$mes .= "つまりこの時間のアリバイは作られたというわけだ。";

//IPアドレス取得
$ip = $_SERVER['REMOTE_ADDR'];

//ホスト名の取得
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);

//センテンス(2)
$mes .= "しかし、君のIPアドレスは".$ip."、つまりインターネットを".$hostname."経由で接続している。";

//ユーザーエージェント取得
$usera = $_SERVER['HTTP_USER_AGENT'];

//センテンス(3)
$mes .= "しかもパソコンのOSは";
$mes .= (ereg("Windows 98",$usera)?"Windows98":"");
$mes .= (ereg("Windows 98; Win 9x 4.90",$usera)?"WindowsMe":"");
$mes .= (ereg("Windows NT 5.0",$usera)?"Windows2000":"");
$mes .= (ereg("Windows NT 5.1",$usera)?"WindowsXP":"");
$mes .= (ereg("Windows NT 5.2",$usera)?"Windows2003":"");
$mes .= (ereg("Windows NT 6.0",$usera)?"WindowsVista":"");
$mes .= (ereg("Mac",$usera)?"Mac OS":"");
$mes .= (ereg("Linux",$usera)?"Linux":"");
$mes .= "で、";

//センテンス(4)
$mes .= "このホームページを";
$mes .= (ereg("MSIE",$usera)?"InternetExplorer":"");
$mes .= (ereg("Firefox",$usera)?"Firefox":"");
$mes .= (ereg("Opera",$usera)?"Opera":"");
$mes .= (ereg("Netscape",$usera)?"Netscape":"");
$mes .= (ereg("Safari",$usera)?"Safari":"");
$mes .= "で閲覧していることまでわかっているんだ!";

//センテンス(5)
$mes .= "ずばり君が犯人だろう!";

//文章表示
print $mes;

?>
■■■■■■■■■■■■■■■

懲りずに「PHP」ミニプログラム第3弾も作ってみようと思います。



PHP関連記事(リンク一覧): さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / PHP REVERSI(オセロもどき)の続き / PHP REVERSI(リバーシ) - オセロもどきゲームの公開 / PHP版-簡易アクセスブロック(IPアドレス、ホスト名、OS、ブラウザ名で制御) / ...(記事連続表示)

PHP簡易時計プログラム

名前: 小川 邦久 リンク: http://kunisan.jp/ 日付: 2007年10月13日
とある理由から、Web開発言語の「PHP」を学習することにしました。

私の知っているWeb開発言語は、基本中の基本である「HTML」の他に、「JavaScript」「Perl」とありますが、「Perl」を知っていれば「PHP」は必要ないと言われていましたし、私もずっとそう思っていました。

ところが先日、私がよく利用しているモバイル広告掲載用のスクリプトが「Perl」では動かず、「PHP」でしか動かないということを知りました。

ということで早速本日「PHP」の本を購入して、プログラムを自作してみました。JPEGで時計を表示する、というものです。1分毎に時計の画像は更新されます。

■■■簡易時計プログラム■■■
<?php

//現在日時を取得
$now = getdate();

//現在の「時」を取得
$hr = $now[hours];

//現在の「分」を取得
$mn = $now[minutes];

//「短針」のX座標を取得
$sx = cos(deg2rad(90 - ($hr/12 + $mn/60/12) * 360)) * 65 + 120;

//「短針」のY座標を取得
$sy = -sin(deg2rad(90 - ($hr/12 + $mn/60/12) * 360)) * 65 + 120;

//「長針」のX座標を取得
$lx = cos(deg2rad(90 - $mn/60 * 360)) * 100 + 120;

//「長針」のY座標を取得
$ly = -sin(deg2rad(90 - $mn/60 * 360)) * 100 + 120;

//240x240の画像キャンパスを作成
$img = imagecreate(240,240);

//背景色を設定
$bgcolor = imagecolorallocate($img,0,0,0);

//背景色で塗りつぶし
imagefilledrectangle($img,0,0,240,240,$bgcolor);

//円の色を設定
$cccolor = imagecolorallocate($img,100,100,100);

//円を描く
imagearc($img,120,120,238,238,0,360,$cccolor);

//円の中心を塗りつぶす
imagefill($img,120,120,$cccolor);

//「短針」の色を設定
$shcolor = imagecolorallocate($img,255,255,255);

//「短針」を描く
imageline($img,120,120,$sx,$sy,$shcolor);

//「長針」の色を設定
$lhcolor = imagecolorallocate($img,255,255,255);

//「長針」を描く
imageline($img,120,120,$lx,$ly,$lhcolor);

//文字列の色を設定
$mjcolor = imagecolorallocate($img,255,255,255);

//10未満の場合に文字列を変更
if ($hr < 10) {
$hr = "0".$hr;
}
if ($mn < 10) {
$mn = "0".$mn;
}

//文字列を指定
$moji = $hr.":".$mn;

//文字列を描く
imagestring($img,2,202,220,$moji,$mjcolor);

//できた画像をJPEG形式で保存
imagejpeg($img,"clock.jpg");

?>
■■■■■■■■■■■■■■■

PHP対応のWebサーバーであれば、上記のプログラムをコピー&ペーストするだけで動くと思います。

「PHP」に触れるまでは新しいWeb開発言語を覚えることへの抵抗感(単純に「面倒」という思い)がありましたが、実際に使ってみると、「Perl」よりは随分とっつきやすい言語だということがわかりました。グラフィック関係の命令が使いやすいので、今後これを利用した新しいホームページを制作してみたいと思っています。



PHP関連記事(リンク一覧): さくらレンタルサーバーのアクセス履歴をPHPで表示 / PHPで画像のアップロード(さくらレンタルサーバーのPHPでImageMagick) / PHP REVERSI(オセロもどき)の続き / PHP REVERSI(リバーシ) - オセロもどきゲームの公開 / PHP版-簡易アクセスブロック(IPアドレス、ホスト名、OS、ブラウザ名で制御) / ...(記事連続表示)

| 前ページ(新しい記事) |    | 次ページ(過去の記事) |