• ベストアンサー

CGI+フラッシュのハイスコアランキングサンプル

buffalomasaの回答

回答No.1

そのデータの中にはちゃんと一位の人のスコアが書かれていますか? 書かれていればCGIの問題の可能性があります。 書かれていなければFLASHのスクリプトの問題の可能性があります。 いずれにせよファイルに正常にデータが書かれているか確認してみて下さい。

miku2
質問者

補足

今、DATファイルをダウンロードして見てみました。一位の人のデータは9999999999999999に上書きされてて、ちゃんと書かれていました。 cgiはダウンロードしたそのままなので、これであってると思います。↓ #!/usr/local/bin/perl #----- ランキングデータファイル $logfile = "./hisc.dat"; #----- データの値の読み込み if ($ENV{'REQUEST_METHOD'} eq "POST") { read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); } if ($ENV{'REQUEST_METHOD'} eq "GET") { $buffer = $ENV{'QUERY_STRING'}; } @getlist = split(/&/,$buffer); foreach(@getlist) { ($key,$value) = split(/=/,$_); $getdata{"$key"} = $value; } #----- ランキングファイルの読み込み open(IN, "$logfile"); @sortdata = <IN>; chop(@sortdata); close(IN); #----- データの追加 if ($getdata{'score'} ne "") { $data = "$getdata{'score'}\,$getdata{'playername'}"; push(@sortdata, $data); } #----- データのソート @sortdata = sort{(split(/\,/,$b))[0] <=> (split(/\,/,$a))[0]} @sortdata; #----- データをFlashへ送る print "Content-type: text/plain\n\n"; for ($i = 0; $i < 10; $i++) { ($sc, $pname) = split(/,/,$sortdata[$i]); print("score$i=$sc&name$i=$pname&"); } #----- データの書き換え if ($getdata{'score'} ne "") { open(OUT, ">$logfile"); for ($i = 0; $i < 10; $i++) { print OUT "$sortdata[$i]\n"; } close(OUT); } exit; はじめにサンプルファイルをアップした時には、数字をいじったので、そのデータがどこかに残っているのかもしれません。 そのいじったファイルはすべて捨てて今はデフォルトの状態でアップしなおしたのですが・・ ブラウザのキャッシュもクリアしました・・ 何度サンプルファイルをサイトからダウンロードしなおしてアップロードしなおしても、一位の人のスコアだけ表示されないという悪循環がくりかえされます・・

