Home > Archives > March 2012

March 2012

PHP -式-

  • 2012-03-31 (Sat)
  • PHP
年度末になり、あわただしい様子がうかがえます。
現在、Web上で面接テストなどのシステムを作成していますが、作ってはみたもののデザインと実際の問題数の兼ね合いがなかなかうまく考え出されない状態です。

PHPで作成しているが、Smartyを利用しているので、デザインとプログラムを切り離すことができるのでやり易い印象かな。
現在の悩みは、テスト問題をある程度作成しておく必要があり、問題を作るのに頭を抱えてしまいます。

今日は、PHPにおける重要な「式」について紹介します。

第8回 式
PHPは、ほとんどすべては””で記述していきます。そして、”すべての式には値がある”ということです。

例えば、変数で「$a = 5」と記述すると、$aに5を代入するという式になります。
この式の後、$aの値は「5」であることが期待されます。
このことから、$b = $a と記述すると、$b = 5と記述したことと同じ動作が期待されます。
例えば、次のような書き方ができます。
$a = 5; /* $aに5を代入 */
$b = $a =5; /* $a と $b に5を代入 */


式を複雑にしたものが”関数”です。関数の簡単な例を挙げてみます。
<?php
 function foo() {
   return 5;
 }

上記の関数は、関数名がfooで、5の値を返す式となります。つまり、$a = foo()と記述すると、$aに「5」の値が代入されます。
関数は、決まった数を返すのでなく、何かの計算をさせるものです。決まった数であれば、単なる代入式を使い、複雑な計算や計算を単純化させたい時に関数を使います。

また、式には加算子(++)減算子(--)というものがあります。数値を1増やしたり、減らしたりする演算子です。カウントアップやカウントダウンなどに使われます。
$a++; /* $a = $a + 1 と同じ */
$a--; /* $a = $a - 1 と同じ */


そして、加算子と減算子には、前置加算子(減算子)と後置加算子(減算子)があります。
前置加算子  ++$a;  $aに1を加えてから$aを返します。
後置加算子  $a++;  $aを返してから$aに1を加えます。
前置減算子  --$a;  $aから1を引いてから$aを返します。
後置減算子  $a--;  $aを返してから$aから1を引きます。

簡単な例で説明します。
<?php
 $a = 5;
 $b = $a++;
 echo $a;
 echo $b;

上の記述を実行すると、$aの出力は「6」になりますが、$bの出力は「5」になります。
$a++は、後置加算子ですので、$aを返してから1を加えます。$bには「5」の値が代入されて、その後に$aに1が加算されて「6」になります。

<?php
 $a = 5;
 $b = ++$a;
 echo $a;
 echo $b;

上の記述は前置加算子ですので、$aに1が加算されてから代入されます。よって、この場合は$aと$bとも出力の結果は「6」になります。

式には比較演算子も多用されます。
比較演算子は、TrueまたはFalseのどちらかの値になります。PHPでは、以下の記号をサポートしています。
>(大なり)、==(等しい)、<(小なり)、>=(以上)、<=(以下)、!==(同じでない)など。

先ほど$aに1を加算したい時は、$a++などの記述ができると紹介しましたが、いつでも1を加算させるとは限りません。3や5などを加算(減算)したいときもあります。
このような場合は、$a = $a + 3と記述すれば良いのですが、プログラムではこの式を「$a += 3」と記述することができます。
この正確な意味は、$aの値を取得して、それに3を加算して、$aに代入しなさいということになります。
この記述のメリットは、短く式を書くことによって、意味が明確になり、実行も高速になります。

最後に、三項演算子を紹介します。terniary条件文という式ともいわれます。
簡単に説明するとif条件を簡単に記述できるものです。
例を紹介します。
<?php
 $a = 100;
 $b = ($a > 100) ? "100より大きい" : "100以下";
 echo $b;
?>

説明すると、$aに100をまず代入しています。そして、もし$aが100より大きい場合は、”100より大きい”という文字を$bに代入します。そうでなければ、”100以下”という文字列が$bに代入されるという演算子になります。
この記述の結果は、「100以下」という表示となります。
三項演算子の書式は以下のようになります。
(条件式) ? 真の場合 : 偽の場合;

PHPに関わらず、プログラムは式で構成されています。その式に使用される、演算子の種類をしっかり覚えることも大事です。

PHP - 定数 -

  • 2012-03-27 (Tue)
  • PHP
来週はもう4月です。テレビ番組も様変わりするようで、いろんな番組が終わっている気がします。よく見ていた番組も今月で終わってしまい、次の番組に期待が高まりますが、期待外れがなければと・・。つまらない心配をしてしまいます。

さて、本日は定数に関する紹介です。

