PHPとは   戻る

 多くのWebサイトでは、Web表示にPHP言語を使用している。 PHPはサーバーサイドのプログラムで、サーバー内で働き、HTMLで書かれたプログラムを作り出し、 それがユーザー側で表示される。HTMLのみで書かれたプログラム は一通りの表示しかできないが、PHPは状況、条件により異なる HTMLプログラムを作り出すから、柔軟で多様な表示が可能になる。
 サーバーサイドのプログラムであるため、ユーザがPHPプログラムを書いても 自分のパソコン内でこれを実験してみる事はできない。 (仮想サーバをパソコン内に作る ことによって、実験を可能にできるが、これは、PHPをある程度習得した後にトライすべきことである。)
 そこで、PHP道場においては、PHP実験をできる場所を作った。自作のPHPプログラムを 投稿すれば、実験結果が表示されるようになっている。

PHP言語入門
1. PHPプログラムは、拡張子を .php とし、euc コードで書く。
2. PHPプログラム文は、<?php で始まり、?> で閉じる。 これをPHP文と呼ぶ。
3. html文中にPHP文を割り込ませることが出来る。
4. PHP文は一行ごとに、文末に、 をつける。途中で改行しても、   が来るまで一行と見なす。


例文 0( PHPのみのプログラム、、 出力指示 echo を用いている。)
<?php
echo "現在の日時と時刻は 2022年09月29日 14時42分55秒です。";
?>

 この白枠内の文をコピペして、 test_000.php 等という名で格納実行してみましょう。 その結果、下のようなHTML文が作られ表示されます。
<html>
<body>
現在の日時と時刻は 2022年09月29日 14時42分55秒です。
</body>
</html>

これでは、いつ見ても時刻は変わりません。見た瞬間の時刻を表示させたいと思えば、 PHPの機能に頼るしかありません。

例文 1( PHPのみのプログラム、、 出力指示 echo とPHP関数 date() を用いている。)
<html>
<body>
"現在の日時と時刻は ".date("Y年m月d日 H時i分s秒")."です。";
</body>
</html>

 この白枠内の文をコピペして、 test_001.php 等という名で格納実行してみましょう。 今度は、いつ見ても見た瞬間の時刻を表示しているでしょう。
PHPの説明
echo:  文字列を出力   echo "文字列";
date(): 年月日時刻を出力  date("Y年m月d日 H時i分s秒");
  関数date()の使い方は色々あります。「php date()」で検索してください。



例文 2(繰り返し文 for を用いる。)
HTML文の例として表を作成するプログラム test000.html を示した。表の行が多いと、HTMLでは 同じようなことを何度も繰り返さなくてはならない。PHP には繰り返し動作を行わせる for文が 用意されている。これは、非常によく用いられるものであり、効果は絶大である。 その構造から見てみよう。
<?php
for($i=1;$i<7;$i++){
?>

繰り返し部分
<?php
}
?>


解説
for文の()の中は、; で3つに区切られている。
 最初の $i=1 は、繰り返し変数 $i の初期値が 1 であることを示す。
 中間の $i<7 は、繰り返しの終了が6であることを示す。
 最後の $i++ は $i=$i+1 の省略形で、繰り返し番号を1だけ増やす。
 { }は繰り返しの範囲をしめす。
表を作るプログラムは次のようになる。
<html> 
<body> 
<table width="100%" border="1px">
<?php
for($i=1;$i<7;$i++){
?>

<tr><td> <?php echo $i;?> </td><td></td<td></td><td></td><td></td></tr>
<?php
}
?>

</table>
</body> 
</html> 

上の緑地の部分をコピーし、test000.phpという名前で前にtest000.htmlを納めたフォルダ内に格納する。 html、 phpのどちらを実行しても同一の表示を得る。


例文 3(判断文 if を用いる。)
 ユーザがWebを開いたとき、朝なら「おはよう」、昼は「今日は」、夜なら「今晩は」 とするにはどうするか? 開いたときの時刻は前述の date("H") で分かるが、時刻の分類には、 if文が使われる。
このように、分類、判断、場合分けなどが必要な場合は非常に多い。そのときに用いられる if文について、その構造から見てみよう。
<?php
if(
論理文){
?>

真の場合の処理
<?php
}else{
?>

偽の場合の処理
<?php
}
?>


解説
 論理文(論理式)とは、真か偽かを判別できる、$x>0 $x==0 $name=="大谷" などの