関連するQ&A

  • CGIをアスキー転送モードでアップすると「Internal Server Error」となります。

    CGIをダウンロードして、サーバーにアップロードしたのですが、 CGIが作動せず、「Internal Server Error」となってしまいます。 KENTのフリーCGIほか、いろいろなCGIで試してみても同様です。 転送モードやパーミッション等の基本的な設定は間違っておりません。 他のサーバーであれば、問題なく動きました。 いろいろと試したところ、どうやら改行コードの問題のようだったため、 ダウンロードしたCGIファイルを、エディタにてLFに変換して保存し、 バイナリ転送モードにてアップロードしたところ、作動しました。 通常であれば、このようなことをしなくても、ダウンロードしたCGIファイルを アスキー転送モード(もしくは自動)でアップロードすれば 作動すると思うのですが、この原因は何なのでしょう? サーバー側の設定の問題なのでしょうか? どなたかもし分かりましたら、ご教授お願いいたします。

    • ベストアンサー
    • CGI
  • Rubyのcgiが動作しません。

    下記のように4行のルビーのcgiを作りました。 ファイル名rb.cgi #!/usr/bin/ruby print <<EOF あああ EOF これをRubyを提供しているapacheサーバにアップロードし パーミッションを777にしました。 文字コードはEUC、改行はLFのみです。 しかし、Internal Server Errorが表示されます。 そこで、サーバにログオンし、このcgiファイルの ディレクトリまで移動し、./rb.cgiを実行すると あああと表示されます。また、このcgiファイルと 同一ディレクトリにあるparlのcgi(掲示板)は 正常動作しています。 どこが間違っているのでしょうか?

    • ベストアンサー
    • CGI
  • CGI設置時に500エラーになります

    CGIを設置しようとしたところ、500 Internal Server Error になります。 共用サーバーIDを使用しています。 CGIファイルは「cgi-bin」の中に入れています。 たとえばこんな簡単なCGIでテストしたのですが、500 Internal Server Errorになってしまいます。 ↓ #!/usr/local/bin/perl print "Content-type: text/html \n\n"; print "Hello"; #!/usr/local/bin/perlを #!/usr/bin/perlにしても結果は同じです。 (サーバーの指定は#!/usr/local/bin/perl) パーミッションは755にしています(705に変えてもダメでした)。 CGIファイルの改行コードはLFにしており、テキスト(ASCII)モードでアップロードしています。 それでも500 Internet Server Errorになります。 サーバーではエラーログが見られないのでみなさんにお聞きしたいのですが、他にどんな原因が考えられるでしょうか?

  • 人工無能チャットcgiが動かない。

    人工無能チャットcgiが動かない。 初めのページは表示されるが、発言すると「500 Error - Internal Server Error」「CGIもしくはSSIが正しく動作していません。」となる。 「人工無能ARISA/Multi」と言う、公開を停止してらっしゃるcgiを、開発者の方に無理を言ってダウンロードさせてもらいました。 CGI設置トラブル専用の掲示板などは、もうないようなので、自力で調べて出来るだけチェックしたのですが、動いてくれません。 原因を突き止めようとじぶんがやったことは、 ★パーミッションを見直す。 ★CGIスクリプトの文法を見直す。 ★アスキーモードにして、再転送。 ★CGIスクリプト1行目のperlのパス指定を見直す。 ★CGIを設置できるサーバかどうかの確認。 ★ディレクトリ構造の確認。 ★その他   以上です。 ★パーミッションを見直す。 「bot」というディレクトリ(パーミッション755)にファイルをアップロードしました。 アップロードしたファイルは、 arisamulti.cgi dic1.dat dic1b.dat dic2.dat dic3.dat dic3b.dat dic3b.dat dic4.dat jcode.pl です。 パーミッションは、arisamulti.cgiのみ705で、他は全て604にしています。これは、cgiの開発者の方が指定してくださっているパーミッションを設定したので、動くはずなのですが、動作しません。 サーバの関係でパーミッションを変えると動くことがあるのを知り、何パターンか試してみましたが、やはり動きませんでした。 ★CGIスクリプトの文法を見直す。 cgiの題名や背景などを少々編集したので;が抜けたり、背景にCSSを使ったことが駄目なのかと思い、文法チェッカかけてみましたが、異常なしでした。 ★アスキーモードにして、再転送。 FFFTPでアップロードしました。アップロードするとき、自動転送モードではなく、きちんとアスキーモードでアップロードしたので、バイナリにはなっていないはずです。 ★CGIスクリプト1行目のperlのパス指定を見直す。 サーバーのPerlへのパスは#!/usr/local/bin/perlです。atpagesの要求通りにしました。 全く動かないわけではないので、これが原因ではないと思います。 ★ディレクトリ構造の確認。 同じディレクトリにアップロードしてくださいと開発者の方が指定されていたので、その通りにしました。なので、ディレクトリ構造の間違いと言うことはないと思います。 ★CGIを設置できるサーバかどうか。 (http://atpages.jp/)というところの無料スペースにアップロードしました。URLは(http://www19.atpages.jp/zakurosakura/bot/arisamulti.cgi)です。 atpagesのwww19はCGI設置可能なので、ほかのcgiは問題なく動作しています。どのディレクトリにアップロードしても動くはずなのですが、このcgiだけ動きません。 atpagesのCGIガイドによるとPerlは「バージョンは、Perl 5です。」 と書いてありました。もしかしてバージョンが違うのでしょうか。 ★その他 ・必要なファイルはすべて転送されていた。 ・文字コードはShift_JISになっている。 ・エラーが出たページで更新して、ブラウザのキャッシュがないか確認。→なかった。 聞きたいこと 原因と、どうしたらcgiが動作するようになるかの対処法を教えていただきたいです。 かなりの初心者なので、具体的にどうすればいいか教えてくださると嬉しいです。 あと、なにか足りない情報があれば解る範囲で追記いたしますので、ご指摘ください。

    • ベストアンサー
    • CGI
  • CGIプログラムの「↑」

    フリーのCGIをDLしてプログラムを開くと、 ほとんどは改行などされていて整列していますが、 たまに全く改行されずに「↑」みたいなのが書いてあり、 その部分を改行させると、「■↑↑」になったりします。(PC上で?) ただ、これをサーバーにアップロードして開くと綺麗に整列されてます。 このプログラムをPC上できれいに表示させるためにはどうすればいいでしょうか? よろしくお願いします。

  • CGIエラー

    あるCGIを組んでてアップロードしたらエラーが出ました。 もちろんInternalServerErrorでerror.logには (8)Exec format error: exec of 'ほげほげ/test.cgi' failed Premature end of script headers: test.cgi とありました。(ほげほげは気にしないで^^;) ぐぐって見たものの原因はわからず、簡単なcgiをアップロードしてもこのエラーが出ます。 Shift_JISで改行コードLFにしてます。 ASKIIモードにしました。 ヘッダーも入れてます。 いろんな方法を試しました。 ちなみにレンタルサーバーで、CGIはOKです。 都合上期限がやばいので、すぐに回答お願いします!

  • cgiがうごきません

    ApacheとPerlをインストールしてローカルでの動作確認OKなのですが、HP上では機能しません。 プロバイダー側が作った「アクセス権が認められてません ・・・どうたら、こうたら」のメッセージがでます。 すべてのファイル(cgi,html,pl・・)をEUC(文字)CR+LF (改行)にして、アスキーモードでアップロードしました。 Perlパスやパーミッションは間違いないとは思うのですが 、アクセスすると凄い文字化けになっています。掲示板は機能しません。FTPはFFFTPですので自動改行すると思うの ですが、コードの設定に関係があるのでしょうか? 私はWin98,プロバイダーはUNIX系です。それから、Apache とPerlを使ってエラーを調べられるようなことを聞いたの ですが、どのようにするのでしょうか?お願いします。

    • ベストアンサー
    • CGI
  • CGIの設置について。(BIGLOBE)

    はじめまして。ご覧くださってくありがとうございます。 2apesさんでapeboard+をダウンロードし、素材のHPからスキンをダウンロードしました。 少し整えて(具体的には、BIGLOBEはCGIとhtmlファイルの置き場所が違うので、パスを絶対パスにしたりと、あと基本的な変更です。)FFFTPにてBIGLOBEサーバーにアスキーモードでアップロードしました。 属性はhtmlとimgファイルの他はすべて755に変更しました。 しかし、CGIが見れません。 「...datがオープンできません」となってしまいます。 2年ほど前に同じことをやって普通に機能したことがあるのですが、昔のことなのでどうして前は見れて今は見れないのかわかりません。 つたない文章で申し訳ありませんが、どなたか教えてくださる方がいらっしゃっいましたらどうかお願いします。 未熟な質問で申し訳ありません。

    • 締切済み
    • CGI
  • InfoseekでCGI+Flashができない。

    cgiとfalshのactionscriptを組み合わせてカウンターを作成し、会社内のLANで動かしてみると問題なく動いてくれるのですがinfoseekにアップロードすると表示されません。 属性変更もしましたしcgi-binのディレクトリも作りその中にcgiを入れました。 infoseekではcgiとflashを混合して動かそうとすると駄目なのでしょうか? 考えられる原因はなんでしょうか?教えてください。

  • cgiの500エラー

    OSXを使っている者です miで文字コードEUC 改行コードLFです #!/usr/bin/perl print "hello"; と書いてtest.plで保存して パーミッションをchmodのコマンドで755 にして共有を可能にしてローカルで試したんですが ソースが表示されて全然有効になってないみたいです PHPもそうでした .phpで書いてhtmlの中に埋め込んで パーミッションも755にしてもソースが全部表示されて動かなかったです 拡張子は.plではなくてcgiなのか気になります ソースも違ってたら教えて下さい ちなみにwebサーバーで試したら Internal Server Error 500でしたftpでchmodで755にしたんですが もしかしてソースミスでしょうか? CGIのソースなどやり方の一覧を詳しく簡潔に教えて下さい御願いします

    • ベストアンサー
    • Perl