Webプログラミング演習

Similar documents
Webプログラミング演習

Webプログラミング演習

実験 5 CGI プログラミング 1 目的 動的にWebページを作成する手法の一つであるCGIについてプログラミングを通じて基本的な仕組みを学ぶ 2 実験 実験 1 Webサーバの設定確認と起動 (1)/etc/httpd/conf にある httpd.conf ファイルの cgi-bin に関する

第 7 回の内容 動的な Web サイト フォーム Web システムの構成

Webデザイン論

Microsoft Word - PHP演習資料.doc

Webデザイン論

メディプロ1 Javaサーブレット補足資料.ppt

Microsoft PowerPoint _2b-DOM.pptx

JavaScript 演習 2 1

JavaScript演習

C:\Apache Software Foundation\Apache2.2\htdocs\sample\login.html サンプルプログラム passworddisc.php <head><title> ログイン </title></head> $user=$_post['user']; $

スライド タイトルなし

第7回 Javascript入門

PowerPoint プレゼンテーション

ビジネスサーバ設定マニュアル_Standard応用編

WEBシステムのセキュリティ技術

<4D F736F F D A957A A A8FEE95F18F88979D DEC90AC E646F63>

forever朝活

Microsoft PowerPoint - 04WWWとHTML.pptx

Web データ管理 JavaScript (1) (4 章 ) 2011/12/7( 水 ) 湘南工科大学講義資料 Web データ管理 (2011) 阿倍 1/21

intra-mart Accel Platform — 招待機能プログラミングガイド   初版  

PowerPoint プレゼンテーション

■新聞記事

1

PowerPoint プレゼンテーション

Si 知識情報処理

Webデザイン論

目次 1. 教育ネットひむかファイル転送サービスについて ファイル転送サービスの利用方法 ファイル転送サービスを利用する ( ひむか内 ) ファイル転送サービスへのログイン ひむか内 PCでファイルを送受信する

リスト 1 1 <HTML> <HEAD> 3 <META http-equiv="content-type" content="text/html; charset=euc-jp"> 4 <TITLE> 住所の検索 </TITLE> 5 </HEAD> 6 <BODY> <FORM method=

クイックマニュアル(利用者編)

目次 1. 概要 2. サーバーへの設置 3. 設定 4. ユーザーアクセス記録の収集 5. 利用規定 6. 更新履歴

ホームページにパスワード認証を設定します 会員限定のページなどに利用できます 設定の手順 を設定するには 以下の手順で行います ユーザ登録 を設定したページにアクセスするためのユーザを登録します の設定 を設定するページ アクセスを許可するユーザを選択し 設定します 設定完了 を設定したページにアク

10th Developer Camp - B5

<48746D6C8AEE91628D758DC02E786C73>

演習室の PC のハードディスクには演習で作成したデータは保管できません 各 PC の ネットワーク接続 ショートカットからメディア情報センターのサーバーにアクセスしてください (Z ドライブとして使用できます ) 演習名 使用するフォルダ 演習 1 Z: Web データ管理 演習

<td width=99%><input type="file" size="80" name="file"></td> <td width=1% nowrap align=right valign=top> 削除キー : </td> <td width=99%><input type="passw

はじめに このマニュアルは 2 ch まとめブログに色々なパーツを盛り込み 魅力的なデザインにするための マニュアルです 2 ちゃんまとめブログに相互 RSS を入れたい 2ch キャラクターのアニメーション画像を入れたい という方のために このマニュアルを用意させていただきました! 魅力的なデザイ

Web プログラミング 1 JavaScript (3) (4 章 ) 2013/7/3( 水 ) 日時 講義内容 4/10 ( 水 ) ガイダンス Web (1 章 ) 4/17 ( 水 ) HTML+CSS (1) (2 章 ) 4/24 ( 水 ) HTML+CSS (2) (2 章 ) 5/

( 目次 ) 1. はじめに 開発環境の準備 仮想ディレクトリーの作成 ASP.NET のWeb アプリケーション開発環境準備 データベースの作成 データベースの追加 テーブルの作成

