http://yuubiseiharukana.creativeroot.jp/php1/php1-4-1.php
<?php $x=1; $y=2; print($x+$y); ?> |
さあ何と表示されるでしょう?
$xというのは変数です。
中学校の数学を思い出してください。
y=2x+1
とかやりましたね。
文字式と言ってましたが、プログラミングでは変数と言います。
PHPでは(そして大半の言語では)頭に$をつけることで、変数を表します。
$x=1
とした場合、$xという変数に1という内容が詰め込まれる、ということです。
$xは文字ですが、中身は数値なので計算することが可能です。
従って、$x+$yという計算を行うと、答えは3となります。
つまり、上のプログラムは「3」と表示されます。
このような計算を用いた動的なページ生成、
これがPHPを用いてページを表示する最大の理由となります。
実のところHTMLだけでは買い物籠の中身を保持することすらできないので、
ちょっとでもインタラクティブなページを作成したいなら
他言語の助けを借りることが必須となります。
その手段がPHPでありPerlでありJavaScriptであるというわけです。
今のは最初から値を設定してあったわけですが、
今度はフォームから値を取得する、本格的な動的ページを作成していきましょう。
http://yuubiseiharukana.creativeroot.jp/php1/php1-4-2.php
<html> <head> </head> <body> <form method="POST" action=" <?php print(htmlspecialchars($_SERVER['SCRIPT_NAME'])); ?> "> <input type="text" maxlength="20" name="shiki"><br /> <input type="submit" value="送信"> </form> <hr> <?php if($_POST['shiki']){ $x=htmlspecialchars($_POST['shiki']); print($x); } ?> </body> </html> |
テキスト欄に入力した文字を、ただ単に表示するだけの内容です。
たったこれだけでも、HTMLだけでは不可能な処理です。
カウンターもブログもSNSも、すべてはこの入力フォームがスタート地点です。
徐々に規模を大きくしていきましょう。
$_POSTは、フォームで送信した内容を受け取ることができる特殊な変数で、
PHPに予め用意されている「スーパーグローバル変数」と呼ばれるものの一種です。
$_POST['shiki']
と書くだけで、フォームのname="shiki"から送られてきた値を取得することができます。
これはもうPHPには無くてはならない機能です。
同様なスーパーグローバル変数に、$_GET,$_SESSION,$_SERVER等がありますが、
どれも便利なので徐々に使えるようになっていきましょう。
ちなみに、htmlspecialcharsは、PHPを扱う上でprintより大切な関数です。
画面表示を行う場合、必ず使ってください。必ずです。
詳しくはクロスサイトスクリプティングの章を参考。
http://yuubiseiharukana.blog.shinobi.jp/Entry/4/
フォームの送り先が、
<?php print(htmlspecialchars($_SERVER['SCRIPT_NAME'])); ?>
とすごいことになってますが、これは「自分自身」を表しています。
とりあえず今の段階では、とりあえずこれをコピペして使うようにしてください。
別にaction="./php1-4-2.php"とファイル名を直接指定しても構わないのですが、
今後ファイル名を変更したりフォルダを移動したりした場合、
書き換えが面倒だったり書き換え忘れて不具合が出たりすると不便なので、
動的に作成できる部分は動的に作りましょう。
最後に簡単な計算プログラムを置いておきます。
入力値の処理が非常に甘いので、数式以外を入力すると致命的エラーになります。
ぜひ入力値をチェックするようにカスタマイズしてみましょう。
http://yuubiseiharukana.creativeroot.jp/php1/php1-4-3.php
<html> <head> </head> <body> <form method="POST" action=" <?php print(htmlspecialchars($_SERVER['SCRIPT_NAME'])); ?> "> <input type="text" maxlength="20" name="shiki" value="<?php print($_POST['shiki']); ?>">←数式を入力<br /> <input type="submit" value="計算する"> </form> <hr> <?php if($_POST['shiki']){ $x=htmlspecialchars($_POST['shiki']); print($x.'='); eval("print $x;"); } ?> </body> </html> |
まあ、この程度の内容ならJavaScriptのほうが手っ取り早いのですが、それはまたそのうち。
PR
トラックバック
トラックバックURL: