アクセスカウンターのカウントが上がらない!初心者です。

このQ&Aのポイント
  • アクセスカウンターを作成していますが、カウントが上がりません。
  • カウンターの数値は1と表示されていますが、増えません。
  • count.txtを確認しても、0となっており、書き込まれていないようです。
回答を見る
  • ベストアンサー

カウンターの数値が上がらないです・・・

初歩的な質問ですみません。アクセスカウンターを作っているのですが、カウントがあがりません。一応1と表示されるのですが増えませんし、count.txtみても0となっていて書き込まれてもいないようです。属性は666にしてあります。サイトは・・・ http://s1.muryo-de.etowns.net/~yuki/ です。 <?php $fp = fopen("count.txt", "r+"); $count = fgets($fp, 10); $count = $count + 1; fseek($fp, 0); fputs($fp, $count); fclose($fp); ?> <div align="center"><p>あなたは <?php echo $count; ?> 人目のお客様です。</p></div> お願いします。m(__)m

  • PHP
  • 回答数2
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.2

カウント部分ではなく表示部分の問題なのかな? 申し訳ないのですが、あまり考える気力がありま せん。暑さの所為? 私は数字の画像を表示しているので、あまり格好 いいとは・・・要するに格好悪いコードですがアップ します。前もって数字画像を用意する必要があります。 関わっておいて申し訳ありませんが、これでお願い致 します。 $num = array(); $i = 0; while($dt>0){ $num[$i] = $dt % 10; $dt = $dt / 10; $dt = (int)$dt; $i++; } for($j=$i-1; $j>=0; $j--){ switch($num[$j]){ case 0: echo("<IMG src=\"images/n0.gif\" width=\"18\" height=\"18\" border=\"0\">"); break; case 1: echo("<IMG src=\"images/n1.gif\" width=\"18\" height=\"18\" border=\"0\">"); break; case 2: echo("<IMG src=\"images/n2.gif\" width=\"18\" height=\"18\" border=\"0\">"); break; case 3: echo("<IMG src=\"images/n3.gif\" width=\"18\" height=\"18\" border=\"0\">"); break; case 4: echo("<IMG src=\"images/n4.gif\" width=\"18\" height=\"18\" border=\"0\">"); break; case 5: echo("<IMG src=\"images/n5.gif\" width=\"18\" height=\"18\" border=\"0\">"); break; case 6: echo("<IMG src=\"images/n6.gif\" width=\"18\" height=\"18\" border=\"0\">"); break; case 7: echo("<IMG src=\"images/n7.gif\" width=\"18\" height=\"18\" border=\"0\">"); break; case 8: echo("<IMG src=\"images/n8.gif\" width=\"18\" height=\"18\" border=\"0\">"); break; case 9: echo("<IMG src=\"images/n9.gif\" width=\"18\" height=\"18\" border=\"0\">"); break; } }

chopinthe3
質問者

お礼

再度の回答ありがとうございます! やってみたのですが・・・どうやらサーバー側でPHPのコマンドが拒否されているようです。 ほかのサーバーでやってみても同じでした。 やはり有料サービスのところじゃないとだめなんでしょうかね。 今回はご協力どうもありがとうございました!

その他の回答 (1)

  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.1

ヘンですね。直ぐには分かりません。少しやりかたが 違う私のをアップしましょう。 細かくとも、ロックは必要と思います。 $fn = "counter.dat"; $fp = fopen($fn, "r+b"); flock($fp, LOCK_EX); $dt = fread($fp, 10); $dt++; fseek($fp, 0); fwrite($fp, $dt); flock($fp, LOCK_UN); fclose($fp);

chopinthe3
質問者

お礼

ご親切にどうもありがとうございます。m(__)m やってみたのですが、こんどは、何も表示されないのです。 <div align="center"><p>あなたは <?php echo $dt; ?> 人目のお客様です!</p></div> 表示部分はこうやってみたのですが・・・。”あなたは人目のお客様です!”と表示されてしまいます。ブラウザが悪いのでしょうか?IEですけれど・・・。PHPファイルは、index.html別のフォルダに入れてあり、datファイルもPHPファイルと同じフォルダに入れています。 もしよろしければまた教えてください。 http://s1.muryo-de.etowns.net/~yuki/ 一応PHPファイルの全容も入れます。よろしかったら見てください。(初心者なので間違いだらけかも知れません・・・) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"> <html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_Jis"> <title>PHP入門</title> </head> <body> <div align="center"><font size="4">光明の練習ページへようこそ!</font></div> <br> <div align="center">今日は、<?php echo date("Y/m/d"); ?> です☆ </div> <?php $fp = fopen("count.txt", "r+"); $count = fgets($fp, 10); $count = $count + 1; fseek($fp, 0); fputs($fp, $count); fclose($fp); ?> <div align="center"><p>あなたは <?php echo $count; ?> 人目のお客様です。</p></div> <? $fn = "counter.dat"; $fp = fopen($fn, "r+b"); flock($fp, LOCK_EX); $dt = fread($fp, 10); $dt++; fseek($fp, 0); fwrite($fp, $dt); flock($fp, LOCK_UN); fclose($fp); ?> <div align="center"><p>あなたは <?php echo $dt; ?> 人目のお客様です!</p></div> <a href="../index.html">TOPへ戻る</a></body> </html> 上の”お客様です”が以前の方で、下の方が今回教えていただいたものです。 よろしくお願いします。m(__)m