第7回 定数
定数はある値を固定して、いろいろな場面で使いたい時に利用します。変数は、その時により値の入れ替えが可能ですが、定数という言葉通り、値は変わりません。

定数の定義は、define()関数を使用します。PHP5.3.0以降では、クラス定義の外部でconstキーワードを使って定義することもできます。

定数の名前を指定することにより、その値を取得することが可能です。ポイントは、変数と異なり、 $ 記号は不要です。
また、定義済みの定数の一覧を調べたい時は、get_defined_constans()を使用します。
変数との異なる点は次のようになります。

  • 定数は、前にドル($)記号は不要。

  • 定数を定義できるのは、difine()関数のみ。単なる代入による定義はできない。

  • 定数は、あらゆる場所からアクセス可能。

  • 定数は、一度設定されると再定義または未定義とすることはできない

  • 定数はスカラー値としてのみ評価が可能


定数定義の時に使用するdefine()関数のフォーマットは以下のようになります。
defined(string ,$name)
 stirngは、定数の名前で、$nameは変数または値になります。


次のようなサンプルコードを見てください。
<?php
 define("word","こんにちは!定数での呼びかけです。");
 echo word;
?>

20120327-s01.jpg
コードを見て頂くと分かるように、wordというキーワードに対して「こんにちは!・・・」という文字列を定義しています。
あとは、echo関数を用いてwordという名前だけ指定すると、定義されている文字列が表示されるという仕組みになります。

何回も利用するような言葉であれば、定数を用いると便利です。
次のように変数と定数を使って計算も可能です。
<?php
 define("pai",3.14);
 $hankei = 5;
 $w = $hankei * $hankei;
 echo "半径5㎝の円の面積は" . $w * pai ."cm<sup>2</sup>です。";
?>

20120327-s2.jpg

定数と変数は、プログラムを学ぶ上では、基礎となる前提部分なので、しっかりと機能と利便性を覚えておきましょう。

PHP -変数-

  • 2012-03-24 (Sat)
  • PHP
昨日の夜はとても強い風でした。春の嵐というイメージでしたね。

暑さ寒さも彼岸までといいますが、まさにその通りで春のお彼岸を過ぎてから、あったかさが増してきました。寒さも残っていますが、だいぶ日中の服も薄くなってきた気がします。

昨日、映画「モンスター上司」を見ました。レンタルになるまで知らなかった映画でしたが、コメディー映画としては正統なストーリーでしたね。ところどころ、有名な俳優も参加していて面白かったです。

3名の主人公達がそれぞれの上司に恨みを持ち、殺してしまおうという内容ですが、その展開がユニークでした。結構笑え、何も考えなく映画を見たい人にはとても良いかもしれませんね。エンドロールでは、失敗したカットが流れて、ジャッキー・チェンの映画の最後を思い浮かべる感じでした。^^;

では、今日はPHPの変数について紹介します。

第6回 変数
変数は、プログラムを記述するうえで最もウエイトを持ったものです。たぶん、これを使わないとプログラムは書けないかも。
変数という言葉を聞くだけで、最初は「何それは?」って感じましたが、学習していけばおのずとして理解できます。

簡単に言うと、文字列や数字などを一時的に保管する箱のようなものです。簡単な例を紹介します。
<?php
 $moji = '文字';
 $suji = 5000;
 $hizuke = "2012/03";

 echo $moji . "<br>";
 echo $suji . "<br>";
 echo $hizuke;
?>

20120324-p01.jpg
上のように、文字や数字、日付などをいったん変数の中に代入しておき、後からそれを出力させています。
変数はドル記号「$」の後に変数名が続く形式で、ポイントは大文字、小文字を区別します。
また、$thisは特別な変数ですので、この変数名を使っての代入はできません。

変数名は任意で付けられますが、数字やアンダースコア以外の記号を頭文字にすることはできません。
下の書き方は問題はありません。
<?php
 $var = 'この文字を変数に格納します。';
 $_var = '変数名の頭をアンダースコアにしています。';
 $_2var = '変数名は_2から始めています。';
 $Var = '変数名の頭は大文字の英文字にしています。';
 echo $var.'<br>';
 echo $_var.'<br>';
 echo $_2var.'<br>';
 echo $Var;
?>

20120324-p02.jpg
しかし、変数名の頭に数字を入れてしまうと、シンタックスエラーが表示されます。
<?php
$2var = '変数名の頭を数字にしています。';
echo $2var.'<br>';
?>

20120324-p03.jpg

通常、デフォルトでは変数に代入されるのは常にその値となり、元の式の値全体がコピーされる側の変数にコピーされることになります。
これは、ある変数の値をほかの変数に代入した後で、これらの変数の1つを変更しても他の変数には影響を与えないことになります。

