• 締切済み

PHPにてアクセスカウンターを作成してるのですが

PHPを勉強しているのですが、以下のプログラムで画像アクセスカウンターを作成してるのですが、 <?php $date_now = date("Y/m/d"); $cookie = $date_now; setcookie("Cookie",$cookie); ?> <html><head></head><body> <?php $data_file = './access.dat'; $fp = fopen("$data_file", "r+"); $cnt_num = fgets($fp, 64); if($Cookie != $date_now){ $cnt_num++; fseek($fp, 0); flock($fp,2); fwrite($fp, $cnt_num); } fclose($fp); $f_pass = './a_gif'; for($i = 0; $i < strlen($cnt_num); $i++) $value[ ] = substr($cnt_num, $i , 1); for($j = 0; $j < count($value); $j++) echo "<img src=$f_pass/" . $value[$j] . ".gif>"; ?> </body> </html> うまく表示できません。 access.datに何か記述するのでしょうか? a_gifファイルに画像も入れてるのですがパーミッションなどを変更するのでしょうか? 作業環境はWindowsXPを使用してます。 サーバーはロリポップにて借りてます。 一応access.datのパーミッションは666に設定してます。

  • PHP
  • 回答数1
  • ありがとう数0

みんなの回答

  • fire--
  • ベストアンサー率49% (146/293)
回答No.1

うまく行かない時は、途中がどうなっているのかチェックし、 どの段階でおかしいのかを明らかにしていきましょう。 access.datを読んだところで、すぐに中身をechoしてみる等など。