二値論理文をいう。  ちなみに、論理文では「等しい」は == で表す。
また、 $x<-1 and $x>1 $x<=-1 or $x>=1  などの複合論理も論理文である。
また否定には ! を用いる。$x!=0
 上に述べたことは二段判断である。朝昼晩のような三段判断の場合は、 else の部分が、 elseif なり、一段判断が増えるが、その プログラムは次のようになる。
<html> 
<body> 
<?php
$h = date("H");
if ($h < 10) {
echo "おはよう";
} elseif ($h < 18) {
echo "こんにちは";
} else {
echo "こんばんは";
}
?> 
</body> 
</html> 

上の緑地の部分をコピーし、test003.phpという名前で前に納めたフォルダ内に格納し、 実行してみよう。


例文 4( スーパーグローバル変数 $_GET() を用いる。)
 [注意]この文は セキュリティ上問題があります。後で、対策を示します。
Webを双方向のものにする重要なhtmlのタグが、 formタグである。このタグは、読者に入力を 促す Box を作る。ところが、入力データを扱えるhtmlプログラムはなく、データを受け取ることが できるのは、PHPプログラムである。
<html>
<body>
書き入れ文字は「<?php echo $_GET['message']; ?>」です。
</body>
</html>

 この白枠内の文をコピペして、 test_002.php 等という名で格納し、
 test_002.php?message=Tom(半角) を実行してみましょう。
 全角を書き入れると、文字化けします。 文字化けを避けるには、
 3行目を
書き入れ文字は「
<?php echo mb_convert_encoding($_GET['message'],"EUC-JP"); ?>
」です。

 と置き換えます。すると、文字化けはなくなります。


例文 3 ( 例文 2と同じ内容をhtml文の form文を使う。)
<html>
<body>
<?php
if(!isset($_POST["message"])){
?>
<form action="test_003.php" method="post">
<input type="text" name="message">
<input type="submit" name="submit" value="送信">
</form>
<?php
} else {
$str="書き入れ文字は「".mb_convert_encoding($_POST["message"],"EUC-JP")."」です。";
print ($str);
}
?>
</body>
</html>

 この白枠内の文をコピペして、 test_003.php 等という名で格納実行してみましょう。

例文 4 ( 本格的formの例、htmlとphpとを使う。)
<html>
<body>
<h1>皆さんの声 ー掲示板ー</h1>
<form action="test_form.php" method="post">
苗字:<input type="text" name="myouji" size="10" required>
名前:<input type="text" name="name" size="10" required> 
性別:<input type="radio" name="sex" value="male" checked>男
<input type="radio" name="sex" value="female">女  年齢
<select name="nendai">
<option value=10>10歳代</option>
<option value=20>20歳代</option>
<option value=30>30歳代</option>
<option value=40>40歳代</option>
<option value=50>50歳代</option>
<option value=60>60歳代</option>
<option value=70>70歳代</option>
<option value=80>80歳代</option>
<option value=90>90歳代</option>
<option value=100>100歳代</option>
</select>
<br>
<textarea name="koe" rows="4"cols="70">ここに皆さんの声を記入してください。</textarea><br>
<input type="submit" value="送信"><input type="reset" value="リセット">
</form>
</body>
</html>

 この白枠内の文をコピペして、 test_form.html という名で格納実行します。
<?php
// D:\YWV\Apache\htdocs\www\Kanrisitu\School_PHP\test_form.html
//苗字と名前(必須)
if (($_POST["myouji"]==="")||($_POST["name"]==="")){
$errors[] = "空です。";
}else {
$myouji = $_POST["myouji"];
$myouji = mb_convert_encoding($myouji,'EUC-JP');
// $myouji = str_replace($space, "", $myouji);
// $myouji = trim(mb_convert_kana($myouji, "s", 'EUC-JP'));

$name = $_POST["name"];
$name = mb_convert_encoding($name,'EUC-JP');
}
$sex = $_POST["sex"];
$nendai = $_POST["nendai"];
//声
if (isset($_POST["koe"])){
$koe = $_POST["koe"];
$koe = mb_convert_encoding($koe,'EUC-JP');
} else {
$koe = "";
}
print($myouji."<br>");
print($name."<br>");
print($sex."<br>");
print($nendai."<br>");
print($koe."<br>");
?>

 この白枠内の文をコピペして、 test_form.php 等という名で格納します。