PHPには、変数の値に代入を行う方法に、参照代入という方法があります。これは、新規の変数は元の変数を参照するだけです。新規の変数への代入は、元の変数に影響します。
この参照による代入を行うには、代入する変数の先頭に「アンパサンド(&)」を付加します。
例えば次のようなコードを記述します。
<?php
 $who = 'Tanaka';
 $bar = $who;
 $bar = 'My Name is ' . $bar .'<br>';
 echo $bar;
 echo $who;
?>

20120324-p04.jpg

上のコードの$whoの前にアンパサンドを付加します。
<?php
 $who = 'Tanaka';
 $bar = &$who;
 $bar = 'My Name is'. $bar .'<br>';
 echo $bar;
 echo $who;
?>

20120324-p05.jpg
このように、変数名の前にアンパサンドを付けるか、付けないかで結果が変わってきます。使い方によって変数は利便性が良いので、どのような処理をさせるかによって変数の扱いには気を付けてみましょう。

変数は、名前の通り、どのようにも変化する値という意味ととらえてください。

PHP -命令分離とコメント-

  • 2012-03-20 (Tue)
  • PHP
今日は春分の日、春の第一歩です。お彼岸でもありますね。

3月も終盤に向かい、桜の話題も聞こえてきました。まだ、肌寒いですが暖房をつける時間も少なくなってきた感じです。

前回、アメリカのTVドラマ「BONES」について書きましたが、「PRISON BRAKE」シリーズも面白かったです。このシリーズはもう完結しましたが、殺人容疑で死刑と判決された兄を、刑務所から脱出させるストーリーです。

兄の無実を信じて、弟のマイケルが全身に入れ墨をして、あえて刑務所に入るところから始まります。その刺青は刑務所の設計図が隠されていて、それを頼りに脱出計画が展開されます。周りを囲む人間たちの感情や性格も面白く描写され、シーズン1では脱出しますが、シーズン2からは刑務所から出てからも、追われるストーリーです。
まぁ~、見ていてその先を知りたいと思ったドラマはあまりなかったので、すごくこのドラマにはまったことを覚えています。

今日も、PHPの基本となることを紹介します。

第5回 命令分離とコメント
命令分離と書いていますが、命令文を分けるための手段となります。つまり、2つの命令文があった場合、コンピュータにこの命令とこの命令は分かれているということを明示してあげる必要があります。

一般的に1つの命令文はステートメントと呼ばれ、ステートメントの区切りとしてセミコロン(;)を付けることで、命令文を分けることになります。

サンプルコードは以下のようになります。
<?php
echo '最初の出力です。';
echo '次の出力です。';
?>

以上のPHPファイルをレンダリングすると次のように表示されます。
20120320-s01.jpg

文字列を2つ出力していますが、PHPは2つのechoで文字列を書き出そうとしても、単に文字列を出力する処理しかしません。つまり、改行というのはHTMLの処理となります。
命令文を2つに分けても、ブラウザ上で改行する場合はHTMLのタグを書きます。
<?php
echo '最初の出力です。<br>';
echo '次の出力です。';
?>

20120320-s2.jpg

また、ファイルの最後におけるPHPブロックの終了タグ(?>)は任意です。
include()require()などの構文(他のファイルを読み込むための関数)を利用するときは、終了タグを省略する方が無難であると言われます。

省略することで、ファイルの最後に予期せぬ空白文字があらわれてしまうことを防げ、後でレスポンスにヘッダを付加することも可能になります。

つまり次のように記述することが可能です。
<?php echo '1つの命令文であればセミコロンを省略できる。' ?>

上の記述は命令文の最後にセミコロンを省略しています。他の命令文がなければ、これでもOKです。
これは、PHPコードのブロックの終了タグには自動的にセミコロンが含まれていると認識しているからです。

<?php echo '終了タグを省略する。';

上の記述は終了タグを省略しています。単に終了タグの記述は任意であるということですが、終了タグをつけるかどうかは、そこに含まれている処理の内容によって決めた方が良いみたいです。分からない場合は、終了タグは付けておくほうが良いかもしれません。

次にPHPコード内にコメントを付けたい時があります。この処理はどのための処理であるかとか、後あとのメンテナンスを考えたときにコメントは重要です。

HTMLのコメントは<!-- -->を使います。
PHPのコメントは、二通りあり、1行のコメントは「//」、ある程度のブロックでコメントしたい場合は、「/* */」を使います。
<?php
 echo 'はじめまして!'; // あいさつのメッセージ出力
?>

上のように1行だけのコメントを付ける場合は、その頭に「//」を付けます。
また、このシェル型の「#」でも同じような動作になります。
複数行の場合は、「/*」と「*/」の間にコメントを書きます。

