• 締切済み

何がおかしいのでしょうか?

$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
  • ありがとう数0

みんなの回答

  • hymat
  • ベストアンサー率58% (95/162)
回答No.2

質問の意味不明なんですけど、 fclose($fp2); の直前に ftruncate($fp2,strlen($count2)); を入れれば良いんじゃないですか?

  • asuncion
  • ベストアンサー率33% (2126/6288)
回答No.1

コードだけを見せられましても、質問者さんが 「○○となることが正しいと思っているのに、実際には××となってしまう。だから、どこかがおかしいと思っている」 ということを示してくださらないと、どういう回答をすればいいかがよくわからないのです。 質問の方法を、少しだけ工夫される方がよいと思います。

wevenus
質問者

補足

日付が変わると0にしたいのです。例えば前日125だとして日付が変わると、0が入り025になります。 しかし、これだと次にアクセスしたら26になります。しかし、これではアクセスカウンターの意味が無く本来は1をださなければならない、という質問です。

関連する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
  • 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カウンタのデータファイルのパスについて

    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で引き算が上手くいかない

    データの引き算で書き出す際に予期しない数字になってしまって 困っております。 data.datに10となっていた際に、下記のコードを実行すると90になってします。本当は9にしたいのですが、どこに原因があるのかわからずにおります。 どなたかご教授ください。 宜しくお願いいたします。 $fp = fopen("data.dat","r+"); $registry_count = fgets($fp,1024); if($registry_count != "0"){ $registry_count--; } flock($fp,LOCK_EX); fseek($fp,0); fputs($fp,$registry_count); flock($fp,LOCK_UN); fclose($fp);

    • ベストアンサー
    • PHP
  • カウンターの数値が上がらないです・・・

    初歩的な質問ですみません。アクセスカウンターを作っているのですが、カウントがあがりません。一応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
  • カウンターを一定数でリセットしたい

    はじめまして。 レッツ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
  • 訪問回数が素数の場合、違うメッセージがでる訪問カウンター

    質問お願いします。 訪問回数が素数の場合、違うメッセージが出る訪問カウンター を作成しています。 まず、訪問回数が出るカウンターはできました(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
  • サーバー内のファイルは、public_html配下でないとだめ?

    サーバー内にファイルを保存するテストプログラムを 作成しています。 C:┬public_html ←公開用 │ └Temp     ←非公開 公開したディレクトリ配下にファイルを保存する事は できるのですが、非公開のディレクトリに保存すると アクセスできないとエラーが出力されます。 テキストファイル等スクリプト中で作成されるファイ ルは、公開されているディレクトリ配下でないといけ ないのでしょうか? もし公開されいているディレクトリ配下の場合、皆さ んはどのようにアクセスされないように対策している のでしょうか? -----テストプログラムです。----- <?php // OK // $filename = "moji.dat"; // NG // $filename = "C:\Temp\moji.dat"; $str = "文字列"; $fp = fopen($filename,"w"); fputs($fp, $str); fclose($fp); $fp = fopen($filename,"r"); $str = fgets($fp, 512); fclose($fp); print("$str"); ?> -----テストプログラムです。-----

    • ベストアンサー
    • 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
  • ファイルの内容の削除【ファイルシステム関数】

    以下のユーザー定義関数で、POSTで受け取った数値の増減をあるファイルに書き換える作業をおこないたいのですが、1桁の数値であれば問題ないのですが、2桁の数値にし、マイナスの数値で減らすと値が「00」となってしまいます。文字列として認識してしまっているためかとは存じますが、良い解決方法が思い浮かびません。以下ソースです。 <? function cnt($str){ if(isset($_POST[$str])){ $fp = fopen( $str.".txt", "r+" ); flock($fp,2); $count = fgets( $fp, 5 ); $strstr = $_POST["$str"]; $count+= $strstr; rewind( $fp ); fputs( $fp, $count ); flock($fp,3); fclose( $fp ); print($count); }else{ $fp = fopen( $str.".txt", "r" ); $count = fgets( $fp, 5 ); print($count); };} ?> ファイルシステム関数については苦手で、うまく理解しきれていません。 アイデア・解決法をご存知の方がいらっしゃいましたら、ご回答いただければうれしいです。よろしくお願いいたします。

    • ベストアンサー
    • PHP

専門家に質問してみよう