PHPで外部ファイルを読み込む方法とアクセスログの表示

このQ&Aのポイント
  • PHPで外部ファイルを読み込む方法と、アクセスログの表示について教えてください。
  • log.phpにて、20110210.logの中身を表示させたいと思っています。毎日logファイルが作成され、日付.logという形式で保存されます。log.phpで選択した日付のアクセスログを表示する方法を教えてください。
  • また、logファイルが増えすぎる場合は、月ごとの表示にすることは可能でしょうか?
回答を見る
  • ベストアンサー

php select 外部ファイル読み込み

log.phpにて20110210.logの中身を表示させたいと思っています。 仕様としてはアクセスログになるのですが、毎日のようにlogファイルが作成され、ファイル名は上記の用に日付.logにしています。 log.phpでformのselectにて保存されているアクセスログファイルの一覧が表示され、submitをクリックすると選らんだ日付のアクセスログが同ファイルに表示されるようにしたいのですが・・・ 例 log.php <select> <option value="/log/20110207.log">20110207</option> <option value="/log/20110208.log">20110208</option> <option value="/log/20110209.log">20110209</option> <option value="/log/20110210.log">20110210</option> </select> <input type="submit" name="log" value="表示"> 20110207を選んだら、20110207のlogファイルが表示される。 20110208を選んだら、20110208のlogファイルが表示される。 日が変わりファイルが作成されたらselectにも日付が追加されている。 また、月日が経つとlogファイルがとてつもない数になるので、月が変わったら月ごとの表示にしたいのですが、こちらは可能なのでしょうか? 以上のことなのですが、お分かりの方がいらっしゃいましたらご教示お願いします。 ご面倒でなければソースも教えていただけると助かります。

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

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

  • ベストアンサー
  • duron
  • ベストアンサー率77% (73/94)
回答No.2

以下の内容に変更してみてください。 <!-- logファイル表示部 ---> <?php // ログ表示モード時のみ処理を行う if($mode=="viewlog") { // ログファイルの存在チェック if (is_file($logdir."/".$logfile.".log")) { // ログファイルの読み取り $textarray=file($logdir."/".$logfile.".log"); // 最後の行番号の桁数を取得 $num = strlen((string)count($textarray)); // 行番号カウント初期化 $count=0; // 一行ずつ出力 foreach($textarray as $key => $text) { // 行番号カウントアップ $count++; // 出力する行番号を前0パディング $rownum = sprintf('%0'.$num.'d', $count); // <span>で囲んで出力 print("<span style=\"white-space:pre;\">".$rownum.": ".htmlspecialchars($text)."</span>\n<br>\n"); } } else { print("ログファイルが見つかりませんでした。"); } } ?> </body> </html>

h199613
質問者

お礼

度重なる質問に対し、ご回答有難う御座います。 できました。 全然検討違いでした。 本当に有難う御座います。

その他の回答 (1)

  • duron
  • ベストアンサー率77% (73/94)
回答No.1

ちょっと書いてみました。 多分要望に近いものができたのではないかと思います。 あまり検証してないので細かいところをちょこちょこ 修正する必要があるかもしれません。 ソース内にコメントをそれなりには入れておきました。 ソースは長くなったので参考URLから落としてください。

参考URL:
http://www.geocities.jp/duron_one/
h199613
質問者

お礼

お忙しい中、ご回答有難う御座います。 できました!! 本当に有難う御座います。 一つご質問がありまして、何度か修正しつつ試したのですが、なかなかできません・・・ 一番最後logファイルの中身を表示する print(htmlspecialchars($text)); ですが、現在ですと、preで囲っているため、リスト風に表示されていますが、こちらをdivでくくると一行表示になってしまいます。(当たり前なんですが・・・) これをdivで囲っても一行表示ではなくリスト風にして、なおかつ行の頭に番号をつけたいのです。 例 0 アクセスしました。 1 ログインしました。 2 ログアウトしました。 このような感じです。 下記を試してみたのですが、「アクセスしました。」とかのコメントがファイル名になってしまいます。 お分かりでしたらご教示いただけますでしょうか? foreach($filenamelist as $lognum => $text) { echo "<span>" . $lognum . "</span>\n"; echo "<span>" . htmlspecialchars($text) . "</span>\n"; } ご質問ばかりで申し訳御座いませんが、宜しくお願いいたします。