このコメントは単なる注釈という使い方ではなく、PHPで処理されないという特徴を生かして、ステートメントの実行を一時的に処理させないようにできます。
プログラムがうまく動作しない場合、どの命令文に問題があるかを見つけるときに、このコメントを使って、あるステートメントを実行しないことで、うまく動作ができるかどうかを見ることができます。削除するより、簡単に動作の確認ができるので、便利です。

このコメントで注意することは、「/* */」をネストにしないことです。
例えば、下のようなコードを記述したらシンタックスエラー(構文間違い)が起きます。
<?php
 /*
 echo 'はじめまして!'; /* あいさつのメッセージ出力 */
 */
?>


今日のポイントは、PHPのコードを記述する際は、命令文を分けるためにセミコロンを付けることと、コメントを利用して分かりやすいコードに努めることです。
この辺りは、どのプログラムでも基本中の基本ですから、誰でも理解されているかと思います。

PHP -基本記述-

  • 2012-03-18 (Sun)
  • PHP
三月も半ばになり、だいぶ温かくなりました。だんだんと過ごしやすく、季節の変わり目が実感できますね。

ここ1週間ばかり、アメリカTVドラマの「BONES Season 6」を少しずつ見ています。このシリーズはSeason 1から見ていますが、ひとりの女性が法人類学者で人の骨から、その人の死亡原因、年齢、性別、病歴などを当てていき、事件を解決とするドラマです。

事件を解決していくストーリの中で、その女性を取り巻く人間の関わり合いや人間ドラマがとてもうまくできている作品だと思って、ハマっている次第です。
骨がテーマですから、死体がよく出てきて、グロいのが苦手な方にはどうかな?と思いますが、人間ドラマとしてみると、ハマるのは請け合います。

今日は、PHPの基本記述に関して紹介します。

第4回 基本記述
PHPは、ファイルを解析して開始タグと終了タグを探し、タグが見つかるとコードの実行を行い、終了します。
PHPはこのような仕組みなので、HTMLやXHTML形式などのドキュメント中に埋め込むことができます。

逆から考えると、PHPの開始タグと終了タグで囲まれている以外のすべての部分は、無視されて、たいていの場合すべて表示されます。
例えば、以下のようなコードを記述したとします。
<p>ここは、通常のHTMLタグで囲まれています。</p>
<?php echo 'ここだけは、PHPで処理されます。'; ?>
<p>ここも、HTMLタグで囲まれた分です。</p>


上のコードをレンダリングすると以下のようになります。
20120318-p02.jpg

PHPの開始タグ"<php"と終了タグ"&?>"で囲まれた内容だけ、PHPで処理されて表示され、pタグで囲まれた内容は通常のHTML記述としてブラウザで表示されます。

PHPで用いられるタグは4種類あります。
1. <?php ?>
2. <script language="php"> </script>
3. <? ?>
4. <% %>

上記の1と2は、常に使用することができますが、3と4はphp.iniファイルによって有効か無効かを切り替えます。
3の短縮型や4のASPスタイルのタグは移植性に欠けますので、一般的には推奨されないようです。
簡単なサンプルは以下のように記述します。
<?php
echo '通常はこの記述が一般的です。';
?>

<script language='php'>
echo 'この記述は、あるエディタによっては処理されません。';
</script>

<? echo 'もっともシンプルな記述です。'; ?>

<% echo 'ASP形式のタグを使用可能です。' %>


単純に考えると、1の記述が最も推奨されるものなので、この記述方法だけ覚えればよいでしょう。

PHP - フォーム処理

  • 2012-03-13 (Tue)
  • PHP
春の陽気が少しずつですが、感じられますね。
2012年が始まって、もう三月というのには驚いてしまいますが、年を取るごとに1年が短く感じられるようです。

この前、「はやぶさ/HAYABUSA」という映画を見ました。この映画内容に関しては、他にも2作品あるようなのですが、見比べるのも面白いかもしれません。
感想は、最後をどのように持っていくか・・というところに注目してしまい、「結局はそういくしかないなぁ」っと思いました。他の2作品はどのようになるのかが楽しみですが、実際の話なので、終わりは一つしかないのでしょうか・・と。^^;

今日はPHPの第3回目・・フォームの処理についてです。

第3回 フォーム処理
PHPの主な使い方は、HTMLフォーム処理です。基本概念は、あるフォーム内のすべてのフォーム要素が自動的にPHPスクリプトで利用できるという事です。

最もポピュラーな作り方は、フォームのページとその結果を出力するためのページを用意します。フォームページは通常のHTMLですが、PHPでも構いません。但し、出力する方のページはPHPのページになります。

