Just MyShopへ
HOMEデジタルカメラ・写真集・写真素材集PC講座・インターネット活用PCゲームPHPによるCGI美容ショッピングこのサイトについて

PHPの小枝:PHPの使い方

■PHPの小枝
PHPの使い方
フォームの受け渡し
SJISの不具合
画像アップローダー
Cookieの読み書き
├ ファイル操作
ランダム処理
配列Arrayの扱い方
参考文献

■掲示板


mail@管理人

 

 

 ここではPHPの記述の仕方を解説します。

 PHPはデーターベースとの連携に強いですが、PerlによるCGIの代わりとして使うこともできます。
 当然、PHPを使うにはPHPが組み込まれている必要があります。PerlとPHPは似てはいますが別物です。

 PHPでは直接HTMLに埋め込むことができます。簡単な処理であれば、JavaScriptのように途中で処理を行い結果をその場で出力することができます。Perlでは処理の中でHTMLによる表示部分を出力しますが、PHPではHTMLの中で処理を行うことができます。

 ただし、PHPでは拡張子を.htmlではなく.phpにしなければなりません。
 下の例では<?php ?>の部分が埋め込まれたPHPの処理です。PHPで処理を行う部分はそこがPHPだと分かるように?phpの後に半角スペースを置いてからPHPによるスクリプトを記述し、最後に?でPHPの記述を終えます。それを1つのタグの形にまとめます。

<html>
<head>
<title>TITLE</title>
<meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS">
</head>

<body>
<?php ここに処理を書く ?>
</body>
</html>

 上記の例でPHPの処理でTESTと表示させるには<?php print "TEST"; ?>で表示されます。
 print文は文字を出力させます。つまり<body>TEST</body>と同じ結果になります。
 HTMLの構造にならってブラウザで表示するには<body></body>の間に記述します。
 処理を以下のように複数行に分けて記述することもできます。

<html>
<head>
<title>TITLE</title>
<meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS">
</head>

<body>
<?php 
print "TEST1<BR>\n";
print "TEST2";
?
>
</body>
</html>

 上記の結果は
 TEST1
 TEST2

 と表示されます。
 \nは改行を意味します。ブラウザに改行を出力するには<BR>を使いますが、\nはHTMLソース上で改行します。
  処理の区切り目には;『セミコロン』を記述します。

 上記のように短い処理であればHTML中に埋め込んでしまって良いのですが、長い処理を記述すると、管理しづらくなってしまうことがあります。
 PHPのメインのスクリプトを別のファイルに用意し、HTMLからはそのファイルを読み込ませて実行することもできます。

 デザインの面からもHTMLとスクリプトを分離させた方がとても便利です。
 分離さえることにより、スクリプトを意識しないでページデザインを行うことができます。動的な内容だけをスクリプトから表示させると良いでしょう。

 上記のHTMLをtest.phpとし、その中からスクリプトのみのtest.phpsを読み込ませます。
 スクリプトファイルは直接呼び出されるPHPと区別するために、拡張子を.phpsとします。
 <?php require "test.phps"; ?>
 require文はファイルを実行させます。
 こうすることにより、ページデザインの変更はtest.phpだけの修正で済み、スクリプト部分の変更はtest.phpsを変更すればよいのです。

 ただし、この方法ではCookieの書き出しなどではエラーとなってしまいます。
 それは、Cookieはすべての表示の先頭で出力しないといけないという決まり事があるからです。つまりスクリプトが実行される前に<html>などのタグが出力されているとCookieを保存させることができないのです。
 それを防ぐためには<html>の前、つまりファイルの一番先頭でCookieの出力などの前処理を行い、<body></body>間では表示だけを行うのが良いでしょう。

 フォームデータから名前などを受け取り、それを表示するCGIを作成してみます。

<?php
   $name = $_POST["name"];
   $url = $_POST["url"];
   if($url != "" && $url != "http://"){$link = '<a href="'.$url.'" target="_blank">ホームページ</a>';}
   else{$url = "http://";}
?>
<html>

<head>
<title>TITLE</title>
<meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS">
</head>

<body bgcolor="ffffff">
<form method="post" action="usage.php">
名前: <input type="text" name="name" value="<?php print $name; ?>"><br>
ホームページ: <input type="text" name="url" value="<?php print $url; ?>"><br>
<input type="submit" name="submit" value="送信">
</form>

<?php
   print "名前:$name<br>$link";
?>
</body>
</html>
 実際の動作はこちら>>

 上記では先頭でフォームからの受け取りを行い、それを処理しています。
 その結果をprint文で目的の場所に表示させています。

 

 下記の例では上記のファイルからスクリプトを別のファイルに分離しています。
 下記の書き方と上記の書き方での違いはありません。
 処理が短いなら上記の書き方で、処理が長くなるなら下記のように分離させると管理しやすくなります。
 ここではrequireを使用していますが、代わりにrequire_oneceを使うと多重読み込みを回避できます。 一度しか読み込んではいけないものはrequire_oneceを使いましょう。

usage.php
<?php require "usage.phps" ?>
<html>

<head>
<title>TITLE</title>
<meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS">
</head>

<body bgcolor="ffffff">
<form method="post" action="usage.php">
名前: <input type="text" name="name" value="<?php print $name; ?>"><br>
ホームページ: <input type="text" name="url" value="<?php print $url; ?>"><br>
<input type="submit" name="submit" value="送信">
</form>

<?php
   print "名前:$name<br>$link";
?>
</body>
</html>

 下記は上記で読み込まれるスクリプトファイルです。

usage.phps
<?php
$name = $_POST["name"];
   $url = $_POST["url"];
   if($url != "" && $url != "http://"){$link = '<a href="'.$url.'" target="_blank">ホームページ</a>';}
else{$url = "http://";}
?>

 HTMLファイルとPHPスクリプトファイルを分けることにより、色分け表示のできるエディターでは有効利用できます。HTMLファイルではタグの記述ミスを、PHPスクリプトファイルでは文法ミスを色分けで判別でき大変便利です。

まとめ

 ・PHPではHTMLの中で処理を行い、結果を表示させることができる。
 ・HTMLの本文では表示処理だけを行い、表示とは関係のない処理はHTMLの出力の前に行う。
 ・内部処理は別のファイルに用意して読み込んだ方が管理しやすい。
 ・直接アクセスされるPHPファイルの拡張子は.phpとなり、内部から呼び出されるスクリプトファイルの拡張子は.phpsを使う。
 ・PHPのスクリプト部分は<?php?>の間に記述する。
 ・printは結果を出力する。
 ・requireは別のファイルを読込み実行する。
 ・require_oneceは別のファイルを一度だけ読込み実行する。