PDA

Orijinalini görmek için tıklayınız : PHP ile Apache Web Sunucusunun Log Dosyasini Okumak


tepisenordek
08-11-2007, 21:08 PM
Asagida yer alan program apache web sunucunuzun log dosyasini okur ve HTML
formatinda ekranda gosterir.Ornek bir Log kaydi asagida verilmistir:

64.106.131.11 - - [05/Feb/2003:1:5:03 -0500] "GET /a.php HTTP/1.1" 200 6589

64.106.131.12 - - [06/Feb/2003:1:5:03 -0500] "GET /b.php HTTP/1.1" 404 0

64.106.131.13 - - [07/Feb/2003:1:5:25 -0500] "GET /c.htm HTTP/1.1" 200 11395

64.106.131.14 - - [08/Feb/2003:1:5:25 -0500] "GET /d.php HTTP/1.1" 200 0

64.106.131.15 - - [09/Feb/2003:1:5:25 -0500] "GET /e.txt HTTP/1.1" 200 12541

64.106.131.16 - - [01/Feb/2003:1:5:25 -0500] "GET /f.php HTTP/1.1" 404 12525

64.106.131.16 - - [01/Feb/2003:1:5:25 -0500] "GET /g.txt HTTP/1.1" 404 0

64.106.131.17 - - [09/Feb/2003:1:5:26 -0500] "GET /h.doc HTTP/1.1" 200 12541

64.106.131.18 - - [10/Feb/2003:1:5:26 -0500] "GET /w.inc HTTP/1.1" 404 0


Program :
PHP:

