Comments
Description
Transcript
Webプログラミング演習 PHPによるWebページ生成 演習(アーカイブ
Webプログラミング演習 PHPによるWebページ生成 x.phpの実 行を要求 ブラウザ STEP8 PHPによる動的ページ生成(2) x.phpの出 力が渡る <html> <body> <?php 入力 プログラム データ ?> </body> </html> x.php 出力 ページ webサーバ 演習(アーカイブページの作成) % cd myblog アーカイブページの作成のヒント カテゴリー別・月別などのアーカイブページを作成. PHPファイルは,カテゴリー別用・月別用といった 種別ごとに一つ作成し,具体的なカテゴリー名や年 月はURLパラメータとして与える. URLからパラメータを取得 $id = $_GET['id']; .... if($entry['id'] == $id){ id属性がパラメータと一致したら 例: カテゴリ別 月別 category.php?name=授業 month.php?y=2015&m=11 ブラウザで確認 アーカイブページの作成のヒント(2) 前回のエントリ個別ページ(entry.php)を参考に entry.php?id=X カテゴリー別ページの場合 category.php?name=X $name = $_GET['name']; .... if($entry->category === $name){ アーカイブページの作成のヒント(3) 月別ページの場合 month.php?y=Y&m=M $y = $_GET['y']; $m = $_GET['m']; .... if(strpos($entry->date, "$y.$m") !== false){ 1 演習(アーカイブページへのリンク) トップページ等にアーカイブページへリンク( category.php?name=X等)を作成する. 演習(RSSフィードの生成) RSSフィード – そのサイトで公開されている情報の要約をXML書式で記述したも の。単にフィードと呼ぶことも RDF Site Summary – RDFの文法を使って記述したもの <?php $url = "http://webdesign.center.wakayama-u.ac.jp/~manda/myblog/"; $title = "まんぶろーぐ"; $description = "まんだのブログ"; ファイル名は「rss.php」 – RDF(Resource Description Framework) – コンピュータが理解可能な情報表現 – リソース、プロパティ、値の三者関係を記述 – 参考: http://www.kanzaki.com/docs/sw/rdf-model.html rss.php RSS生成用PHPの作成 注:RSSには名称の異なる複数の規格がある。目的は同じだが書式が違う – RDF Site Summary (RSS 0.9, RSS 1.0) – Rich Site Summary (RSS 0.91) – Really Simple Syndication (RSS 2.0) 内容は次のスライド ブラウザで確認 http://webdesign.center.wakayama-u.ac.jp/ ~ユーザID/myblog/rss.php フィード確認用の画面が出力される $doc = simplexml_load_file('mng/entries.xml'); if($doc == false){ print "XML文書が不整です¥n"; exit; } header("Content-Type: application/xml; charset=UTF-8"); XMLを出力することを宣言 print "<?xml version=¥"1.0¥" encoding=¥"UTF-8¥"?>¥n"; ?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:cc="http://web.resource.org/cc/" xmlns="http://purl.org/rss/1.0/"> 以下RDF Site Summaryの <channel rdf:about="<?php print $url?>"> 書式に従って出力 <title><?php print $title?></title> <link><?php print $url?></link> <description><?php print $description?></description> <items> <rdf:Seq> (次ページへつづく) rss.php(つづき) <?php foreach($doc->entry as $entry){ print '<rdf:li rdf:resource="'.$url.'entry.php?id='.$entry['id'].'"/>'."¥n"; } 各エントリへのリンク要素を出力 ?> </rdf:Seq> </items> </channel> <?php エントリ毎に情報を出力 foreach($doc->entry as $entry){ $bstr = strip_tags($entry->body->asXML()); print '<item rdf:about="'.$url.'entry.php?id='.$entry['id'].'">'."¥n"; print "<title>".mb_convert_encoding($entry->title,"utf-8","auto")."</title>¥n"; print "<link>".$url.'entry.php?id='.$entry['id']."</link>¥n"; print "<description>". mb_convert_encoding($bstr,"utf-8","auto"). "</description>¥n"; print "<dc:subject>". mb_convert_encoding($entry->category,"utf-8","auto")."</dc:subject>¥n"; print "<dc:date>".strtr($entry->date,".","-")."</dc:date>¥n"; print "</item>¥n"; } ?> </rdf:RDF> 次回の予定 Ajaxを利用したRSSフィードのタイムライン表示 (ソースファイル) 2