Simple Violet

情報システム設計論II ユーザインタフェース(1)

PowerPoint プレゼンテーション

内容 ( 演習 1) 脆弱性の原理解説 基礎知識 脆弱性の発見方法 演習 1: 意図しない命令の実行 演習解説 2

4. WIX アタッチエンジン 4. 1 FSDR 処理 システムの Web 資源結合動作であるアタッチ処理について 述べる. アタッチ処理は以下の 4 フェーズに分けられる. この一連の 流れを FSDR 処理とする. Find 処理 Select 処理 Decide 処理 Rewrite 処理

コンテンツメディアプログラミング実習2

J-Payment クレジットカード 決済システム接続仕様書

演習室の PC のハードディスクには演習で作成したデータは保管できません 各 PC の ネットワーク接続 ショートカットからメディア情報センターのサーバーにアクセスしてください (Z ドライブとして使用できます ) 講義で使うフォルダ 2/23

演習室の PC のハードディスクには演習で作成したデータは保管できません 各 PC の ネットワーク接続 ショートカットからメディア情報センターのサーバーにアクセスしてください (Z ドライブとして使用できます ) Web プログラミング 1 CGI (3 章 ) 2012/6/12( 水 ) 講義

オンラインテスト

Microsoft PowerPoint - Lecture_2

Web のしくみと応用 ('15) 回テーマ 1 身近なWeb 2 Webの基礎 3 ハイパーメディアとHTML 4 HTMLとCSS 5 HTTP (1) 6 HTTP (2) 7 動的なWebサイト 8 クライアントサイドの技術 回 テーマ 9 リレーショナルデータベース 10 SQL とデータ

JavaScript演習

1 ユーザ認証を受けた権限で アプリケーションを利用するために ログインプロキシにアクセスします 2 ログインプロキシにより Shibboleth SP から Shibboleth IdP の認証画面にリダイレクトされます 3 ブラウザに認証画面を表示します 4 認証画面にユーザ / パスワードを入

ウェブサイト内検索機能マニュアル

ご利用のコンピュータを設定する方法 このラボの作業を行うには 事前設定された dcloud ラボを使用するか 自身のコンピュータをセットアップします 詳細については イベントの事前準備 [ 英語 ] とラボの設定 [ 英語 ] の両方のモジュールを参照してください Python を使用した Spar

PowerPoint プレゼンテーション

SmartBrowser_document_build30_update.pptx

SOC Report

PowerPoint プレゼンテーション

Web プログラミング 1 JavaScript (4) (4 章 ) 2013/7/17( 水 ) 日時 講義内容 4/10 ( 水 ) ガイダンス Web (1 章 ) 4/17 ( 水 ) HTML+CSS (1) (2 章 ) 4/24 ( 水 ) HTML+CSS (2) (2 章 ) 5

Microsoft Word - WebClass Ver 9.08f 主な追加機能・修正点.docx

Web データ管理 JavaScript (3) (4 章 ) 2011/12/21( 水 ) 湘南工科大学講義資料 Web データ管理 (2011) 阿倍 1/18

勉強会の流れ Google API の概要 デモ curl で実際に体験 Copyright 2010 SRA OSS, Inc. Japan All rights reserved. 2

第 2 版 東洋英和女学院大学大学院

Prog2_6th

2

2003年度 情報処理概論

アンケートフォーム簡易作成機能マニュアル

~モバイルを知る~ 日常生活とモバイルコンピューティング

MultiStageマニュアル_メール設定編

SOC Report

PowerPoint プレゼンテーション

9 WEB監視

第 8 回の内容 クライアントサイド処理 JavaScript の基礎

●コンテンツ「掲示板」

フォームとインナー HTML を使って動的にページ内の文章を変更しよう 問題 1. つぎの指示と画面を参考に HTML を組みなさい 仕様 テキストボックスに任意の文字を入力し [ コメント ] ボタンをクリックすると 下部の文章がテキストボックスの内容に置き換わる フォーム名 : f1 テキストボ

Microsoft PowerPoint - widget.ppt

■デザイン

Microsoft Word 基_シラバス.doc

(8) [ 全般 ] タブをクリックします (9) [ インターネット一時ファイル ] の [ 設定 ] ボタンをクリックします (10) [ 保存しているページの新しいバージョンの確認 ] から [ ページを表示するごとに確認する ] をクリックします (11) [OK] ボタンをクリックしていき

「MT-3_2-ja

Web WIX WIX WIX Web Web Web WIX WIX WIX Web 3. Web Index 3. 1 Web Index (WIX), Web. Web, WIX, Web ( WIX ), URL WIX 1 entry wid eid keyword targe

JavaScript カスタマイズ入門 kintone university アプリデザイナープラス JavaScript カスタマイズ入門編演習問題回答 演習問題 第 2 章サンプルで試そう 1 cybozu.com developer network の サンプルで試そう ( 以下 サンプル と

SOC Report

Microsoft PowerPoint - CTYスマホ LINE設定.pptx

インターネットマガジン2001年9月号―INTERNET magazine No.80

目次 1. PDF 変換サービスの設定について )Internet Explorer をご利用の場合 )Microsoft Edge をご利用の場合 )Google Chrome をご利用の場合 )Mozilla Firefox をご利