1.
2. <?php
3.
4.
5. $log_dosyasi = "/var/www/virtual/turk-php.com/ornekler/apache_erisim_ornek.log";
6.
7.
8. $fp = @fopen($log_dosyasi,"r") or die ("Log dosyasi $log_dosyasi acilamiyor");
9.
10.
11. while ($satir = fgets($fp, 1024)){
12.
13.
14. $satir = trim($satir);
15.
16.
17. if ($satir==""){
18.
19. continue;
20.
21. }
22.
23.
24. preg_match("/^(S+)s+(S+)s+(S+)s+[(.*)]s+"(.*)"s+(S+)s+(S+)$/x",
25.
26. $satir,$eslesen);
27.
28.
29. array_shift($eslesen);
30.
31.
32. $host = $eslesen[0];
33.
34. $kimlik = $eslesen[1];
35.
36. $kullaniciadi = $eslesen[2];
37.
38. $zaman = $eslesen[3];
39.
40. $yol = $eslesen[4];
41.
42. $cevapkodu = $eslesen[5];
43.
44. $cevapboyutu = $eslesen[6];
45.
46.
47. preg_match("@(..)/(...)/(....):(..):(..):(..)@", $zaman,$eslesen);
48.
49.
50. array_shift($eslesen);
51.
52.
53. $gun = $eslesen[0];
54.
55. $ay = $eslesen[1];
56.
57. $yil = $eslesen[2];
58.
59. $saat = $eslesen[3];
60.
61. $dakika = $eslesen[4];
62.
63. $saniye = $eslesen[5];
64.
65.
66. preg_match("/S+s+(S+)/",$yol,$eslesen);
67.
68.
69. $yol = $eslesen[1];
70.
71.
72. if ($cevapkodu == "200") {
73.
74.
75. $cevap[$i++] = array($host,$kimlik,$kullaniciadi,array($gun,$ay,
76.
77. $yil,$saat,$dakika,$saniye),$yol,$cevapboyutu);
78.
79.
80. } else {
81.
82.
83. $hatakodu[$x++] = array($host,$kimlik,$kullaniciadi,array($gun,$ay,
84.
85. $yil,$saat,$dakika,$saniye),$yol,$cevapboyutu);
86.
87.
88. } //fi
89.
90. } // whilesonu
91.
92.
93. array_shift($cevap);
94.
95. array_shift($hatakodu);
96.
97.
98. ?>
99.
100.
101. <html>
102.
103. <head>
104.
105. <title>Erisim Kayitlari Listesi</title>
106.
107. </head>
108.
109. <body>
110.
111. <h1> Erisim Kayitlarinin Sonuclari:</h1>
112.
113. <h2> Basarili Istekler (Cevap Kodu HTTP 200 Olanlar) </h2>
114.
115.
116. <br>
117.
118. <table border="1" cellpadding="2" cellspacing="1">
119.
120. <tr>
121.
122.
123. <th> Host </th>
124.
125. <th> Kimlik </th>
126.
127. <th> Kullanici Adi </th>
128.
129. <th> Zaman </th>
130.
131. <th> Yol </th>
132.
133. <th> Boyut </th>
134.
135.
136. </tr>
137.
138.
139. <?php
140.
141. for ($idx = 0; $idx < count($cevap); $idx++) {
142.
143. ?>
144.
145.
146. <tr>
147.
148. <td> <?php echo $cevap[$idx][0]; ?> </td>
149.
150. <td> <?php echo $cevap[$idx][1]; ?> </td>
151.
152. <td> <?php echo $cevap[$idx][2]; ?> </td>
153.
154. <td> <?php
155.
156. echo "Tarih:" . $cevap[$idx][3][1] . "/";
157.
158. echo $cevap[$idx][3][0] . "/";
159.
160. echo $cevap[$idx][3][2] . ", ";
161.
162. echo "Saat:" . $cevap[$idx][3][3] . ":";
163.
164. echo $cevap[$idx][3][4] . ":" . $cevap[$idx][3][5];
165.
166. ?>
167.
168. </td>
169.
170. <td> <?php echo $cevap[$idx][4]; ?> </td>
171.
172. <td> <?php echo $cevap[$idx][5]; ?> </td>
173.
174. </tr>
175.
176. <?php } /*forsonu*/ ?>
177.
178. </table>
179.
180. <br><br>
181.
182.
183. <h2>Basarisiz Istekler (Cevap kodu HTTP 200 den farkli)</h2>
184.
185.
186. <table border="1" cellpadding="2" cellspacing="1">
187.
188. <tr>
189.
190.
191. <th> Host </th>
192.
193. <th> Kimlik </th>
194.
195. <th> Kullanici Adi </th>
196.
197. <th> Zaman </th>
198.
199. <th> Yol </th>
200.
201. <th> Boyut </th>
202.
203.
204. </tr>
205.
206.
207. <?php
208.
209. for ($idx = 0; $idx < count($hatakodu); $idx++) {
210.
211. ?>
212.
213.
214. <tr>
215.
216. <td> <?php echo $hatakodu[$idx][0]; ?> </td>
217.
218. <td> <?php echo $hatakodu[$idx][1]; ?> </td>
219.
220. <td> <?php echo $hatakodu[$idx][2]; ?> </td>
221.
222. <td> <?php
223.
224. echo "Tarih:" . $hatakodu[$idx][3][1] . "/";
225.
226. echo $hatakodu[$idx][3][0] . "/";
227.
228. echo $hatakodu[$idx][3][2] . ", ";
229.
230. echo "Saat:" . $hatakodu[$idx][3][3] . ":";
231.
232. echo $hatakodu[$idx][3][4] . ":" . $hatakodu[$idx][3][5];
233.
234. ?>
235.
236. </td>
237.
238. <td> <?php echo $hatakodu[$idx][4]; ?> </td>
239.
240. <td> <?php echo $hatakodu[$idx][5]; ?> </td>
241.
242. </tr>
243.
244. <?php } /*forsonu*/ ?>
245.
246. </table>
247.
248. <table>
249.
250. <tr>
251.
252. <td>
253.
254. Ornek Log dosyasini gormek icin <a href="/ornekler/apache_erisim_ornek.log">
255.
256. tiklayiniz</a>!
257.
258. </td>
259.
260. </tr>
261.
262. </table>
263.
264. </body>
265.
266. </html>