PHPを使おう・画面に現在の時刻

PHPというのは、ウエブページの内容を状況に応じて変化させることができるところ。毎回表示される内容が変わるというと、現在の時刻を画面に表示できるわけです。例えば「現在は10時30分45秒」という具合に表示できます。使うファンクションはprintとdateです。現在の時刻を表示するには、「date」という専用のファンクションを使います。このファンクションは日付や時刻を管理するものです。ここでは「10時、30分、45秒」を表示するということで、「時」「分」「秒」を取り出すことができればいいと考えます。「秒」を取り出してみます。秒はもっとも変化が激しいので、確認が取りやすいからです。dateファンクションは、画面に出力する機能は持っていません。戻り値として内容を得られるだけです。この戻り値を画面に出力するためprintファンクションを組み合わせて使います。というプログラムになります。パラメータの「s」というのは、秒を取得するためのパラメータです。dateファンクションには他にもパラメータを指定することができます。パラメータのマニュアルを参照して作成しましょう。これらを参照しながら、「分」を表示します。パラメータを変えるだけで表示することができます。「分」はパラメータの表の「i」です。「時」は「g」です。「時」の場合は、先頭に0をつけるか、12時間制か24時間制かで「g」「G」「h」「H」などの種類があります。これらを組み合わせて作成します。dateファンクションというのは、複数のパラメータを一度に指定することができます。パラメータの中に文字列を含めることもできます。

プログラムを動かす部分

インターネット上のサーバを通して使用する事ができるのがWebアプリケーションです。ではPHPのプログラムはどうでしょうか?PHPのプログラムもWebアプリケーション同様サーバ上で実行する事が可能なようです。サーバにはローカルホストとリモートホストがあるようです。ローカルホストとリモートホストについて見ていくとしましょう。ここでは、リモートホストについて見ていきます。Webアプリケーションを利用するユーザーは普段あまり意識していないかもしれませんが、使用しているパソコンのWebブラウザ(クライアントとも呼ぶ)からインターネットの上サーバにリクエストを送ったり、レスポンスを受信したりしているようです。このようなインターネット上のサーバのことをリモートホスト(Remote Host)と言うそうです。リモートホストは遠隔地の機器という意味を持っており、ネットワークを通して接続した先にあるコンピューターを指すようです。また、この時PHPのプログラムがある場所はリモートホストの中なのだそうです。この場合プログラムをサーバ上に置くためには、まず、使用しているパソコンでプログラムを記述する必要があります。記述が完了したらプログラムをサーバ上に設置する作業を行うのです。これでは、プログラムをどこか修正するたびサーバにあるプログラムを修正済みのものに置き換える必要が出てきてしまうため、とても手間がかかってしまいます。加えて自分が記述したプログラムに致命的なエラーが発生した場合処理の時間がものすごくかかってしまい、同じサーバにプログラムを置いている他者の事までもトラブルに巻き込んでしまう可能性があるそうです。

サーバが行うものは?

ブラウザからリクエストをサーバが受け取った時どのようにレスポンスを返すのか見ていきましょう。リクエストを受け取っているのはWebサーバと呼ばれる機能なのですが、このWebサーバはブラウザによってリクエストが送られてくると、その内容を確認し、どのファイルをレスポンスで返すべきか解釈しているそうです。さて、では、リクエストの判別はどのようにして行うのでしょうか?URLが~.htmlで終わっているHTMLファイルという名前のファイルがあります。ブラウザによってHTMLファイルがリクエストで送られてきた時、数あるファイルのなかから該当するファイル(HTMLファイル)を取り出しレスポンスとして送るそうです。そして、レスポンスにはHTMLや画像を送る事になっているそうで、見つけたHTMLファイルを、クライアントのブラウザへ送り返します。もらったファイルをレスポンスとしてそのまま送れば良いHTMLのことを静的Webページと呼ぶそうです。次にURLが~.phpで終わっている場合はHTMLファイルとは異なります。URLが~.phpで終わっているファイルはPHPファイルといいます。このファイルはそのままではブラウザにレスポンスとして送る事は出来ないそうです。この場合Webサーバは該当するプログラムのファイルを取り出し、そのファイルがPHP言語で書かれていると確認すると、PHP実行エンジンと呼ばる機能にファイルを渡すそうです。PHP実行エンジンはファイルを渡されるとその内容を、解釈・処理した後、HTMLを作成、レスポンスとしてブラウザに送ります。先ほどとは違い、様々な処理を受けたあと、レスポンスとして送られてくるWebページのことを動的Webページと呼ぶのだそうです。静的Webページが決まったHTMLをレスポンスとしてブラウザへ送るのとは異なり、動的WebページはPHP実行エンジンによって処理された結果をレスポンスとして送るページなのだそうです。例えば、ブログなどにアクセスしたとしましょう。そうすると最新の日記が見られるようになっていることがあります。これは動的にデータベースから最新の日記を取得出来るようにと処理を行っているからだそうです。サーバの中にはこのようにWebサーバというブラウザとやりとりする隊長のような機能があったり、PHP実行エンジンのような参謀みたいな機能があったりと様々な機能があります。インターネットの裏側では多くの機能が働きWebページを閲覧出来るようにしています。