では、サンプルコードを見てみます。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>サンプル</title>
</head>
<body>
<form action="mypage.php" method="post">
<p>お名前:<input type="text" name="name" size="30" /><br />
年齢:<input type="text" name="age" size="30" /></p>
<p><input type="submit" value="Click" /></p>
</body>
</html>

以上のコードを記述して、適当な名前で保存します。もちろん、Webサーバ内のhtdocsフォルダ内に保存します。

このサンプルコードは、一般的なフォームです。
まず、action属性の値に、出力するページを指定します。ここでは、mypage.phpというページにこのフォームの値を与えることになります。
method属性は、「post」にします。method属性の値には、他に「get」があります。postとgetの違いは、また機会があれば説明しますが、通常はpostにします。a要素のhref属性から呼び出すときは、getを使うことになります。

フォームの記述で大事なポイントは、ユーザが入力した値を処理するためには、その要素にname属性を必ず付けることです。このname属性の値で、phpは処理します。

次に出力先のmypage.phpのコードを見てみます。
<?php
 print "こんにちは" . $_POST["name"] . "さん。あなたは" . $_POST["age"] . "歳です。";
?>

シンプルなものですが、$_POST["name"]は、フォームのmethodでpostを指定しているからです。簡単に言うと、フォームからPOSTで送られてきたという意味と思ってください。
その引数内に、「name」がありますが、これはフォームのname属性の値である「name」の値が格納されていますので、ユーザが入力した名前になります。
$_POST["age"]も同様な意味で、ユーザが入力した年齢となります。

また、「.」は文字列を連結するための記号です。

では、処理を見ていきます。まず、sample.phpをブラウザで表示します。そして、名前と年齢を入力します。
20120313-p08.jpg

ボタンをクリックすると、mypage.phpにジャンプしてPHPの処理が実行された出力が表示されます。
20120313-p09.jpg

先ほどまでは、sample.phpからmypage.phpへの出力を行いましたが、一般的な使い方として、自ページから自ページに対して処理を行うこともします。
では、その例を見ていきます。内容は先ほどの内容を同じになります。
<?php
if(isset($_POST["go"])){
print "こんにちは" . $_POST["name"] . "さん。あなたは" . $_POST["age"] . "歳です。";
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>サンプル</title>
</head>
<body>
<form action="sample.php" method="post">
<p>お名前:<input type="text" name="name" size="30" /><br />
年齢:<input type="text" name="age" size="30" /></p>
<p><input type="submit" name="go" value="Click" /></p>
</body>
</html>


フォーム内のaction属性の値を見ると、同ページを指定しています。つまり、フォーム内の処理を自ページに値を処理させています。
その処理するのがphpタグ内の処理です。

先ほどと異なるのが、if構文を使っている点で、もしもフォームのボタンが押されたら、それをprint(出力)させることです。
もし、if構文を使わなかったら、常にフォームの上に「こんにちはさん。あなたは歳です。」が表示されることになります。

では、処理を見ていきます。
sample.phpにアクセスしてブラウザで表示し、名前と年齢を入力します。
20120313-p10.jpg

入力したら、ボタンをクリックします。
20120313-p01.jpg
結果がフォームの上に表示されます。

使い方からすると、最初のフォームの使い方が妥当だと感じられますが、実際は自ページに対して処理を行い、if構文でページを振り分けることを良く行います。

少し余談ですが、先ほどのphpコードの中の$_POST[""]内の値は文字列であったり、数値であったりします。また、悪意的にフォーム内にJavascriptを埋め込まれることも考えられます。そこで、そのような対処として次のような記述を行えます。
$_POST["name"] → htmlspecialchars($_POST["name"])
$_POST["age"] → (int)$_POST["age"]

htmlspecialchars()は、htmlでの特殊なコードを適切にエンコードしてくれますので、javascriptを埋め込まれないようにできます。
年齢は数値であることは分かっているので、年齢の値を整数(integer型)に変換します。これにより、おかしな文字が入力されることを防げます。

最初はピンと来ないかもしれませんが、徐々に構文や関数を覚えていくと、理解できます。PHPはとても柔軟なプログラムなので、初心者にとって分かり易いかと思います。

PHP - 使用ブラウザの確認

  • 2012-03-11 (Sun)
  • PHP
今日は、東北大震災からちょうど1年です。
まだ、復興をしたまでとは言えませんが、地元の方は徐々にですが頑張ってらっしゃる姿をTVで拝見しています。

手つかずの場所もあり、なかなか元に戻せられない状況を見て、いろんなシガラミがあるのだろうと考えます。

何もできなく、ただテレビ越しに見ることしかできませんが、いつまでも被災者の姿は忘れないようにしたいですし、影ながら応援していきましょう。

今日は、閲覧しているユーザがどのブラウザでホームページを見ているかを判断するPHPの記述を紹介します。
これが可能であれば、ブラウザによって挙動を変えることができます。
例えば、IEで見ている人にはAページ、Firefoxで見ている人はBページ、Chromeで見ている人はCページにジャンプしてもらうことができます。

実用的な使用方法としては、PCからの閲覧、モバイルからの閲覧、スマホからの閲覧によって、ページを振り分けることも可能です。

第3回 閲覧ブラウザの確認
ここで使用する変数は、$_SERVERスーパーグローバル変数です。この変数は、Webサーバ関連情報を保持する特別な予約変数です。
簡単に言うと、Webサーバの情報を閲覧するためには、この$_SERVERを使えば良いという事です。
この変数は、配列を使用します。配列は、また後日に紹介しますが、簡単に言うと複数の情報を格納(保持)しているということです。

$_SERVERの要素は複数あり、代表的なものを一部紹介します。
$_SERVER['SERVER_NAME'] → 現在のスクリプトが実行されているサーバのホスト名
$_SERVER['DOCUMENT_ROOT'] → 現在実行されているスクリプトが存在するドキュメントルートディレクトリ
$_SERVER['HTTP_HOST'] → 現在のリクエストにHOST:ヘッダがあればその内容。
$_SERVER['HTTP_USER_AGENT'] → 現在のリクエストにUser-Agent:ヘッダがあればその内容。
$_SERVER['SCRIPT_FILENAME'] → 現在実行されているスクリプトの絶対パス
$_SERVER['SCRIPT_NAME'] → 現在のスクリプトのパス
$_SERVER['PHP_AUTH_USER'] → HTTP認証しているときにそのユーザ名がセットされる


今回紹介するものは、$_SERVER['HTTP_USER_AGENT']です。
簡単な例を作ってみます。
<php
echo $_SERVER['HTTP_USER_AGENT'];
?>

このスクリプトの出力は以下のようになります。(※IE9を使用した例)
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)