関連するQ&A

  • 複数のセレクトボックスを1つにまとめて受け渡すには

    現在"年"と"月"のセレクトボックスがあり下記のように受け渡されています <form action="./search.php" method="GET">  <select name="year">   <option value="2010">2010年</option>   <option value="2011">2011年</option>  </select>  <select name="month">   <option value="1">1月</option>   <option value="2">2月</option>   <option value="3">3月</option>      ・   <option value="12">12月</option>  </select>  <input type="submit" value="検索"> </form> 受け取り側 http://www.###.jp/search.php?year=2011&month=11 となっています。 これを dateに一まとめにして受け取りたいですが http://www.###.jp/search.php?date=201111(2011-11でも可) 選択するプログラム側の修正方法を教えて欲しいのですが。 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • ☆PHP <SELECT>タグについて

    セレクトタグのデフォルト値についてですが、一般の実装の仕方では、以下のようにするかと思いますが、 ・ソース例 -------------------------------------------- select.php -------------------------------------------- <!--同じページでのセッション間でのやりとり で、「送信」を押されると、POSTデータを自分に返し前操作情報をそのまま持続させる。簡単に言えば、ページが切り替わっても各nameプロパティの値を持続させたいのです。--> <html>d <head> </head> <?php session_start(); if(isset($count))$count =0;//カウンタが殻なら 0を代入 session_register("count","onamae");//セッション変数を登録 $count++;//アクセスカウンタ ?> <body> <form> <form method="POST" action="select.php" > <input type="text" name="namae" value="<?php echo $_POST['onama']; ?>"<!--問題なしです--> <select name="food" > <option value="れもん" selected>れもん</option><!-- 注目!! --> <option value="すいか">すいか</option> <option value="オレンジ">オレンジ</option> </select> <input type="submit" value="送信" > </form> </body> </html> -------------------------------------------------------------------------- こんな感じですが、<select>のデフォルト値をページが切り替わっても選択された値(ユーザ操作)が持続されません。 誰か親切な方早急にご教授くださいませ。

    • ベストアンサー
    • PHP
  • phpでのセレクトボックスからの受け渡しについて

    phpにおいての、セレクトボックスにより選択させたデータの受け渡しについて、どなかか教えてください。 授業評価アンケートのデータ収集システムを卒研で開発しています。 その中の一部で、 年度・学年・クラス を各々セレクトボックスにて選択させるページがあります。 仮にpage1.htmlとし、以下にその一部を示します。 <FORM method="post" action="page2.php" enctype="application/x-www-form-urlencoded"> <P> 年度: <SELECT name="nendo"> <OPTION value="1">2006</OPTION> <OPTION value="2">2007</OPTION> <OPTION value="3">2008</OPTION> <OPTION value="4">2009</OPTION> <OPTION value="5">2010</OPTION> <OPTION value="6" selected>2011</OPTION> <OPTION value="7">2012</OPTION> </SELECT> 学年: <SELECT name="gakunen"> <OPTION value="1">1年</OPTION> <OPTION value="2">2年</OPTION> <OPTION value="3">3年</OPTION> <OPTION value="4">4年</OPTION> </SELECT> クラス: <SELECT name="class"> <OPTION value="1">1組</OPTION> <OPTION value="2">2組</OPTION> <OPTION value="3">3組</OPTION> <OPTION value="4">4組</OPTION> <!-- --> </SELECT> </P> <P><INPUT type="submit" value="科目選択へ"> <INPUT type="reset" value="取り消す"></P> 次のページ(page2.php)では 科目・分類 を各々セレクトボックスにて選択させるページを用意します。 その際に、科目・分類の各々のセレクトボックスの上に、 前ページ(page1.php)にて選択された値(valueではなく文字列(2008,1年))を表示します。 年度:~~ 学年:~~ クラス:~~ これについては以下の方法で成功しました。 年度:<? echo $_POST["nendo"]+2005?> 年 学年:<? if ($_POST["gakunen"] == "1"){ echo "1年"; } else if ($_POST["gakunen"] == "2"){ echo "2年"; } else if ($_POST["gakunen"] == "3"){ echo "3年"; } else if ($_POST["gakunen"] == "4"){ echo "4年"; } ?> クラスについても同様の手法。 ここからが本題です。 page1.html→page2.php に受け渡した年度・学年・クラスのデータを page2.php→page3.php にも同じように、年度:~~・・・と表示させたいのですが、わかりません。 hiddenというのを使うのでしょうか。 調べても、このパターンのように1ページまたいでのデータの受け渡し方法がよくわかりません。 他の方法もあるのでしょうか。 どなたか具体的に教えてください!

    • 締切済み
    • PHP
  • php ハイパーリンクについて

    php ハイパーリンクについて質問ですが、 <form action="<?=$_SERVER["SCRIPT_NAME"] ?>" method="get"> </select> <input type="hidden" name="word" value="<?php print(htmlspecialchars($word, ENT_QUOTES)); ?>"> <input type="hidden" name="ger" value="<?php print(htmlspecialchars($ger, ENT_QUOTES)); ?>"> <select name="sort"> <option value="stand">新着</option> <option value="lowPrice">安い</option> <input type="submit" value="検索"> </select> </form> 上記のform actionと同じ機能をハイパーリンクで表示させるにはどのようにしたらよいのでしょうか?

    • ベストアンサー
    • 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
  • PHP

    PHPで質問があります。funに「無し」を選択すると結果が?になり文字化けします。なぜでしょうか? <select name="fun"> <option vaue="*">無し</option> <option value="1">01</option> <option value="2">02</option> <option value="3">03</option> <option value="4">04</option> <option value="5">05</option> <option value="0">00</option> </select> </p> <input type="submit" value="設定" /> </form> </body> </html> <?php echo $_POST['fun']; echo " "; echo $_POST['jikan']; echo " "; ?>

    • ベストアンサー
    • PHP
  • まったく同じ<select>フォームの値を連動させたい

    まったく同じ<select>フォームの値を連動させたい ptpで下記のようなコードがあり、まったく同じselectフォームの値を常に連動させるにはどうしたらよいでしょうか。 本当は、ひとつのform内に二つのSubmitボタンがあってはならないような話を聞いたことがありますが・・・ <html> <head> </head> <body> <?php $btn = "<select name='sorttype'>"; $btn .= "<option value='0'>氏名</option>"; $btn .= "<option value='1'>年齢</option>"; $btn .= "<option value='2'>電話番号</option>"; $btn .= "</select>"; $btn .= "<input type='submit' name='exec' value='保存'>"; ?> <form> <?= $btn ?> ああああ<br> いいいい<br> うううう<br> <?= $btn ?> </form> </body> </html>

  • プルダウンの値をphpファイルへ渡したい

    いつもお世話になっております。 現在、作成中のHPですが、データ取得をphpで行い表示をしています。 (1)a.phpでプルダウンのデータを取得し、b.phpで表示。 (2)b.phpでプルダウンを選択し、その値をtest.phpへ渡す。 (2)で、プルダウンの値を渡す処理がどうしてもうまくできず、 とても困っています。 どこを修正すればよいのかご教授願いたいのですが・・・。 スクリプトは下記の通りです。 ------------------------------------------------------- 【b.php】 <html> <head> <title>テスト</title> </head> <body> <SCRIPT language="JavaScript"> function testphp(){ try{ with(document.testform){ action="http://test/test.php"; test.value = testform.testselect[testform.testselect.selectedindex].value; method="POST"; submit(); } } catch(e) { alert("エラーは " + e.description + " です。"); } } </SCRIPT> <form name="testform" onchange="testphp()"> <select name="testselect"> <option value="あ">結果1</option> <option value="い">結果2</option> <option value="う">結果3</option> <option value="え">結果4</option> <option value="お">結果5</option> </select> </form> </body> </html> 【test.php】 <?php //変数処理 $a = @$_POST["test"]; print "渡された値:".$a; exit; ?> ------------------------------------------------- どうぞ、宜しくお願い致します。

  • PHPでjavascriptを表示する方法

    すみません。javascriptの事はほとんど分からないのですが、 phpを使ってjavascriptを表示したいのですが基本的な部分で分かりません。 例えば <?php echo"<script>document.write(\"PHP!\")</script>;" ?> は簡単にできますが、タグに入っているjavascriptはどうやってphpで表示させるのでしょうか? <form name="aaa" method="post" action="bbb.php"> <select name="ccc" onChange="document.forms['aaa'].submit()" > <option value="111">111</option> <option value="222">222</option> </select> </form> 上記のスクリプトを単純にphpで表示したいのですが、どうやってもphpで囲むとonChangeが動かず 動的にはなりません。 何時間もぐぐったりしてますが解決しません。タグの中のjavascriptは直接phpでは動かせないのでしょうか?

    • ベストアンサー
    • PHP
  • PHPで日付の範囲検索

    PHPを使って日付の範囲検索を実装しています。日付をセレクトフォームで選択し、該当する日時をSELECT文で記述するという流れです。イメージは以下のような感じですが、大体合っていますか? <? php if (!empty(filter_input(INPUT_POST, 'day'))) { $day = filter_input(INPUT_POST, 'day'); ・・・・ SELECT 文   ・・・・ ?> <html> <div class="search"> <form method="post"> <select name="year"> <?php for ($i=2000; $i <= 2021; $i++) { $year .= '<option value="'.$i.'">'.$i.'年</option>'; } ?> </select> <select name="month"> <?php for ($i=1; $i <= 12; $i++) { $month .= '<option value="'.$i.'">'.$i.'月</option>'; } ?> </select> <select name="day"> <?php for ($i=1; $i <= 31; $i++) { $day .= '<option value="'.$i.'">'.$i.'日</option>'; } ?> </select> <input type="hidden" name="search" value="<?php echo $_POST['year'].'-'. $_POST['month'].'-'. $_POST['date']; ?>"> <input type="submit" value="検索"> </form> </div> </html>

    • ベストアンサー
    • PHP

専門家に質問してみよう