ホームページ公開方法

携帯電話でGoogle Mapsを使う

目次 第 1 章ホームページ作成 ホームページの作成 ホームページ作成にあたっての留意事項 アクセスカウンタの設置方法 メール送信フォームのご利 方法 メール送信フォームご利 に関する留意事項.

Step1 ショートカットを作成する Step1 では デスクトップにショートカットを作成します ご利用のシステムに応じて 1 TurboLinux Client 2008 Basic (KDE) の場合 2 Ubuntu の場合をそれぞれ参照し 作成してください 1Tur

2. 動的コンテンツとは動的コンテンツとは Web ブラウザからの要求に応じて動的に Web ページや画像などを生成する Web コンテンツのことをいいます Web で利用するサーチエンジンやアクセスカウンタ等は この仕組みを用いています 動的コンテンツは大きく次の二つに分類されます (1) Web

Prog2_6th

untitled

ページ閲覧を計測する 手順 1: カスタム HTML タグ からタグを設定する まず タグタイプを選択 の画面で カスタム HTML を選択します タグの設定画面が開くので ユーザグラムで発行されたタグを HTML 欄に直接貼り付けてください document.write をサポートする はオフのま

intra-mart Accel Collaboration — ファイルライブラリ 管理者操作ガイド   第6版  

追加する方法は以下の 2 つです 書き出し後にヘッダーを追加する (1 冊だけヘッダーを適用する場合に向く ) 書き出し形式を追加する ( 何冊も同じヘッダーを適用する場合に向く ) 注意 HTML の知識が必要です ロゴスウェアでは HTML の書き方についてのサポートはお受けしておりませんのでご

Facebook イベントページ作成方法 Fecebook でイベントページを作成していきます まずは Facebook へログインしてください ページ左にある ニュースフィールド の イベント をクリックします 右上の イベント作成 をクリックします 2 / 24

タグの設定方法 ユーザグラムのタグは 現時点では Yahoo! タグマネージャーのタグカタログに含まれていません このため スマートカスタムタグ から タグを直接貼り付ける必要があります 手順 1: スマートカスタムタグ からタグを設定する まず サービスタグの選択画面右上に書かれた スマートカスタ

Transcription:

Web プログラミング演習 特別編 いいね ボタンの実装

いいね ボタン ( 英語では Like) Facebook で, 他の人のコンテンツ ( コメント 写真など ) の支持を表明するためのボタン クリックすると, 自分の Facebook のタイムラインに支持したことが記録される ( コメントを同時投稿することも可能 ) 友達のニュースフィードに表示 コンテンツ毎にクリックしたユーザ数がカウントされる コンテンツに対するポジティブフィードバック 友達へのお勧めも兼ねている Facebook コンテンツ以外 ( 一般のサイト ) にも設置可能 ウェブマーケティングにも利用されている