では、次のコードを見てください。
<?php
if(strpos($_SERVER['HTTP_USER_AGENT'],'MSIE') !== false){
 echo 'あなたのブラウザはInternet Explorerです。<br />';
 }elseif(strpos($_SERVER['HTTP_USER_AGENT'],'Firefox') !== false){
 echo 'あなたのブラウザはFireFoxです。<br />';
 }elseif(strpos($_SERVER['HTTP_USER_AGENT'],'Chrome') !== false){
 echo 'あなたのブラウザは、Chromeです。<br />';
 }else{
 echo 'あなたのブラウザは何でしょうか?<br />';
}
?>

この結果をChromeで確認すると以下のような結果が表示されます。
20120311-p07.jpg
結果は、予想通りとなりますね。

さて、この記述の中で使用した関数を説明します。
■strpos関数
文字列内の部分文字列が最初に現れる場所を見つける関数です。構文は以下のようになります。
strpos(string,needle[,offset)

stringは、検索を行う文字列、needleは検索対象文字列、offsetは指定すると、文字列内での検索開始位置を指定できます。これは省略可能です。
strpos($_SERVER['HTTP_USER_AGENT'],'MSIE')と記述すると、サーバ情報の中のユーザ閲覧ソフト名の中から、「MSIE」の文字列が存在するかどうかということになります。もし、この文字が存在(true)すればということになります。

このstrpos関数で、needleが見つかった位置を文字列(string)の先頭からの相対位置で返します。文字列の開始位置は0で、1ではありません。needleが見つからない場合は、Falseを返します。

if(strpos($_SERVER['HTTP_USER_AGENT'],'MSIE') !== false)という、IF構文を説明すると、サーバ情報内のユーザ使用ブラウザ名の中にMSIEという文字列を検索して、見つからないということでなければ、{ }の中のecho関数を処理しなさいということになります。

この「見つからないという事でなければ」という書き方は面倒ですが、「見つからない」という結果は「false」を表し、「という事でなければ」が「!==」で表現します。

プログラムでは「=」は代入するという演算子であることは前回紹介しました。等しいという記号は「==」を使います。等しくないという記号は「!」を使って「!==」という表現になります。

日本語に訳すると厄介ですが、「MSIEという文字列が見つからないという事でなければ」ということは、「MSIEが見つかれば」ということになります。

PHPでは、$_SERVER変数を使うことは多いので、しっかりと記憶しておきましょう。

PHP - 定数と変数

  • 2012-03-10 (Sat)
  • PHP
花粉のシーズンになりました。
私自身も花粉症になったようで、3日前からかなり鼻が辛いです。

市販の薬を飲んだら、鼻はすっきりしますが、頭がボーっっとしますね。副作用なんでしょうけど。

花粉が飛ぶということは、春も近いということでしょうから、暖かくなることを期待して、鼻水対策をしましょう。^^;

さて、今日はPHPの初歩となる定数と変数の話です。

第2回:定数と変数
PHPを使ったスクリプトには規則、文法なるものがあります。これは、どのプログラムにも言えることですが、PHPは他のプログラムと違うのは、かなり寛容であることです。
寛容であるゆえに、初心者でも作りやすいというメリットがありますが、反面、エラーなどに気付かないという点があります。

定数:プログラム内で使用したい値などをあらかじめ格納して置くために使用するもの
定数という言葉通り、プログラム内で使用される計算でも変わることのない値ということで、常に同じ値を保持します。

この定数を定義するために使用される関数が「define()」関数です。
define("定数名,"値")


定義などという言葉がピンとこない人もいるかと思いますが、定義とは「そのような決まり、設定を行います」ということになります。
定数は、その漢字のとおり「定めた値」というものです。
よって、定数を定義するとは、「ある値の中身を変えたくない場合に、定数として設定する」ということになります。

<定数の例>

<?php
 define("hello","こんにちは!元気ですか?");
 print (hello);
?>

この記述を書いたファイルをXAMPPのhtdocsフォルダ内に保存して、ブラウザでレンダリングすると以下のようになります。
20120310-p03.jpg

変数:データの値を一時的に格納し、計算結果などによりその値が変化するもの
変数は、その名前のとおり変化する値を格納する箱のようなイメージになります。定数は値が固定ですが、変数は値が可変すると考えてください。

この変数は、どのようなプログラムであっても必須のものです。PHPなどのプログラムは、この変数を良く利用して、ユーザの入力した値を動的に処理をしてくれます。

変数は、代入演算子(=)によって値を変数(一時的に値を格納する箱)に格納します。
通常、「=」(イコール)は、等しいという意味の記号ですが、プログラムでは「右辺の値を左辺に代入する」という意味となります。ここが重要ポイントです。

また、PHPの場合は「これは変数ですよ」という意味を持たせるために、変数の行頭に「$」を付けます。
$変数名 = 変数に格納したい値


通常、変数は変数の型を指定する必要があります。変数の型とは、「この値は文字列です、この値は数値です、この値は日付です」というように宣言することで、間違った値が格納された時に間違いが判明するメリットを持ちます。
例えば、数値を入れる変数なのに、誤って文字列が格納されようとしても、文字列は格納されないように処理します。

しかし、PHPは特に変数に対してデータの型を宣言する必要はありません。そのようなところが、受け入れやすいプログラムということが言えます。
逆に言えば、「いい加減」であると言うことにもなります。だから、間違った記述をしてしまうと、何も表示されなくなり、どこが間違っているかを自分自身で探す必要があります。
このようなミスを無くすには、正確にタイピングして、規則正しく記述することさえできれば、ちゃんと動作してくれると考えてみてください。

変数に格納できる種類には、論理値(boolean)、整数(integer)、文字列(string)、浮動小数点(float)などがあります。
論理値の場合    $hensu = true;
整数値の場合    $hensu = 12345;
文字列の場合    $hensu = "おはよう!";
浮動小数点の場合    $hensu = 0.123;

<変数の例1>

<php
 $x = 200;
 $y = 355;
 $z = $x + $y;
 print $z;
 $z = $x - $y;
 print "
$z";
?>

20120310-p04.jpg

上の例の「$z」に注目すると、値が555から-155に変化したのが分かるかと思います。
あくまでも、変数というのは一時的な値を格納する入れ物ですから、プログラムの内容によって変化できるということになります。

変数の使い方としては、ユーザがブラウザ上で入力したデータをPHPの変数の中に格納して、そのデータを使って処理を行いたいときに良く利用されます。
<変数の例2>

<?php
 if(isset($_POST["click"]) && $_POST["namae"] != ""){
  $name = $_POST["namae"];
  print $name . "さん、ようこそ!";
 }
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>サンプル</title>
</head>
<body>
<form action="sample.php" method="post">
<p><input type="text" name="namae" size="30" /></p>
<p><input type="submit" name="click" value="クリック" /></p>
</body>
</html>


上の記述をブラウザで表示して、名前を入力します。ここでは、仮の名前「佐藤 征四郎」と入力してみます。
20120310-p05.jpg

ボタンをクリックすると、以下のようにメッセージが表示されます。
20120310-p06.jpg
どうでしょうか?
変数は、さまざまな場面で利用します。まず、プログラムの一歩目は変数をいかに利用できるかという面を覚えてみてください。

PHPを学ぶ

  • 2012-03-03 (Sat)
  • PHP
3月も始まり、今日はひな祭り・・。

アカデミー賞もモノクロ映画の「アーティスト」が作品賞に選ばれましたね。無声映画であり、現代映画の原点に戻った感じがします。
どのような作品であるか見てみたいですね。

いろいろな映画が毎年上映されますね。人によって趣向が違いますが、自分にとって受け入れやすくて、感動する映画に出会いたいものです。

さて、今日から少しプログラムに関することを書いていこうと思います。もちろん、基礎からです。
Webを勉強している人は、PHPに出会う機会が少なくありません。このPHPというプログラムは、Webに特化しており、HTMLタグ内に取り入れやすい特徴を持ちます。
しかし、HTMLと大きく違うところは、そのままではブラウザに表示されないという事です。このあたりから、徐々に紹介していこうと思います。

第1回 PHPの環境を整える
HTMLを駆使して作ったファイルは、通常ダブルクリックするとブラウザ上で表現されます。特にPCの環境に依存しないので、勉強はしやすいですね。

しかし、PHPのような動的スクリプティングプログラムは、サーバ上で動くものなので、クライアントのPCでは表現できません。

JavaScriptはクライアントのPCで動く静的スクリプティングプログラムですので、HTMLと同様に、PCの環境には依存しません。ただし、ブラウザ上でJavaScriptを使用できないような設定にされていると動きませんので、動かない時はブラウザの設定を確認します。

PHPを開発、勉強したいとなると、自分のPCでサーバーを使える環境を作る必要があります。いろいろな方法がありますが、もっとも簡単な方法は、自分のPCにサーバをインストールすれば良いです。
でも、サーバーの知識が必要となると、初心者にとってみると敷居が高い感じがしますね。

XAMPPを使用する
そこで、紹介するのがXAMPPというプログラムです。
XAMPPにアクセスすると、簡単ですけどインストールの手順などが解説してあり、初心者でも簡単に取り入れることができます。
また、XAMPPで検索するとインストールの方法などを説明してあるサイトもいろいろとあるので、詳細はそちらで確認してください。

私から言うと、XAMPPをダウンロードして、そのファイルを実行してインストールするだけですぐに使えるものです。

新しいバージョンでは日本語に対応していませんが、実際に対応するコントロールパネルが英語表記でも、簡単な英語ですから、特に問題はないです。

XAMPPの基本
XAMPPのインストール先は、通常Cドライブの直下になります。
つまり、C:¥xamppになります。

XAMPPをインストールすると、WebサーバとなるApacheとPHP、MySQLが同梱された状態で使えます。

作成したHTMLファイルやPHPファイルは、XAMPPフォルダ内の「htdocs」フォルダ内に格納(保管)します。

ファイルの閲覧方法
作成したファイルを見たい場合はブラウザを起動して、次のように記述します。
例)見たいファイル名がindex.htmlの場合
 localhost/index.html

「localhost」というのが、自分のPCないのサーバのアドレスとなります。
※(余談:「localhost」を「127.0.0.1」というループバックIPアドレスにしても構いません。)

では、テキストエディタを開いて、次のコードを入力し、「test.php」というファイル名で保存してみてください。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>PHP-TEST</title>
</head>
<body>
<p>今日の日付は、<?php echo date("Y/m/d"); ?> です。</p>
</body>
</html>


この保存したファイルをC:¥xampp¥htdocsのフォルダ内に置きます。

ブラウザを起動して、アドレス欄に「localhost/test.php」と入力すると、今日の日付が表示されます。
20120303-p01.jpg

この記述のPHPの場所は、<?php echo date("Y/m/d"); ?>のところだけです。最も簡単な記述ですが、HTMLファイル内にそのまま埋め込むことができます。

PHPの基本記述は「<?php」で始まり、「?>」で終わります。
その中にどのようなことをしたいのかという処理を記述します。
ここでは、echo関数を使って、日付を表示させる内容となります。echo関数はブラウザ上で表現させるためのもので、他にもprint関数が同様な使い方をします。
テストみたいなものであれば、echo関数を使いますが、実際にWeb上のプログラムとしてブラウザ上で表示したい場合は、print関数を使います。こちらの方が、確実に表示されるようです。

あと、date()関数は、今日の日付を表示する関数で、Excelのtoday()関数と似ています。
引数(括弧の中)は、日付の表示方法となります。

もし、年月日で表示したいのであれば、「date("Y¥年m¥月d¥日")」と記述します。
20120303-p02.jpg

どうでしょうか?今日は、PHPの簡単な紹介をしました。
最初、XAMPPを導入する必要がありますので、面倒だと思う方はたぶんプログラムには向いていないかもしれませんね。
インストールして、それ以降に不要だと思う方はすぐにアンインストールしてください。
まずは、プログラムとはどのようなものであるかという体験できる人にとって、XAMPPはありがたいものだと私は思います。

More...

Home > Archives > March 2012

Search
Feeds

Page Top