Download presentation
Presentation is loading. Please wait.
1
インターネット技術特論 D:SSI,PHP,eRuby 山口 実靖
2
SSI (Sever Side Include) PHP,eRuby など
ロジック と プレゼンテーション(デザイン) の 分離
3
CGI は print文 地獄 デザイン と ロジック が,分離されていない ページの見た目(左のHTML)を変更したくなったら,
出力 出力のために必要なプログラム <html> <head> <title> Sane's Page </title> </head> <body> Welcome to My Web Page <br> hoge<br> fuga<br> piyo<br> You are the 1234th visitor. </body> </html> printf("<html>\n"); printf(" <head>\n"); printf(" <title>\n"); printf(" Sane's Page\n"); printf(" </title>\n"); printf(" </head>\n"); printf(" <body>\n"); printf(" Welcome to My Web Page\n"); printf(" <br>\n"); printf(" hoge<br>\n"); printf(" fuga<br>\n"); printf(" piyo<br>\n"); printf(" You are the \n"); printf(" %dth visitor. \n", cnt); printf(" </body>\n"); printf("</html>\n"); ページの見た目(左のHTML)を変更したくなったら, 右のプログラムのソースコードを変更しなくてはならない. しかし, デザイナーにプログラムの変更は難しすぎる. 技術者にデザインの変更は難しすぎる. デザイン と ロジック が,分離されていない 多くの場合,もっと汚い!
4
SSI (Server Side Include)
サーバで通常のHTMLファイルに,テキストを埋め込んでからブラウザに渡すことが可能
5
SSI (#include file) This is <b>000.shtml</b>
<!--#include file="copyright.txt" --> copyright.txt <hr> Powered by <I>Saneyasu Yamaguchi</I> ブラウザで"000.shtml"に対して 読み込みをかけると ポイント サーバ側でINCLUDE処理 されてから, ブラウザに渡される ブラウザに渡される内容 This is <b>000.shtml</b> <hr> Powered by <I>Saneyasu Yamaguchi</I>
6
余談 (dateコマンド) Un*x系OSには date というコマンドがある. date → 現在時刻を表示する.
date +%Y/%m/%d_%H:%M:%S → 現在時刻を"2010/10/19_16:20:01"の形式で表示する. date → 現在時刻を2003年01月02日03時04分に 設定する.ただし,管理者権限が必要.
7
SSI (#exec cmd) This is <b>001.shtml</b> <hr> Now :
<!--#exec cmd="/bin/date" --> ブラウザで"001.shtml"に対して 読み込みをかけると ポイント サーバ側でcmdを実行して, その結果(出力)が 挿入されてから渡される. ブラウザに渡される内容 This is <b>001.shtml</b> <hr> Now : Mon Oct 19 14:40:01 JST 2020
8
SSI利用方法 (工学院大学) SSIに関するルール: 利用方法はWebサーバの設定による. 上記は,工学院大学のルール.
SSIを用いる場合,ファイル名を"*.shtml"にする 利用方法はWebサーバの設定による. 上記は,工学院大学のルール. 設定ファイル"/etc/httpd/conf/httpd.conf" AddType text/html .shtml AddOutputFilter INCLUDES .shtml
9
SSI式カウンタを含むページ 0/2 #include <stdio.h> #include <stdlib.h>
void main(void) { int cnt; FILE *fp; fp = fopen("cnt.txt", "rt"); if( fp == NULL ){ cnt == 0; printf("file read NG.<br>\n"); } else { char buf[1024]; fread( buf, 1, 1023, fp); buf[1023] = '\0'; cnt = atoi(buf); fclose(fp); } printf("%d", cnt); cnt ++; fp = fopen("cnt.txt","wt"); printf("file write NG.<br>\n"); fprintf(fp, "%d", cnt); cnt.c 「カウンタの数字」だけを 表示するプログラムを用意しておく. cnt.c -o cnt cnt.txt 22 cnt.txt 23
10
SSI式カウンタを含むページ 1/2 This is <b>002.shtml</b> <hr>
You are the <!--#exec cmd="./cnt" -->th visitor. 002.shtml <!--#exec cmd="./cnt" --> 以外の部分は,普通にHTMLを記述すればよい. ロジック と デザイン が分離された.
11
PHP 動的Webページ(Webアプリケーション)の作成に特化したプログラミング言語,その処理系
HTMLの中にスクリプトを埋め込むことが可能 SSIの様に サーバサイドスクリプト言語 つまり,処理(実行)はサーバにて行われる. かつては,PHP=Personal Home Page 今は,「PHP: Hypertext Preprocessor」
12
PHP の例 <html> <head> <title>PHP Test</title>
<body> <ol> <li>(^o^)</li> <li> <?php echo 'Hello, Wordl!'; ?> </li> </ol> </html> 000.php <html> <head> <title>PHP Test</title> </head> <body> <ol> <li>(^o^)</li> <li> Hello, Wordl! </li> </ol> </html> 000.php変換後 特徴 HTMLを(ほぼ)そのまま書いていけばよい. 実行(処理)はサーバで行われる. スクリプト言語(インタープリタ型)でコンパイルは不要 サーバに左のファイル(000.php)を置いておく. | |ブラウザから000.phpに対して読み込み要求があると, ↓ 「サーバ上で」スクリプト部が処理(実行)され,右の内容(000.php変換後)に変換される. 変換後の内容(000.php変換後)が,サーバからブラウザに渡される. 注意:工学院大学のサーバでは,この方法ではPHPは使用できません.
13
PHP の例 <?php echo date('y/m/d'), ' ';
echo strftime('%H:%M:%S',time()), '<br>'; system('/usr/bin/hostname'); ?> 001.php ←これを 001.php として,Webサーバに 置いておく 20/10/19 14:40:01<br>sweb01 ←サーバ上でこの様に変換されてから ブラウザに転送される. 注意:工学院大学のサーバでは,この方法ではPHPは使用できません.
14
PHP利用方法 (工学院大学) 本講義では,基本的にPHPは扱わない. PHPは
sweb01 ( にインストールされている.
15
PHP利用方法 (工学院大学) #!/usr/bin/php Content-type: text/html <html>
<head> <title>PHP Test</title> </head> <body> <ol> <li>(^o^)</li> <li> <?php echo 'Hello, Wordl!'; ?> </li> </ol> </html> 000.cgi 注意点 (1)最初の3行目に, #!/usr/local/bin/php Content-type: text/html と記述する. (2)ファイル名を"*.cgi"にする. (3)実行権限を付与する. 例えば, chmod cgi 工学院大学以外の多くのサーバの設定では, ・(1)の3行は不要であり, ・ファイル名は"*.php"であり, ・実行権限は不要.
16
PHP利用方法 (工学院大学) > hostname sweb01 > ls -l 000.cgi
-rwxr-xr-x 000.cgi > ./000.cgi Content-type: text/html <html> <head> <title>PHP Test</title> </head> <body> <ol> <li>(^o^)</li> <li> Hello, Wordl! </li> </ol> </html> sweb01 ( 実行し, 変換後の内容を確認することができる. green.ns.kogauin.ac.jpではなく,
17
eRuby eRuby (embedded Ruby) HTMLの中にRubyスクリプトを埋め込むことが可能.
18
eRuby <% ~~ %> ~~のスクリプトを実行 <%= ~~ %> ~~を評価し,表示.
19
eRuby <html> <head><title> eRuby
000.rhtml 000.rhtml変換後 <html> <head><title> eRuby </title></head> <body> <% a = "Hello," b = "World!" %> <h1><%= a %></h1> <h2><%= b %></h2> </body> </html> <html> <head><title> eRuby </title></head> <body> <h1>Hello,</h1> <h2>World!</h2> </body> </html> 変換してからブラウザに渡される <% ~~ %> ~~のスクリプトを実行 <%= ~~ %> ~~を評価し,表示.
20
eRuby使用方法 (工学院大学) #!/usr/bin/erb -->
<% print "Content-type: text/html\n\n<!--\n" %> <html> <head><title>eRuby</title></head> <body> <b>hello</b> </body> </html> 000.cgi やや強引な使用方法. erbをcgiとして呼び出す. (1)ファイル名を“*.cgi”にする. (2)ファイルに実行権限を与える. (3)ファイルの先頭に上記の赤色部を記述する.
21
eRuby使用方法 (工学院大学) #!/usr/bin/erb -->
<% print "Content-type: text/html\n\n<!--\n" %> <html> <head><title>eRuby</title></head> <body> <b>hello</b> </body> </html> 000.cgi 変換前 <!-- #!/usr/bin/erb --> <html> <head><title>eRuby</title></head> <body> <b>hello</b> </body> </html> 000.cgi 変換後
22
eRuby使用方法 (工学院大学) サーバ上で,実行(変換)結果を確認する ./000.cgi
23
eRuby の例 <html> <html>
<head><title>eRuby</title></head> <body> <h1>eRuby</h1> <ul> <li> 0 <br></li> <li> 1 <br></li> <li> 2 <br></li> <li> 3 <br></li> <li> 4 <br></li> </ul> </body> </html> <html> <head><title>eRuby</title></head> <body> <h1>eRuby</h1> <ul> <% 5.times do | i | %> <li> <%= i %> <br></li> <%end%> </ul> </body> </html> 002.cgi 変換前 002.cgi 変換後
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.