関連するQ&A

  • PHPで作ったカウンタを任意の位置における

    ようにしたいのですができません counter.php: <?php $data_file = './access.dat'; //データファイル $fp = fopen("$data_file", "r+"); $cnt_num=(string)(fgets($fp, 64)+1); fseek($fp,0); flock($fp,2); fwrite($fp,$cnt_num); fclose($fp); $cnt_num=sprintf("%06d",$cnt_num); $f_pass = './a_gif'; for($i=0;$i<strlen($cnt_num);$i++)$value[]=substr($cnt_num,$i,1); for($j=0;$j<count($value);$j++)echo "<img src=$f_pass/".$value[$j].".gif>"; ?> としてHTMLの任意位置で <img src="./counter.php"/> をおいたのですが×マークが出るだけでカウンタ値が表示されません どうしたらいいでしょうか

    • ベストアンサー
    • CGI
  • PHP データの削除と個々の時間を書きだす

    PHPでプログラムを作成したいのですが、ninusyo.phpというphpプログラムからrireki.dataデータファイルを読み込みます。 //問題はここから。 ログインした個々の時間を書きだして、ログアウトボタンを押すとメールアドレスや名前などが消える。というプログラムが出来ません。 ヒントでも構いませんから、教えて頂けると嬉しいです。 以下、ソースです。なお、DBではありません。 <?php //受け渡しデータ //ml:メールアドレスのkey,メールアドレスは半角英数字24桁 //name:名前のkey,名前は半角英数字9桁 //pass(メールアドレスと同じ):パスワードのkey,半角英数字24桁 //mode:書き込みのkey, $modeとして使用。 // パラメータの取得 $ml=trim($_REQUEST['ml']); $name=trim($_REQUEST['name']); $pass=trim($_REQUEST['pass']); $mode=trim($_REQUEST['mode']); // データの入力 print '<form action="ninsyo.php" method="post">'; print ' 名    前 :<input type="text" size="10" name="name" value=" "><br>'; print '  パスワード :<input type="text" size="25" name="pass" value=" "><br>'; print 'メールアドレス:<input type="text" size="25" name="ml" value=" "><br>'; print'         <input type="submit" value="ログイン"><br>'; print'<input type="hidden" name="mode" value="write">'; print'</form>'; //終了 データの入力 //ファイルの追加 if($ml != null){ $fp=fopen("./rireki.data","at"); //$today = date("Y/m/d H:i:s"); fputs($fp,"\n".$ml.",".$name.",".$pass.",".$today); fclose($fp); } //終了 ファイルの追加 } //終了 エラー表示 // 削除データの入力 print '<form action="ninsyo.php" method="post">'; print '          <input type="text" size="10" name="sakujo">'; print '<input type="submit" value="名前deログアウト">'; print '<input type="hidden" name="mode" value="write">'; print '</form>'; // 終了 削除データの入力 // ファイルの読み込み $fp=fopen("./rireki.data","r"); while(!feof($fp)){ $tmp_a[]=mb_ereg_replace("\n","",fgets($fp)); }fclose($fp); $num_data=count($tmp_a); for($i=0;$i<$num_data;$i++){ $mail_a= explode(",", $tmp_a[$i]); for($j=0;$j<4;$j++){ $namae_a[$i][$j]=$mail_a[$j]; } } // 終了 ファイルの読み込み // データのソート select_sort // 削除データの削除 if($sakujo!=null){ for($i=0; $i<$num_data; $i++){ if($namae_a[$i][0]==$sakujo){ $namae_a[$i][0]=$namae_a[$num_data-1][0]; $namae_a[$i][1]=$namae_a[$num_data-1][1]; $namae_a[$i][2]=$namae_a[$num_data-1][2]; $namae_a[$num_data-1][0]=""; $namae_a[$num_data-1][1]=""; $namae_a[$num_data-1][2]=""; break; } } } // 終了 削除データの削除 宜しくお願いします。

    • ベストアンサー
    • PHP
  • C言語のビット演算をPHPでやりたいです。

    下記のようなC言語でのビット演算をPHPに 置き換えたいのですが、どうしてもうまくいきません。 どなたか教えていただけませんでしょうか? よろしくお願いいたします。 bitを左シフトしている箇所と - 0x30の箇所をPHPで どのように書いたら良いのかが困っています。 ★下記コードです。 Value[i]の中には適当な0から9までの整数が1桁ずつ配列で24個入っています。 例えばこんな感じです。 Array ( [0] => 1 [1] => 0 [2] => 1 [3] => 1 [4] => 2 [5] => 0 [6] => 0 [7] => 2 [8] => 1 [9] => 8 [10] => 2 [11] => 0 [12] => 0 [13] => 9 [14] => 1 [15] => 2 [16] => 1 [17] => 1 [18] => 4 [19] => 0 [20] => 1 [21] => 3 [22] => 1 [23] => 0 [24] => 4 ) for(i=0; i<=24; i++) { for(j=0,bit=1; j<8; j++,bit<<=1) { if(Value[i] & bit) { if((j%2)==1) { Cnt1 ++; } } } Cnt2 += (Value[i] - 0x30); } Ans = Cnt1 + Cnt2;

    • ベストアンサー
    • 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カレンダーについて

    今カレンダーを作成している段階です。 http://w1.nirai.ne.jp/freeze/main/file11.html ↑このサイトのプログラムを参考にしているんですが、 <html> <head> <title>カレンダー</title> </head> <body> <form action="<?php echo $_SERVER["PHP_SELF"]?>" method="POST"> <select name="year"> <?php $cnt = 1970; while($cnt<2038){   if($cnt==date(Y)){   echo "<option value='$cnt' selected>$cnt</option>";   } else {  echo "<option value='$cnt'>$cnt</option>";  } $cnt++; } ?> </select> <select name="month"> <?php $cnt=1; while($cnt<13){   if($cnt == date(n)){   echo "<option value='$cnt' selected>$cnt</option>";   } else {   echo "<option value='$cnt'>$cnt</option>";   } $cnt++; } ?> </select> <input type="submit" value="作成!"> </form> </body> </html> このPHPプログラムを実行してもエラーが消えません。 どこが間違っているのかどなたか教えてください。

    • 締切済み
    • PHP
  • HTMLからPHPを呼び出すには

    PHP4で動いていたカウンターを、訳あってPHP3に移植することになりました。 HTMLには<img src="hoge.php" width="1" height="1">を埋め込み、hoge.phpファイルのほうには <?php $fp = fopen( "/home/sites/home/access/logs/now", "w" ); fwrite( $fp, date("Y年m月d日 A h時i分s秒") ); fclose($fp); ?> としていましたが、PHP4では問題なく動作していたものが、PHP3ではうまく保存してくれませんでした。 そこで <script language="JavaScript" src="hoge3.php"> </script> としてみたら無事保存できるようになったのですが、今度は、JavaScriptの構文エラーが出るようになってしまいました。 他に良い呼び出し方法はないでしょうか? よろしくお願いします。

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

    PHPで各ファイルへのアクセス数等を1つのファイルに行単位で記録するように作っております。 (1)各ファイルへのアクセス数をcount.datファイルに書き込む  ※書き込み内容:(ファイル名,日付,合計,今日,昨日,リモートアドレス) (2)該当ファイルのデータがない時は新規に追加。ある時はデータ更新 (3)新規に追加された場合はファイル名部分で行単位でソートする。 【ファイルの内容例】 abc.php,08/12/13,10,6,4,ocn.ne.jp def.php,08/12/13,10,6,4,ocn.ne.jp ghi.php,08/12/13,10,6,4,ocn.ne.jp 【現象】 (1)については元々ファイル単位で個別ファイルに記録させていた処理をもってきたものなので特に問題ないですが、(2)のところで躓いてます。 最初は該当ファイル名が無いので新規追加するだけなので問題ありません。2回目以降は該当ファイルがあるのでそのデータの更新ですが、最終行とその1つ前の行の間にスペース行が出来、その後はアクセスの度にその間のスペース行が増えていきます。 【ソース例】 //$countFile:書き込みファイル $lines = file($countFile); $dataLine = count($lines); for($i=0; $i<$dataLine; $i++) { //該当ファイル名データがある場合は以下の処理を行う(省略) $lines[$i] = trim($lines[$i]); $today++; $count++; $lines[$i]= "$fileId,$date,$count,$today,$yesterday,$host"; $fp = fopen($countFile,"w"); flock($fp, LOCK_EX); rewind($fp); fwrite($fp, rtrim(implode("\n", $lines),"\n")); flock($fp, LOCK_UN); fclose($fp);   break; } 色々試行錯誤しながらやってますが解決できません。どの部分が悪いのかご教授お願いします。またソートの部分も教えていただけると助かります。

    • ベストアンサー
    • PHP
  • 新規ファイルを作成する

    にはどうしたらいいのでしょうか? <?php $file='gomi.dat'; $in=isset($_POST['in'])?$_POST['in']:'bad'; if(file_exists("$file")) { $a=file("$file"); foreach($a as $value) { echo "$value<br/>"; } } $fp=fopen("$file","w"); // <-------------- fwrite($fp,"$in\n"); fclose($fp); ?> <form method="post" action="<?= $_SERVER['PHP_SELF'] ?>"> <input type="text" name="in"/> <input type="submit" value="send"/> </form> は動きませんが $fp=fopen("$file","w"); // <-------------- を $fp=fopen("$file","r+"); // <-------------- としてあらかじめ空の gomi.dat (モード777)を作っていれば動きます どうしたら $fp=fopen("$file","w"); // <-------------- にしても動くようになるでしょうか?

    • ベストアンサー
    • PHP
  • phpのユーザーエージェント取得方法

    プログラマーに作ってもらったphp(プログラマーに連絡取れず)なんですが、新しく借りたサーバーのphpのバージョンが一つだか新しいらしくユーザーエージェント取得方法が違うらしく動作しません。。。 どなたか教えてください・・・・ if (!isset($_SESSION[user])){ global $HTTP_USER_AGENT; $ua=$HTTP_USER_AGENT; $lines2=@file("./rendou/rendou.dat"); $date_file2="./rendou/rendou.dat"; $fp2=@fopen($date_file2, "w") or die("File open error."); stream_set_write_buffer($fp2, 0); flock($fp2, LOCK_EX); for($i=1; $i<=count($lines2); $i++){ list($tmp_ua[$i-1], $tmp_time[$i-1])=explode(':',$lines2[$i-1]); if($tmp_ua[$i-1]==$ua){ $_SESSION[user]=$ua; }else{ fwrite($fp2, $lines2[$i-1]); } } flock($fp2, LOCK_UN); fclose($fp2); } if(!$click_flag){ }elseif($click_flag){ if(!isset($_SESSION[user])){ 参考にしろ言われたURLです。 http://oku.edu.mie-u.ac.jp/~okumura/php/registerglobals.html

    • 締切済み
    • PHP
  • クッキー認証>クッキー削除ができない!!

    今回は、クッキー認証画面を作成している際、 エラーが出てしまって先に進めず投稿しました。 下記にプログラム記載 ----H_01.html---------------------------------- <html> <head> <title>クッキー認証</title> </head> <body> <center> <form method="POST" action="H_02.php"> 名前<input type="text" name="name"> パスワード<input type="Password" name="pass"> cookieを記録する<input type="checkbox" name="chk"> <input type="submit" value="送信"> <input type="reset" value="リセット"> </form> </center> </body> </html> ------------------------------------------------ -----H_02.php---------------------------------- <?php $name = $_COOKIE['name']; $pass = $_COOKIE['pass']; $cnt = $_COOKIE['chk']; if ($cnt == True) { $lim = time()+7*24*60*60; //有効期限1週間 setcookie('name',$name,$lim); setcookie('pass',$pass,$lim); } else { setcookie('name'); setcookie('pass'); } ?> ------------------------------------------------ else文内の、setcookie二行にエラーが出ます。 htmlでチェックボックスにチェックが施されていない場合、クッキーを削除。 調べてみたのですが、どうしたらよいのかわからず 投稿しました。よろしくお願いします。

    • ベストアンサー
    • PHP

専門家に質問してみよう