PHPとデータベース

PHPとMySQLというのは別々で使ってもとても便利だそうですが、これらを2つ組み合わせてWebシステムを作るととても力を発揮するそうです。オンラインショッピングや、社員管理システム、コンテンツ管理システムなどといった実用的なWebシステムを作ることができるそうです。システムを作っていくのに必要なテーブルやファイルの準備をしておくことが必要だそうです。「makers」「my_items」「carts」テーブルを備えた「mydb」というデータベーススペースを使うそうです。MAMPやXAMPPのドキュメントルートディレクトリを開くそうです。フォルダ「shop」を作成しておくそうです。PHPにはあらかじめMySQLと接続するためのファンクション郡が準備されているそうです。そのため、すぐに利用できるそうです。PHPの設定などで無効にすることもできるそうです。正常に利用できないという場合には、サーバー管理者やレンタルサーバーの業者に問い合わせたほうがいいそうです。XAMPPやMAMPというのでは、利用できるようになっているそうです。PHPを使ってMySQLに接続するためには「msql_connect」というファンクションを使うそうです。ここでは、MySQLのIDとパスワード、ホスト名が必要となるそうです。XAMPPの場合には、ホスト名「localhost」ユーザ名「root」パスワード「なし」となるそうです。MAMPの場合はパスワードが設定されるそうです。バージョンによって設定が異なっている場合があるそうです。注意が必要だそうです。レンタルサーバーの場合は、契約時の書類などに載っているそうです。

フォームの内容を取得するには

ユーザーがWebページを利用する際に、よく使われるもののひとつにフォームがあると思います。

例えば問合せページなどで名前や住所、そして問合せ内容といったものをユーザーは入力するはずです。

今回はフォームの名前の部分についてを見ていきましょう。

<form action=”ファイル名.php” method=”get”>

<label for=”my_name”>氏名:</label>

<input id=”my_name” type=”text” name=”my_name” size=”50” maxlength=”300” value=”送信”>

</form>

<?php

print(‘お名前: ’ . htmlspecialchars($_REQUEST[’my_name’], ENT_QUOTES));

?>

フォームに入力された内容は、<form>要素の「action」属性で指定されたファイルに送られます。

上述のように保存先がPHPの場合、その入力された内容が一旦保存され、自由に使用することが可能です。

この一時保存された内容を「変数」と呼び、それぞれの変数を見分けられるように「変数名」がつけられます($_REQUEST[’my_name’]の部分)。

また、より安全性を高めるため、「ENT_QUOTES(安全に受信するという意味のパラメータ)」はほぼ必ず指定するものと思ってよいでしょう。

文字エンコーディングについて

普段私たちはいろいろな文字を使って文章を作っています。
英字、数字、記号、ひらがな、カタカナ、漢字 などコンピュー タの内部で、 これらの文字は「番号」で管理されています。

たとえば、私たちがメモ帳で文書ファイルを聞いたときには、番号で保存されている文字データが、目に見える文字に変換されて画面に表示されています。
コンピュータは、私たちが使う文字とそれに対応する番号を変換する処理を行っているのです。
この変換を行うための規則を、文字エンコーディング (文字符号化方式)といいます。

文字エンコーデイングは何種類も存在しているのですが、日本語環境では、以下の文字エンコーディングが使われることが多いです。

・ UTF-8
・ EUC
・ Shift-JIS

インターネットで公開されているWebサイトでは、サイトによって異なる文字エンコーディングが使われています。
Webブラウザは、いろいろな文字エンコーディングに対応した表示が可能で、
現在見ているページがどの文字エンコーディングを使っているのかを知ることもできます。