Facebook の いいね の仕組み 外部コンテンツの場合 コンテンツに埋込み <iframe src="...... /> Facebook サイトで生成した外部コンテンツ用の HTML コード 一般サイト コンテンツに埋込み <iframe src="...... /> 外部コンテンツ用 HTML コード 一般サイト Facebook サイト Facebook サイトでユーザを一元管理しているので, 訪問者のユーザ ID 取得やクリックユーザ数のカウントが可能

この演習での いいね の仕組み <div> <input type="..."/> </div> 自サイトで生成した HTML,JavaScript ユーザ ID の入力 コンテンツ提供者のサイト ユーザ ID で振り分け 訪問者ごとにサイトが異なる ( 別々のユーザ管理 ) ユーザ数のカウントはできない. 訪問者が誰かはユーザに入力してもらう Basic 認証 訪問者のサイト Basic 認証 訪問者のサイト #!/usr/bin/perl use CGI;... コメント投 稿用 CGI #!/usr/bin/perl use CGI;... コメント投 稿用 CGI

演習 % cd myblog like.png( ボタンの画像 ) を作成する サンプルはここ like.js を作成する 内容はここ 先頭の myurl( 個別エントリページ用 PHP), mytitle( ブログのタイトル ) は各自のブログサイトのものに変更 いいね ボタンを配置する PHP(index.php, entry.php) を次ページのように変更する

index.php, entry.php の変更 head 領域内で like.js を読み込む <script type="text/javascript" src="like.js">//</script> エントリー出力部分を変更する ( 各自のデザインに合わせて ) エントリーにlink 要素 (<link>...</link>) が含まれていたら,aタグを使ってリンクを生成する div 要素を作り, その中に いいね ボタンを置く. クリックされた時にはlike(this, id) が呼ばれるようにする <div> <input type="image" src="like.png" alt=" いいね " onclick="like(this, $id)"/> </div> サンプルはここ

いいね ボタンを押した時に自分のエントリを追加する CGI % cd mng % cp entries.xml entries.bak ( 誤って XML ファイルを壊してしまった時のためのバックアップ ) like.cgi を作成 内容はここ 作成後の手続き ( 実行許可を与える ) % chmod +x like.cgi

ブラウザによる確認 いいね ボタンの表示の確認 自分のブログサイトの index.php, entry.php にアクセスすると, いいね ボタンが表示される いいね ボタンをクリックした時に, ユーザ ID とコメントを入力して投稿するためのフォームが表示される いいね ボタンをクリック

ブラウザによる確認 いいねエントリの追加の確認 他の人のブログサイトにある いいね ボタンをクリックする Web プログラミング演習のサイトでも OK ユーザ ID( 自分の演習室 ID,s185xxx) とコメントを入力して投稿 ユーザ認証を求めてきたら,mng ディレクトリにアクセスする時の ID, パスワードを入力 ( Perl/CGI による ( その 2) で設定したもの ) 自分のブログサイトに新しいエントリが追加されたことを確認

like.js の解説 (1) function like(btn, id){ いいね ボタンがクリックされた時の処理(btnはクリックされたボタン,idは var like = btn.parentnode; 親要素 (div) の取得クリックされたエントリーのid 属性 ) var form = like.getelementsbytagname("form")[0]; divの中にあるform 要素を取得 if(!form){ form 要素が存在しなければひとつ作成して,divに追加する form = document.createelement("form"); form.method = "POST"; form 要素のmethodはPOST form.onsubmit = like_submit; submitボタン ( 投稿 ) を押した時にはlike_submit 関数を呼び出す form.innerhtml = "<input type='hidden' name='url' value='"+myurl +"?id="+id+"'/>"; form.innerhtml += "<input type='hidden' name='title' value='"+mytitle+"'/>"; form.innerhtml += "<div> ユーザID:<input type='text' name='uid'/></div>"; form.innerhtml += "<div> コメント :<input type='text' name='comment'/></div>"; form.innerhtml += "<input type='submit' value=' 投稿 '/>"; like.appendchild(form); 入力用フォームの作成 } (urlとtitleは隠し要素) form.style.display = "block"; form 要素を表示する ( 隠れている場合があるため ) }

