ランキングCGI -Ranker
言語 :Perl
ファイルサイズ:5KB スクリプトファイルをダウンロード Movable Type用スクリプトファイルをダウンロード(ブログツールのMovable Typeのエントリー(記事)の人気ランキングを表示するためのCGIです。説明はこちらから ) サンプル
名前と値のペアを受け取り、その値に応じて名前の順位を上下させて出力する、順位集計用CGIスクリプトです。 [ranking.cgi]をエディタなどで開いて編集できる状態にします。 まず1行目に、お使いのサーバーのPerlのパスを入れてください。#!もコメントではなく、先頭に必要です。 説明の行は飛ばして、設定項目とかかれた行を表示させてください。 $title = "連打数ランキング";とある所の""で囲われた部分に入力された言葉が、順位表を表示する際のタイトルとなります。 またその下の「ランク表示ページのスタイル」とある部分には、こちらも順位表を表示するページのスタイルをスタイルシート形式で設定できます。 background-color:white;とあれば背景色が白に、color:black;で文字色が黒になります。
Body{}で囲われた部分はページ全体に適用され、#TITLEはタイトルへ、#OWUNは更新するため入ってきた名前つまり自分の名前のある行の設定です。TABLEはテーブルのスタイル設定です。さらに下に進み、 $isDown = 0;で記録がおちたときにも値を更新して保存するかどうか設定します。0で更新しない、1で更新します。ただし、落ちても更新する設定の場合、他の人に成りすまして低い記録を出して、記録を落とす人がいるかもしれないので気をつけてください。 その次の $referrer="";を設定すれば終わりです。これは更新するために呼び出されたとき、呼び出し元のページを指定するためのものです。 このCGIを呼び出すHTMLファイルのURLを""の中に入れてください。 ファイル名が複数あったり、変わる場合には途中まででも構いません。空文字のままの場合、アドレスバーの数値を少し変えてエンターを押されるとその改ざんされた数値に置き換わってしまいますので指定することを推奨します。 これで設定項目は終了しました。お疲れ様でした。それでは次のステップ、アップロードして設置に移りましょう。 アップロードすべきファイルと、パーミッション(属性)の設定値です。
また、このCGIを置くフォルダのパーミッションを777にする必要のあるところもあるようです。 パーミッションの設定方法は、FFFTPの場合、アップロードした後のファイルやフォルダ(右側)を右クリックして、 [属性変更]を選びます。そして[現在の属性]に、3桁の数値を入力して[OK]を押してください。 CGIファイルを[755]に、データファイルを[666]にすればOKです。 なお、[jcode.pl]はKazumasa Utashiro氏作のフリーの日本語コード変換用ライブラリです。 再配布可能のため含めてあります。 URL:ftp://ftp.iij.ad.jp/pub/IIJ/dist/utashiro/perl/ アップロードとパーミッションの設定が終わりましたら、早速テストです。 設置したCGIのURLをブラウザのアドレス欄に入力してアクセスしてみてください。 タイトルが表示されればCGIの動作はOKです。 404エラーが表示される場合は、URLの間違いを疑ってみてください。あるいは正しくアップロードできていないのかもしれません。 500エラーが表示される場合は、1行目のPerlのパスが正しいかどうか、パーミッションが正しいかどうかを確認してください。 次にデータがきちんと保存されるかどうかのチェックのために、このCGIを呼び出すファイルにアクセスしてこのCGIを呼び出します。 呼び出し方としていちばん簡単な方法にリンクを張ることがあります。下行をコピーし、ソースに貼り付け保存、アップロードしてみてください。 ex)<a href="./ranking.cgi?name=TestName&num=PP&type=html">TestNameの値を+1します。</a> href=""のURLは適宜変えてください。 リンクを貼りアップロードしたファイルにアクセスし、このリンクをクリックすることでTestNameの値が1づつ増えていけば成功です。もし表示されない場合は、データファイルのパーミッションが正しいかどうか確認してください。 呼び出す際のフォーマット: ranking.cgi?[name=名前&num=数値][&type=(image|html|text|redirect)][&redirectTo=URL][&orderby=(asc|desc)]
この形式で呼び出してください。[]で囲われたところは省略可能、(1|2|3)は1,2,3のうちどれかを指定してください。個々の人が持つ記録を更新していくタイプです。 [name]に値が入っている場合、更新またはデータ追加+表示、そうでなければデータ表示です。 [num]に[name]の記録などを代入します。特値として "PP","MM" があり、[num=PP]で呼び出すと[name]の現在の記録に1足します。[num=MM]で呼び出すと[name]の現在の記録を1引きます。新しい[name]の場合は1になります。 [type]の説明 image:空白GIFを返します。<IMG>タグのSRC属性にこのCGIスクリプトのURLを指定し、[name]にファイル名、[num]にPPを指定し、ページが表示されたときに呼び出せばページごとの表示数ランキングを取ることができます。タグは<IMG SRC="/xxx/ranking.cgi?name=filename&num=PP&type=image">の形です。 html:順位表を順位、名前、記録のレコード形式のテーブルに整形して表示します。 text:順位、名前、記録をタブで区切った形式です。 redirect:[redirectTo]で指定したURLにリダイレクトします。そのページで記録されているJavaScript外部ファイルを読み込んでお好みに処理したりできます。 ゲーム終了後、JavaScriptのlocation.hrefメソッドを使って名前とスコアを埋め込んだURLにアクセスすることで記録をランキングに登録し、そのまま表示できます。例として、変数[Score]に得点が入っているなら、プロンプトから名前を入力してそれを登録できます。[location.href="/xxx/ranking.cgi?name="+prompt("お名前をどうぞ","")+"&num="+Score;] データファイルはJavaScriptの外部ファイルとして読み込むことも可能な形式です。 NAME[x]="name";NUM[x]="num";という形式です。HTMLファイルの方で配列の宣言をしておきます。↓ <SCRIPT>var NAME = new Array();var NUM = new Array();</SCRIPT> (配列宣言) <SCRIPT TYPE="text/javascript" src="xxxx/ranker/ranking.js"></SCRIPT> (外部ファイル取り込み) <SCRIPT>for(i=0;i>10;i++){document.write((i+1)+" : "+NAME[i]+" : "+NUM[i]+"<br>");}</SCRIPT> (10位まで表示) [orderby]は、データの表示を昇順(小さい順)にするか、降順(大きい順)にするかを指定します。"asc"で昇順、"desc"で降順になります。ただし、出力が変わるだけで、データファイルの記録方法は常に降順なので、JavaScriptのデータファイルとして取り込みたい場合は注意してください。また、デフォルトでは降順です。 この[ランキングCGI-Ranker]の著作権はシップが所有します。改変していただいてもちろん構いません。 ただし、それを再配布する場合には、こちらへの連絡と、オリジナル紹介ページ(このページ)へのリンク、著作者(私)の名前、改変した個所を配布物ドキュメントに明記した上で行ってください。その際、このページをドキュメントとして添付することはできません。ご自分で書いてくださいね。 これはフリーソフトですが、寄付などは喜んでお受けしておりますので、メールでお問い合わせください。 使ってくださる方は、掲示板かメールで一言くださるとうれしいですし、その後のサポートもスムーズに行えます。 バグの報告もしていただけるなら助けになります。 最後に、使ってくださる方々に感謝を込めて。 22:36 2003/09/28 シップ | ||||||||||||||||