url今日はとりあえずできた!を実感するためにフォーム入力をやっていきたいと思います。
僕が学習を始めてプログラミングで動いた!と実感できたのがこれだったんでとりあえず書いてみました。
色々な教本やサイトがありますが、一番大事なのは
とりあえず動かしてみる
ということだと思います。
今回やったのは、フォーム入力した値を表示してみるということです。
今回は答えを書いておきますが、次回からは僕が実際にやって
何人かに教えてと頼まれてやってみた宿題形式でやります。
参考までにtest.●●と書きましたが実際の拡張子は違います。
perlの場合(test.cgi)
#!/usr/bin/perl
print “Content-type: text/html\n\n”;
read(STDIN, $name, $ENV{‘CONTENT_LENGTH’});
$name =~ s/%([A-Fa-f0-9][A-Fa-f0-9])/pack(“c”,hex($1))/ge;
print $name;
print <<“HTML”;
<form action=”” method=”post”>
<input type=”text” name=”name”>
<input type=”submit” value=”送信”>
</form>
HTML
PHPの場合(test.php)
<?php
$name = $_POST[“name”];
echo “$name”;
echo <<< HTML
<form action=”” method=”post”>
<input type=”text” name=”name”>
<input type=”submit” value=”送信”>
</form>
HTML;
?>
PHPのほうがはるかに簡単ということがわかりました。
普段使う検索や掲示板、ログインなんかで使われている入力フォームがこれです
色々装飾されていたりするんで見にくいですが必要な部分はこれだけです。
<form action=”” method=”post”>
<input type=”text” name=”name“>
<input type=”submit” value=”送信”>
</form>
form action
form action=””の部分なんですが
普段ページに
アクセスする際にURLがありますがそんな感じです
./test.phpとも書けます
HTMLとPHPを分けて作ったりする場合には処理するPHPなどのファイルのパスを指定します
例えば誰かのページ(http://example.com)に
form action=”./test.php”
このようにして書いてあったとします
外部のページからでも
form action=”http://example.com/test.php”とhttpから書くとなんの対策もしていないページであれば先ほどのソースを使って書き込んだり、悪意のあるコードを埋め込んだりといったことが出来てしまいます。
見た目でわかりやすい例で言うと、大量の画像を貼り付ける、他ページにジャンプしてしまうようなコードを埋め込むなど
なので、こういったことができないように実際に運用する場合はユーザーから受け取った情報は無害化しないといけないです。
input type
<input type=”text” name=”name“>
nameの部分はmailやurlやhogeなども入れれます。
hageでもいいです。実際によく使う例ではこんな風に使ってたりします。
送信側
●名前
<input type=”text” name=”name“>
●メールアドレス
<input type=”text” name=”mail“>
●URL
<input type=”text” name=”url“>
●コメント
<input type=”text” name=”hage“>
受け取り側
$mail = $_POST[“mail“];
$url = $_POST[“url“];
$hage = $_POST[“hage“];
のようにそれぞれ受け取り先を用意してください。
$hage = $_POST[“hage“];
echo “$name“;
これでは表示されないので
echo “$name“,”$hage“;
とhageも呼んであげてください。
echo “$hage“;
とhageだけ呼ぶこともできます。
<input type=”text” name=”hage“>の赤字の部分と
$hage = $_POST[“hage“];の赤字の部分は一致していないとhageを呼べません。
青字の部分はhageが入る箱なんで$hageireと書いてもいいです。
その場合は
$hageire = $_POST[“hage“];
echo “$hageire“;
と$hageireを呼び出します。
すると$hageireに収容された hage が返事します。ので表示できます。
公開するにはまだまだ足りない部分がありますが、とりあえず動かしてみてはいかがでしょうか