関連するQ&A

  • PHPアクセスカウンター

    <?php $filename = 'count.dat'; $fp = fopen($filename, "r+"); $count = fgets($fp,32); $count++; fseek($fp, 0); fputs($fp, $count); fclose($fp); echo ($count); ?> これを日付が変わったら0にリセットしてくれるシステムにしたいんですが、どうしたらいいですか??

    • ベストアンサー
    • PHP
  • 何がおかしいのでしょうか?

    $filename1 = 'ymd.dat'; $fp1 = fopen($filename1, "r+"); $day2 = fgets($fp1,9); $day = date('Ymd'); //今日のアクセス数カウント。日付が変われば0になる。 $filename2 = 'ymd2.dat'; $fp2 = fopen($filename2, "r+"); $count2 = fgets($fp2,32); if($day==$day2){ $count2++; fseek($fp1, 0); fputs($fp1, $day); fclose($fp1); }else{ $count2 = 0; fseek($fp1, 0); fputs($fp1, $day); fclose($fp1); } fseek($fp2, 0); fputs($fp2, $count2); fclose($fp2);

    • 締切済み
    • PHP
  • 訪問回数が素数の場合、違うメッセージがでる訪問カウンター

    質問お願いします。 訪問回数が素数の場合、違うメッセージが出る訪問カウンター を作成しています。 まず、訪問回数が出るカウンターはできました(2) 素数の場合がよくわからないので、とにかく"奇数"で 違うメッセージがでるようにしました(1)が、 まず(1)と(2)をうまく組み合わせられませんでした。 そして、素数かどうかを割り出す方法は調べてわかったのですが、 素数の場合・・・となるとわからなくて。 (考え途中のため、以下のソースは完成してないところ有りです。 中途半端ででみませんです。。) <?php //(1) if(($yes= % 2)== 0){ print("奇数ではないです。"); }else{ print("奇数です。"); }  //(2)アクセスカウンター  $file = touch("sample.txt"); $fp = fopen("sample.txt","r+"); $count = fgets($fp, 10); $count = $count + 1; fseek($fp,0); fputs($fp, $count); fclose($fp); ?> <p> あなたは <?php echo $count; ?> 人目のお客様です。

    • ベストアンサー
    • PHP
  • ファイルについて・・・。

    お願いいたします。 以下のソースは"samplefile.txt" が前提としてあることになって いますが、もしなかった場合このテキストファイルを作り出す仕組みをソースに加えたいんですが・・・。 2,3行目の間に「もしファイルがみあたらない時は・・」みたいな条件をつける??くらいしか自分の頭では思い浮かばず・・・ 何かアドバイスいただけないでしょうか??お願いいたします。 1 <?php 2 $fp = fopen("samplefile.txt", "a+"); 3 $count = fgets($fp, 15); 4 $count = $count++; 5 rewind($fp); 6 fputs($fp, $count); 7 fclose($fp); 8?> 9<p>あなたは <?php echo $count; ?> 人目のお客様です。

    • ベストアンサー
    • PHP
  • PHPカウンタのデータファイルのパスについて

    PHPカウンタのデータファイルをひとつ上の階層に置いて3つのページで共有したいのですが、 $fp="fopen("counter.dat"," "r+"); 上記パスを $fp="fopen("../counter.dat"," "r+"); このように記述するとエラーになってしまいます。 やり方が間違ってますでしょうか? 以下ソースです。 <?php $fp="fopen("counter.dat"," "r+"); $count=fgets($fp, 6); $count++; fseek($fp, 0); fputs($fp, $count); fclose($fp); ?><BR> <?php echo sprintf('%05d',$count); ?> 初心者の質問で申し訳ありませんが、 ご回答のほどよろしくお願い致します。

    • ベストアンサー
    • PHP
  • カウンターを一定数でリセットしたい

    はじめまして。 レッツPHPのカウンタを使っています。 <?php $fp = fopen("count.txt","r+") or die("Error!"); $count = fgets($fp, 64); $count++; rewind($fp); //set_file_buffer($fp, 0); flock($fp, LOCK_EX); fputs($fp, $count); fclose($fp); echo $count; ?> count_file.txt にはA00と記入しているのでA99になったら次はB00~Z99までカウントされるのを、F99まできたらリセットしA00から始めたいのですが式が分りません。$count++;を書き換えればいいのだとは思いますが・・・ よろしくお願いいたします。 PHP4.3.3

    • ベストアンサー
    • PHP
  • phpである処理をすると数を1足して、ある処理をするとその数字から1引

    phpである処理をすると数を1足して、ある処理をするとその数字から1引くような事をしたいのですが、上手くいきません。(まれに数字にずれが生じてしまいます。) 1足していくもの $fp = fopen("./data/registry/buy.dat","r+"); $registry_count = fgets($fp,1024); if($registry_count == ""){ $registry_count = 0; } $registry_count++; flock($fp,LOCK_EX); fseek($fp,0); fputs($fp,$registry_count); flock($fp,LOCK_UN); fclose($fp); 1引いていくもの $fp = fopen("./data/registry/buy.dat","r+"); $registry_count = fgets($fp,1024); if($registry_count != "0"){ $registry_count--; } flock($fp,LOCK_EX); fseek($fp,0); ftruncate($fp,0); fputs($fp,$registry_count); flock($fp,LOCK_UN); fclose($fp); どなたかご教授ください。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • PHPでアクセスカウンタ

    表題どおりのシンプルな質問なんですけど、加算されません。 テキストにあるコードは: ### 011_counter.php ### <?php $fp=fopen("012_count.txt","r+");// 読み書きモードでオープン $n=fgets($fp); // 文字列の読み取り $n++; // カウントアップ echo $n,"人目"; // 表示 rewind($fp); // 読み書き位置を先頭に戻す fputs($fp,$n); // 書き込み fclose($fp); // ファイルを閉じる ?> ### 012_count.txt ### 0 ※このファイルは0のみで、この0の後には改行コードはありません これでhttp://localhost/php/011_counter.phpにアクセスすると 0 人目 が表示されます。 ただ、F5を押しても、他のサイトを見てまたアクセスしても変わりません。 012_count.txtの内容を3にすると、3 人目になりますが加算はされません。 テキストには「0の後に改行を入れると加算されない」とあるので、特に注意して改行を入れないようにしています。 OSはLinux Knoppix/Math2010です (Windows VistaにVMWare Playerを載せて、その上で走らせています)。 PCはTOSHIBAのSatelliteでメモリ4GB、ハードディスク250GBです。 PHP 5.2.11-1 with Suhosin-Patch 0.9.7 (cli)です。 ブラウザはIceweasel3.5.5です。 最初に書き換えの権限でエラーが出たので chmod -R 777 php chmod 777 012_count.txt も確実に行っています。 正しく加算されるようにするにはどうしたらよいのですか?

    • ベストアンサー
    • PHP
  • PHPのアクセスカウンターのバグについてです!

    PHPを勉強しているものですが アクセスカウンターをネットで調べ自分なりに書いたのですが 日にちが変わるとトータル、今日、昨日が全く動かなくなります。 どこをどうすればいいのか教えていただけないでしょうか? お願いします。 $txt='counter.txt'; $fp=fopen($txt,'r+'); if($fp!==false){ if(flock($fp,LOCK_EX)){ $counter=fgets($fp);//トータル 今日 昨日 日付 $count=explode(' ',$counter); if(date('j') != $count[3]){ $count[3]=date('j'); $count[2]=$count[1]; $count[1]=0; } $count[0]++; $count[1]++; $counter=implode(' ',$count); rewind($fp); fputs($fp,$counter); flock($fp,LOCK_UN);} } fclose($fp); ちなみにバグはトータル→今日→昨日→日付の順です。 500 1 1 262625 のようになっていました。 よろしくです。

    • ベストアンサー
    • PHP
  • ページ表示ごとにカウントダウンをさせたい。

    こんばんわ。 こんなスクリプトを組んでみました。 phpは勉強を始めたばかりです。 <? echo "Hello world!!";?> <br> あなたのIPは <? echo $_SERVER["REMOTE_ADDR"]?> ですね? <br> ただいま<? print (date ("Y年m月d日(D) H時i分s秒"));?>です <br><br> <?php $fp = fopen ("count.txt","r+"); $count = fgets ($fp, 32); $count--; fseek($fp, 0); fputs($fp, $count); flock($fp,2); $count = sprintf("%05d", $count); fclose($fp); echo $count ?> ログファイルは初期値として、10としました。 が9までは正常に減っていくのですが、次に8にならずに 89になってしまいます。 よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう