
ネットにあった、ハイスコアランキングのサンプルをダウンロードして、サーバーにアップロードしてみたのですが、おもうように表示されません。
CGIは機能しているようなのですが、ランキング一位の人のスコアだけが表示されないのです.
一位の人が二位になると、二位のスコアは表示されるようになるのですが、あらたに一位の人のスコアが表示されなくなります。
バーミッションはcgi755、dat666にしてありますし、アスキー転送で改行はLFにしてあります。一位のスコアの表示以外の点では正常に作動してるので、どこがおかしいかわからないのです。
ダウンロードしたものを手を加えずにそのままアップロードしましたので、CGIの文法やフラッシュのスクリプトが間違っているということはないと思います。(他の人は同じサンプルファイルでうまく表示されてるようなので)
cgi設置も初めてなので、何か見逃しているのかもしれません。
原因かわからなくなってしまいました。誰か助けてください。
サーバーにアップロードしたページです↓
http://mokat.hp.infoseek.co.jp/cgi-bin/hiscsampl …
No.3ベストアンサー
- 回答日時:
CGIに直接アクセスしてみました。
http://mokat.hp.infoseek.co.jp/cgi-bin/hisc.cgi
自動挿入の広告タグがじゃまをしているようです。
CGIのスクリプトを
#----- データをFlashへ送る
print "Content-type: text/plain\n\n";
print "dummy=dummy&";
for ($i = 0; $i < 10; $i++) {
($sc, $pname) = split(/,/,$sortdata[$i]);
print("score$i=$sc&name$i=$pname&");
}
というふうにダミーのデータを入れたらどうでしょう。
すごい!!!
でました。ダミーのデータを入れたらちゃんと動いてます!!
感動です!
意味はわかってないのですが、なぜこの文字を入れるだけで動くようになるのでしょう・・
ありがとうございました!
ずっとできなかったので嬉しくてたまりません・・
本当にありがとうございます!

No.2
- 回答日時:
ちょっと今は寝る前なので詳しくは検証できませんが、
chop(@sortdata);
この箇所が気になりますね。
これは
chomp(@sortdata);
で良いと思います。
ただこの箇所が原因がどうかはわかりませんが。
明日検証してみます。

No.1
- 回答日時:
そのデータの中にはちゃんと一位の人のスコアが書かれていますか?
書かれていればCGIの問題の可能性があります。
書かれていなければFLASHのスクリプトの問題の可能性があります。
いずれにせよファイルに正常にデータが書かれているか確認してみて下さい。
この回答への補足
今、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が見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで集計したい。
-
ChatGPTの性能は昔に比べて上が...
-
ChatGPT
-
chatGPTみたいに画像生成出来る...
-
フォームを再送信しますか?
-
.htaccessでサーバエラー
-
フォームメールを受信すると文...
-
iDeCo
-
皆さんはGUCCIはハイブランドだ...
-
cgi-binのエラー?
-
Trees掲示板CGI(CGI-Resque氏...
-
めちゃきれい
-
number 改行が追加できない
-
生成AI画像について
-
3DCG
-
ホームページにメールフォーム...
-
cgi アクセス制限 エラー
-
CGIの記述について教えてくださ...
-
CGIの設置が分かりません・・・
-
ホームページにCGIを設置したの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで集計したい。
-
ChatGPT
-
ChatGPTの性能は昔に比べて上が...
-
フォームを再送信しますか?
-
chatGPTみたいに画像生成出来る...
-
apacheでPerl CGIが作動せず、5...
-
入力フォーム(電話番号)
-
ホームページでCGIのフォームを...
-
VBAで条件から範囲を指定して色...
-
(フリーの)ツリー掲示版CGI、...
-
/bin/awk '{print $5}'ってどう...
-
CGIが読み書きするデータファイ...
-
perlで書いたcgiでsqliteの使い...
-
生成AI画像について
-
CGI.pmはもう古い!?
-
cgi-binのエラー?
-
古ーくからフリーのtree.cgi掲...
-
皆さんはGUCCIはハイブランドだ...
-
htmlからパラメータで、cgiに渡...
-
CGIの記述について教えてくださ...
おすすめ情報