Webシステムを開発する環境

プログラムを作る開発者の立場で見ると、開発時のコンピュータの構成は、開発用と実行用それぞれのコンピュータでブラウザやWebサーバのやりとりをしたり、開発用からFTPなどでPHPプログラムを転送したり、といった形になる場合が多いです。

Webサーバとは別の開発用のコンピュータでプログラムを作り、そのプログラムファイルをWebサーバに転送して動作確認をします。
ファイルをWebサーバに転送するには、一般にFTPクライアントというソフトウェアを使います。
もし皆さんが契約しているプロパイダがPHPに対応していれば、プロパイダのWebサーバでPHPプログラムを動かすことができます。

Webアプリケーションにおけるアルゴリズム

プログラムで何かを実現する場合、いきなりスクリプトを書き始める人はいません。まずは、どのような機能や仕様が必要となるのか、その手順はどのようにするのかを考えてから、プログラミングに取りかかります。
これを「アルゴリズムを考える」といいます。

もともとアルゴリスムというのは、何らかの問題を解くための手順のことです。
プログラミングをする前には、必ずどのようにスクリプ卜で表現すればよいのかを考えてからプログラミングを行います。どのようにスクリプトで表現するのかを考え、そのロジック、手順を考えることが「アルコリズムを考える」です。

スクリプ卜を作成する上で必要なスキルはさまざまですが、その中でも大切なことは以 下の2つです。
まず、プログラムをつくる前に、アルコリズムについて検討すること、そして、わからないことなどを自分で調べることです。
つくりたい機能の作成方法が思いつかなければ、スクリプ卜を書くことはできません。しかし 、よいアルゴリスムが自分で思いつかなくても、それを調べて見つけ出すことができれば、その作成方法を導くことができます。
スクリプ卜を作成する場合には、このふたつのことを日々鍛えていくことが大切です。
なお、アルコリズムは目的を解決するための方法なので、その手法は必ずひとつになるものではありません。考える目的によってはいくつかの手法が存在します。
このように、「アリゴリズムを考える」練習は、プログラミング上達のためには欠かせませんので、ぜひ挑戦してみてください。

引数の「値渡し」と「参照渡し」

関数の引数には 2種類のタイプがあります。
通常、関数への引数は値を直接渡すので関数内でその値を変更しでも、呼び出し元の変数の値に影響を与えることはありません。
これを「引数の値渡し」といいます。

これに対し、関数の引数で、変数の前に&がある場合、関数内でその値を変更すると、呼び出し元の変数の値に影響を与えます。
呼び出し元の変数の値に影響を与えることを「参照渡し」といいます。

この違いは、送った引数の値を変更する変数なのか、そうではないのかの違いです。

値渡しのユーザー定義関数を作成するには、
①ユーザー定義関数を作成 ②実行部分の作成 ③Webブラウザで出力を確認
の3つの手順があります。

また、参照渡しのユーザー定義関数の場合は、
①引数に「&」を付加する ②Webブラウザで出力を確認
の2つの手順で作成することができます。

PHPの基礎

PHPは、静的な HTMLページにプログラムを埋め込み、動的な Webページを作成するのために開発さ
れたプログラミング言語です。PHPの書き方のルールや特徴、そして構文をしっかり理解しましょう。

そもそも PHP は、静的な HTML ぺージにプログラムを埋め込み、動的な Webページを生成するために開発された プログラミング言語です。つまり 、他のプログラム言語と違い、HTML ソース内に直接記述することができます。PHP の書 き方のルールとして、まずPHP スクリプ卜は 「<?php」 と 「?>」 で囲みます。また、PHP 処理文の録後は「セミコロン(;)」で終わります。そして、ファイルの上から下に処濯が実行され、ファイルの儀後に到達するとプログラムが終了する仕組みとなっています。

なお 、PHP には「exit;」という処理を終了させる構文があります。この構文を実行すると、その場でプログラムカず終了し、それ以降の PHP スクリプ卜や HTML の出力は行われません。
また、HTML 部分は通常の HTML として Webブラウザに出力されますが、「<?php」 と 「?>」で囲まれた部分では、動的な値を生成して print 構文を使って HTML へ出力します。さらに、ファイルの拡張子は 「.php」でなくてはなりません。