phpの第一歩

phpはサーバーサイドのプログラム

phpのプログラムはhtmlファイルの中に埋め込まれる形式で記述します。 クライアントから普通のHTMLページへアクセスがあるとウェブサーバはそのファイルの内容を送信するだけですが、phpプログラムが含まれるファイルの場合はプログラムの処理をサーバー側が行い、その結果をHTMLページとしてクライアントへ送信します。 クライアント側ではphpのプログラムは見ることは無く、その処理結果だけを見ることになります。

JavaScriptで記述されたプログラムの場合はクライアント側にJavaScriptプログラムを含むHTMLページが送信され、クライアント側でJavaScriptが実行されます。

プログラムがサーバーサイドで実行されるか、クライアントサイドで実行されるかが一番大きな違いです。

phpを動かすまで

サーバー

まず条件の1番目はphpが動いているサーバーにファイルを置くということです。htmlならば自分のハードディスクなどのファイルをウェブサーバーを通さずに直接表示することができましたが、phpはphpを使えるようにセットされたウェブサーバーに依頼しなければphp部分が動くことができません。プログラムがサーバーサイドで実行されることを忘れないでください。

phpの使えないサーバーもあります。ここも確認が必要です。授業で使っているウェブサーバーは使えるようにセットされています。現在では多くのレンタルサーバー(ホスティングサービス)でphpを使えるようになっています。

ファイル拡張子は.php

htmlファイルの拡張子は一般的には「.html」ですが。phpのプログラムが含まれるファイルの拡張子は「.php」にします。

これはウェブサーバーの設定により、.htmlのままでも可能なのですが、phpプログラムの含まれないファイルもすべてphpの記述がないかチェックしていてはサーバーにとって負担となり、サイト全体の反応速度が遅くなってしまうので普通拡張子を変えて、ウェブサーバ側がphpが含まれているファイルかどうかをすぐに判断できるようにするのです。どのような拡張子を使うのかが決まっているわけではありません。サーバーの設定に書けばなんでも使えますが、多くのサーバーが.phpを採用しています。

もう一度書きます。拡張子が「.php」であれば、ウェブサーバーはファイル内にphpプログラムが含まれていることを認識し、phpプログラムを処理した後で結果をクライアントへ送信します。そうでなければファイルの内容をそのまま送信します。

html内の記述

htmlファイルはほとんどそのまま書いていき、必要なところだけphpプログラムにします。プログラム部分は次のように<?php?> で囲み .... 部分にプログラムを書きます。

<?php  ....  ?>

例えばこんな感じ

<p>
<?php  print "こんにちは";  ?>
</p>

こんにちは

プログラムの実行結果が前後の記述とあわせてhtmlの規則に合うように、忘れずに<p>などのタグを書いておきます。

タグも一緒にphpに書かせることもできます。

<?php  print "<p>こんにちは</p>";  ?>

また、プログラムが複数行にまたがる時は、

<?php
  ....
  ....
  ....
  ....
?>

のようにします。

もう少しプログラムらしいことを

$がついたものは変数です。変数は型の区別なく、文字列でも、数値でも入れられます。

使用状況によって、可能ならば数値を文字列に解釈するし、文字列も数値と解釈します。

文字列の連結は . ですが、" " の中に入れると変数の内容に置き換えてくれます。

<p>
<?php
  $mojii1 = "変数は$で始めます。";
  $mojii2 = "数値も文字列も";
  $tanka = "120";
  $kosuu = 25;
  print $tanka + $kosuu . " 計算は極力数値にして出します。<br>";
  print $tanka . $kosuu . " 文字列としての結合は . 演算子を使います。<br>";
  print  "ダブルクォート内に書くと${mojii2}変数の値を展開します。<br>" ;
  print  "変数名の区切りがはっきりしているときは、{ }は省略できます。<br>" ;
  print  "$tanka × $kosuu = " ;
  print  $tanka * $kosuu ;
  print  "<br>もちろん . で結合しても同じです。<br>" ;
  print  $tanka . " × " . $kosuu . " = " ;
  print  $tanka * $kosuu ;
  print  "<br>" ;
?>
</p>

結果はこうなります。

145 計算は極力数値にして出します。
12025 文字列としての結合は . 演算子を使います。
ダブルクォート内に書くと数値も文字列も変数の値を展開します。
変数名の区切りがはっきりしているときは、{ }は省略できます。
120 × 25 = 3000
もちろん . で結合しても同じです。
120 × 25 = 3000

日付と時刻も

日付を表示するプログラムです。画面が表示された時の時刻になりますので、表示するたびに変化します。

javascriptでも出来ますが、javascriptの場合は、クライアントのコンピュータの時刻ですからずれているかもしれません。phpではサーバーの時刻です。

<p>
<?php
  $Today1 = Date("l F d, Y  H:i:s") ;
  $Today2 = Date("Y年 m月 d日  H:i:s") ;
  print  "日時は " . $Today1 . "<br>" ;
  print  "日時は " . $Today2 . "<br>" ;
?>
</p>

結果はこうなります。

日時は Tuesday April 23, 2024 21:03:15
日時は 2024年 04月 23日 21:03:15

Yは4桁の年、yは2桁の年、Fは英語フルスペルの月、Mは英語3文字の月、mは01から12の月、nは1から12の月など決められています。年月日・字分秒以外の文字はそのまま表示されます。ただし、日本語の曜日は直接出すことはできません。

詳細はdate関数の書式文字列を参照。

課題 phptest.php

上記のプログラム内容を多少変更してphpを試しなさい。

ファイル名をphptest.phpとし、index.htmlからphpというリンクを作ること