制作技術ー4 アクセスカウンタ等付加機能 PHP と Javascript 情報スキル活用 第11週 制作技術ー4 アクセスカウンタ等付加機能 PHP と Javascript
クライアントとサーバーとの間の双方向通信の考え方 (復習) クライアントとサーバーとの間の双方向通信の考え方 (復習) クライアント サーバー 閲覧ソフトから URLを送信して <html>から</html>までを取出し Webページとして表示 HTML文書返信 この中に入力要求があれば データ入力 データ送信(cgi) データ受取 処理 Perl 言語 PHP言語 処理結果 (HTML文書) 応答内容表示 入力に対する応答
① <a href="cgi_test.html">cgi起動テスト</a> データの引渡し cgi_test.html ② <form action="../cgi/cgi_test.cgi"> <input type="submit" name="button" value="起動確認" /> ③ http://www.isc.chubu.ac.jp/pj15***/cgi/cgi_test.cgi?button=%8BN%93%AE%8Am%94F
アンケート調査(いろいろな入力形式の例) このアンケート調査のHTMLとcgiを圧縮ファイルで「配布資料」欄に掲載しているのでダウンロードし、各自のWebページに組み込みなさい。
アンケート調査のHTML文書 <!DOCTYPE html> <html> <head> <title>アンケート調査</title> <link rel="stylesheet" href="poll.css" type="text/css" media="screen" /> </head> <body> <h3>アンケート調査</h3> <p>あなたのお名前を入力して送信してください.</p> <form action="http://www2.isc.chubu.ac.jp/jc/miyahara/cgi/poll.cgi" /> お名前 : <input type="text" name="namae" /><br /><br /> 性 別 : <input type="radio" name="seibetu" value="男" />男 <input type="radio" name="seibetu" value="女" />女<br /><br /> 趣 味 : <input type="checkbox" name="v1" value="旅行" />旅行 <input type="checkbox" name="v2" value="読書" />読書 <input type="checkbox" name="v3" value="音楽" />音楽 <input type="checkbox" name="v3" value="スポーツ" />スポーツ <input type="checkbox" name="v3" value="その他" />その他<br /><br /> 出身県 : <select name="pref"> <option value="未入">県選択</option> <option value="愛知">愛知県</option> <option value="岐阜">岐阜県</option> <option value="三重">三重県</option> <option value="静岡">静岡県</option> <option value="以外">その他</option> </select><br /><br /> <input type="submit" name="submit" value="送信" /> <input type="reset" name="reset" value="取消" /> </form> </body></html>
アンケート調査のcgi(Perl) #!/usr/bin/perl # open(LOGFILE,">>poll.txt"); #アンケート調査 if ($ENV{'REQUEST_METHOD'} eq POST) { $len = $ENV{'CONTENT_LENGTH'}; read(STDIN, $buffer, $len); } else { $buffer = $ENV{'QUERY_STRING'}; #フォームに入力された値を分解し、復元する @pairs = split(/&/,$buffer); foreach $pair(@pairs){ ($name,$value) = split(/=/,$pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg; $hozon{$name} = $value; $w1=$hozon{"namae"}; $w2=$hozon{"seibetu"}; $w3=$hozon{"v1"}; $w4=$hozon{"v2"}; $w5=$hozon{"v3"}; $w6=$hozon{"v4"}; $w7=$hozon{"v5"}; open(LOGFILE,">>poll.txt"); print LOGFILE "$w1\,$w2\,$w3\,$w4\,$w5\,$w6\,$w7\,$w8\,"; ($sec,$min,$hour,$day,$mon,$year) = localtime(time); $year += 1900; $mon += 1; print LOGFILE "$year\/$mon\/$day\,$hour\:$min\:$sec\,"; print LOGFILE "$ENV{'REMOTE_HOST'}\,"; print LOGFILE "$ENV{'REMOTE_ADDR'}\n"; close(LOGFILE); print "Content-type: text/html\n\n"; print "<html>\n"; print "<head>\n"; print "<TITLE>Thank You!</TITLE>\n"; print "</head>\n"; print "<body>\n"; print "<br /><br />"; print "<p>$w1さん ご回答ありがとうございましたm(_ _)m</p>"; print "</body></html>\n"; exit (0);
入力形式一覧 入力形式指定 <input type="****" name="++++" value"####" /> text : 文字列入力 氏名 radio : 択一 男女 checkbox : 複数選択 趣味 submit : 送信 送信ボタン reset : リセット リセットボタン 一覧から選択 <select name="++++"> 出身県 <option value="値1">見出し1</option> 県名1 <option value="値2">見出し2</option> 県名2 <option value=" : "> : </option> <option value="値n">見出しn</option> </select>
中央画面の</div>の前に 次のスライドの内容を追加 ファイル名を index.php で保存 アクセスカウンターの設定(本日の作業) 準備 トップページをエディターに取り出し 中央画面の</div>の前に 次のスライドの内容を追加 ファイル名を index.php で保存 count.txtファイルを作り 初期値 0 書込み権 を ON PHPを使ったHTMLのファイルは 拡張子を「.php」とする。 閲覧ソフトでは.phpファイルを 直接実行することはできません。 ですから、PHPを使ったHTMLの動作確認は、そのファイルをサーバーにアップロードしてからアクセスしなければなりません。
アクセスをカウントするPHPプログラムの追加 <div class="right"> 文章 </div> <?php $fp=fopen("count.txt","r+"); $count=fgets($fp,10); $count=$count+1; fseek($fp,0); fputs($fp,$count); fclose($fp); ?> あなたは<b> echo $count; </b>人目の来訪者です。
PHPプログラムはHTML文書の中に組み込みます。 <?php から : ?> まで の内部がPHPの文です。 : ?> まで の内部がPHPの文です。 複数の箇所の記載されても情報(データ)は継続します。 PHPの文
アクセスをカウントするPHPプログラムの説明 $fp=fopen("count.txt","r+"); ① ファイルを開き $count=fgets($fp,10); ② 文字列を取り出し数値化し $count=$count+1; ③ それに「1」を加え fseek($fp,0); ④ 記録場所を探し fputs($fp,$count); ⑤ そこへ記録して fclose($fp); ⑥ ファイルを閉じる ?> あなたは<b> この行は HTML です。 echo $count ; ⑦ $countの値を出力する </b>人目の来訪者です。 この行は HTML です。
PHPによるアクセスカウンター