like.js の解説 (2) function like_submit(evt){ 投稿 ボタンがクリックされた時の処理 var form = evt.target; form 要素の取得 var uid = form.uid.value; ユーザIDの取得 var act = "http://webdesign.center.wakayama-u.ac.jp/~"+uid+"/myblog/mng/like.cgi"; } form.action = act; form.style.display = "none"; form.submit(); return true; ユーザ ID から投稿用 cgi の URL を作成して form のアクションとする form 要素を隠す投稿用 cgi を実行

like.cgi の解説 (1) regist.cgi と異なる部分 ($sec,$min,$hour,$mday,$mon,$year) = localtime; $str = sprintf("%04d.%02d.%02d %02d:%02d", ($year+1900), ($mon+1), $mday, $hour, $min); $e=$doc->createelement("date"); $e->appendchild($doc->createtextnode($str)); $entry->appendchild($e); date 要素の中身は, 現在日時とする $str = decode("utf8"," いいね (").param("title").decode("utf8"," より )"); $e=$doc->createelement("title"); title 要素の中身は, $e->appendchild($doc->createtextnode($str)); いいね( ブログ名より ) $entry->appendchild($e); とする $e=$doc->createelement("category"); $e->appendchild($doc->createtextnode(decode("utf8"," いいね "))); $entry->appendchild($e); category 要素の中身は, いいね とする

like.cgi の解説 (2) $e=$doc->createelement("body"); $e->appendchild($doc->createtextnode(param("comment"))); $entry->appendchild($e); $e=$doc->createelement("link"); $e->appendchild($doc->createtextnode(param("url"))); $entry->appendchild($e); body 要素の中身は いいね で入力したコメント link 要素を作成する中身は いいね をクリックした個別エントリーへの URL

Cookie HTTP のやり取りの中で, サーバからブラウザにデータ ( 名前と文字列の組 ) を送る仕組み HTTP レスポンスのヘッダに Cookie データを含める ブラウザは, サーバ, 名前, 文字列をセットとして記録する ( ユーザが許可している場合 ) 以降, ブラウザがそのサーバのページにアクセスする際には, 名前と文字列の組がサーバに送信される. サーバ側のセッション管理 ( 同一ユーザからの連続アクセスの把握など ) に利用されることが多い 注 : ブラウザ ( あるいはユーザ ) が自由にデータ文字列を変更できる 一般的には暗号化し, ユーザの改変が判別できるようにする

Cookie を使ってユーザ ID を記録させる いいね ボタンをクリックする度にユーザ ID を入力するのは面倒 一度いいねエントリを投稿したら, ユーザ ID を Cookie に記録させる like.cgi の実行時にサーバからブラウザに Cookie としてユーザ ID 情報を送信する Cookie の名前は mybloguid とする いいね ボタンがクリックされた時に,Cookie にユーザ ID が記録されていたら, ユーザ ID を入力済み 変更不可とする

演習 (Cookie の利用 ) mng/like.cgi の修正 HTTP レスポンスのヘッダーに Cookie を追加する print header(-type=>"text/html; charset=utf-8"); 修正 自分の演習室 ID $cookie = cookie(-name=>'mybloguid', -value=>'s175xxx'); print header(-type=>"text/html; charset=utf-8", -cookie=>$cookie);

演習 (Cookie の利用 ) like.js の修正 getcookie 関数を追加する ( 内容はここ ) 引数で指定された名前を持つ Cookie が記録されていたらそのデータ文字列を, 無ければ空文字列を返す関数 like 関数の中で,mybloguid という名前の Cookie が空文字列でなければ, ユーザ ID が設定されていた場合の処理を行う var uid = getcookie("mybloguid"); if(uid!= ""){ form.uid.value = uid; form.uid.disabled = true; } form.style.display = "block"; 追加するコード

次回の予定 XSLT による動的ページ生成