[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]
[Hilos de Discusión] [Fecha] [Tema] [Autor]Hola! Bajamos un contador llamado eklog.php de la pagina http://www.mexicoextremo.com.mx despues de leer y seguir las instrucciones de instalacion del archivo readme.txt Incluimos en la pagina de inicio las siguientes lineas: <script languages="php"> include ("/var/www/html/eklog/eklog.php") </script> Al llamar la pagina de inicio con cualquier navegador NO se despliega el contador, pero tampoco manda ningun mensaje de error. Hicimos una prueba de de ejecutar # php eklog.php despliega lo siguiente: php eklog.php X-Powered-By: PHP/4.2.2 Content-type: text/html <a href='http://www.mexicoextremo.com.mx/eklog/eklog.php?stat"><font color="#ff0000" face="comic Sans MS" size"+1"> 00.0.0.0|2</font></a> Sin embargo, en los primeros intentos de abrir la pagina guardaba informacion en el archivo visit.txt, count.txt y log.txt Pensamos que tal vez el problema era el color y cambiamos en el archivo eklog.php la variable #ff0000 por #ffcc33 (es un tono de amarillo dorado). Sigue sin desplegar nada e incluso los archivos anteriormente mencionados ya no registraron absolutamente nada. Alguno de ustedes podria darnos una idea de como hacer para que funcione este contador, Gracias! PD. La pagina esta instalada en una maquina que corre en Red Hat Linux 9.0 Si les interesa ver el archivo php lo agrego como un anexo
<?php ########################################################################### # configuration ########################################################################### # main script path & script URL $script_path = 'eklog'; $script_url = 'http://www.mexicoextremo.com.mx/eklog/eklog.php'; # last-visit, count & log data files $vst_file = "$script_path/visit.txt"; $cnt_file = "$script_path/count.txt"; $log_file = "$script_path/log.txt"; ########################################################################### # IP addresses to be excluded in access log (can exclude a whole sub-net) # white IPs have access to all statistics # black IPs have no access to any data # e.g. $white_ip_list = array('xxx.xxx.xxx.xxx', 'yyy.yyy.yyy'); $white_ip_list = array(); $black_ip_list = array(); # length of time (minutes) before consecutive hits from an IP are counted # use 0 to disable anti-reload feature $anti_reload_period = 60; ########################################################################### # count visible? $visible_count = 1; # show count digits as # 0 - text # 1 - images $digit_type = 0; # absolute number of digits to display # (used when $digit_length >= count_digit_length) $digit_length = 0; # number of zeroes to prefix the count # (used when $digit_length < count_digit_length) $digit_pad = 1; # show digits in what language? # (used when showing digits as text) $arabic_count = 1; $chinese_count = 0; $roman_count = 0; if ($arabic_count) { $bold = 0; $italic = 0; $cnt_color = '#ff0000'; $cnt_face = 'Comic Sans MS'; $cnt_size = '+1'; } elseif ($chinese_count) { $bold = 1; $italic = 0; $cnt_color = '#ff0000'; $cnt_face = ''; $cnt_size = '+1'; } elseif ($roman_count) { $bold = 0; $italic = 0; $cnt_color = '#ff0000'; $cnt_face = 'Comic Sans MS'; $cnt_size = '+1'; } # digit images directory name & file extension # directory can use absolute or relative path # absolute paths start with "http://", "https://" or "/" # all other paths are considered relative (to main script directory) # (used when showing digits as images) $img_dir = 'digit'; $img_ext = 'gif'; # individual digit image width & height $img_width = 16; $img_height = 21; # digit images text alignment # e.g. absmiddle, top, middle, bottom $img_align = 'absmiddle'; ########################################################################### # statistics visible? $visible_stat = 1; # statistics summary visible? # statistics detail visible? $summary_stat = 1; $detail_stat = 1; # statistics background colours $back_col_type = '#FFCC99'; $back_col_head = 'lightblue'; $back_col_body = 'lightcyan'; ########################################################################### # main programme ########################################################################### $agent_stat = array(); # create initial data files during first run if (! file_exists($vst_file)) { $vst_fp = fopen($vst_file, 'w') or die("Can't open $vst_file\n"); flock($vst_fp, 2); fwrite($vst_fp, '0.0.0.0|0'); fclose($vst_fp); } if (! file_exists($cnt_file)) { $cnt_fp = fopen($cnt_file, 'w') or die("Can't open $cnt_file\n"); flock($cnt_fp, 2); fwrite($cnt_fp, '0'); fclose($cnt_fp); } # run script if (getenv('QUERY_STRING') == '') { takeLog(); # take log } elseif (strtolower(getenv('QUERY_STRING')) == 'stat') { viewStat(); # view statistics } else { # exit when script is called with invalid parameter print '[parameter invalid]'; } ########################################################################### # functions ########################################################################### function takeLog() { global $script_url, $vst_file, $cnt_file, $log_file; global $visible_count; global $digit_type, $digit_length, $digit_pad; global $arabic_count, $chinese_count, $roman_count; global $bold, $italic, $cnt_color, $cnt_face, $cnt_size; global $img_dir, $img_ext, $img_width, $img_height, $img_align; global $visible_stat; # do access log if (handleListedIP() || isReload()) { # no logging needed $cnt_fp = fopen($cnt_file, 'r') or die("Can't open $cnt_file\n"); $cnt = fread($cnt_fp, filesize($cnt_file)); $cnt = chop($cnt); fclose($cnt_fp); } else { # logging needed # process last-visit data $vst_fp = fopen($vst_file, 'w') or die("Can't open $vst_file\n"); flock($vst_fp, 2); $tm = time(); fwrite($vst_fp, getenv('REMOTE_ADDR')."|$tm"); fclose($vst_fp); # process count data $cnt_fp = fopen($cnt_file, 'r+') or die("Can't open $cnt_file\n"); flock($cnt_fp, 2); $cnt = fread($cnt_fp, filesize($cnt_file)); $cnt = chop($cnt); $cnt++; rewind($cnt_fp); fwrite($cnt_fp, $cnt); ftruncate($cnt_fp, ftell($cnt_fp)); fclose($cnt_fp); # process log data $log_fp = fopen($log_file, 'a') or die("Can't open $log_file\n"); flock($log_fp, 2); $aTime = localtime($tm, 1); $iY = $aTime['tm_year']+1900; $iM = $aTime['tm_mon']+1; $iM = ($iM>=10?$iM:"0$iM"); $iD = $aTime['tm_mday']; $iD = ($iD>=10?$iD:"0$iD"); $iHH = $aTime['tm_hour']; $iHH = ($iHH>=10?$iHH:"0$iHH"); $iMM = $aTime['tm_min']; $iMM = ($iMM>=10?$iMM:"0$iMM"); $iSS = $aTime['tm_sec']; $iSS = ($iSS>=10?$iSS:"0$iSS"); $logTime = "$iY-$iM-$iD $iHH:$iMM:$iSS"; if (gethostbyaddr(getenv('REMOTE_ADDR'))) { $logHost = gethostbyaddr(getenv('REMOTE_ADDR')); } else { $logHost = '[Unknown]'; } if (getenv('HTTP_USER_AGENT')) { $logAgent = getenv('HTTP_USER_AGENT'); } else { $logAgent = '[Unknown]'; } fwrite($log_fp, "$logTime|$logHost|$logAgent\n"); fclose($log_fp); } # show output $html_out = ''; if ($visible_count) { # pad zero(es) to the count # (used when showing text digits in Arabic or image digits) if (($digit_type == 0) && $arabic_count || ($digit_type == 1)) { if ($digit_length >= strlen($cnt)) { $digit_pad = $digit_length - strlen($cnt); } for ($i=0; $i<$digit_pad; $i++) { $cnt = '0' . $cnt; } } if ($digit_type == 0) { if (! $arabic_count) { if ($chinese_count) { $cnt = arabic2chinese($cnt); } elseif ($roman_count) { $cnt = arabic2roman($cnt); } } } elseif ($digit_type == 1) { # check if relative path is used for digit images directory if (! preg_match('@^(http://|https://|/)@', $img_dir)) { $img_url = preg_replace('@(.*)/.*@', '\\1', $script_url); $img_dir = "$img_url/$img_dir"; } } if ($visible_stat) { $html_out .= "<a href=\"${script_url}?stat\">"; } if ($digit_type == 0) { # show count as text if ($cnt_color || $cnt_face || $cnt_size) { $html_out .= '<font'; } if ($cnt_color) { $html_out .= " color=\"$cnt_color\""; } if ($cnt_face) { $html_out .= " face=\"$cnt_face\""; } if ($cnt_size) { $html_out .= " size=\"$cnt_size\""; } if ($cnt_color || $cnt_face || $cnt_size) { $html_out .= '>'; } if ($bold) { $html_out .= '<b>'; } if ($italic) { $html_out .= '<i>'; } $html_out .= $cnt; if ($italic) { $html_out .= '</i>'; } if ($bold) { $html_out .= '</b>'; } if ($cnt_color || $cnt_face || $cnt_size) { $html_out .= '</font>'; } } elseif ($digit_type == 1) { # show count as image for ($i=0; $i<strlen($cnt); $i++) { $html_out .= "<img src=\"$img_dir/$cnt[$i].$img_ext\""; if ($img_width && $img_height) { $html_out .= " width=$img_width height=$img_height"; } if ($img_align) { $html_out .= " align=$img_align"; } $html_out .= ' border=0>'; } } if ($visible_stat) { $html_out .= '</a>'; } } print $html_out; } function viewStat() { global $cnt_file, $log_file; global $visible_stat; global $summary_stat, $detail_stat; global $back_col_type, $back_col_head, $back_col_body; global $agent_stat; # user-defined sort function function doSort ($a, $b) { global $agent_stat; if ($agent_stat[$a] > $agent_stat[$b]) { return(-1); } elseif ($agent_stat[$a] < $agent_stat[$b]) { return(1); } else { if ($a > $b) { return(-1); } elseif ($a < $b) { return(1); } else { return(0); } } } # handle listed ip handleListedIP(); # return if no stat or stat invisible if ((! file_exists($log_file)) || !$visible_stat || !$summary_stat && !$detail_stat) { print '[statistics not available]'; return(0); } # get count file data $cnt_fp = fopen($cnt_file, 'r') or die("Can't open $cnt_file\n"); $cnt_no = fread($cnt_fp, filesize($cnt_file)); $cnt_no = chop($cnt_no); fclose($cnt_fp); # get log file data $log_fp = fopen($log_file, 'r') or die("Can't open $log_file\n"); for ($log_no=0; ! feof($log_fp); $log_no++) { $tmp = preg_split('/\|/', fgets($log_fp, 256)); $time[$log_no] = $tmp[0]; $host[$log_no] = $tmp[1]; $agent[$log_no] = chop($tmp[2]); if ($agent[$log_no]) { $agent_stat[$agent[$log_no]]++; } } $log_no--; fclose($log_fp); # get count offset $off_no = $cnt_no - $log_no; # output stat report print "<HTML>\n\n"; print "<HEAD><TITLE>Estadísticas de accesos a la página principal</TITLE></HEAD>\n\n"; print "<link rel=\"stylesheet\" href=\"http://www.mexicoextremo.com.mx/style/style1.css\" type=\"text/css\">\n\n"; print "<BODY>\n"; if ($summary_stat) { print "<div align=\"center\"><h2>Estadísticas de accesos a la página principal</h2></div>\n"; print "<TABLE BGCOLOR=$back_col_type BORDER=1 CELLPADDING=4 CELLSPACING=2 WIDTH=\"100%\">\n"; print "<TR><TH><BIG>Sumario del archivo LOG</BIG></TH></TR>\n"; print "</TABLE>\n"; print "<BR>\n"; print "<TABLE ALIGN=CENTER BGCOLOR=$back_col_body BORDER=1 CELLPADDING=2 CELLSPACING=2>\n"; print "<TR BGCOLOR=$back_col_head>\n"; print "<TH ALIGN=LEFT>Navegador</TH>\n"; print "<TH>Contador</TH>\n"; print "</TR>\n"; $agent_stat_keys = array_keys($agent_stat); usort($agent_stat_keys, "doSort"); foreach ($agent_stat_keys as $key) { print "<TR>\n"; print "<TD>$key</TD>\n"; print "<TD ALIGN=CENTER>$agent_stat[$key]</TD>\n"; print "</TR>\n"; } print "<TR BGCOLOR=$back_col_head>\n"; print "<TH ALIGN=LEFT>Total</TH>\n"; print "<TH>$log_no</TH>\n"; print "</TR>\n"; print "</TABLE>\n\n"; } if ($summary_stat && $detail_stat) { print "<BR><BR><BR>\n\n"; } if ($detail_stat) { print "<TABLE BGCOLOR=$back_col_type BORDER=1 CELLPADDING=4 CELLSPACING=2 WIDTH=\"100%\">\n"; print "<TR><TH><BIG>Detalles del LOG</BIG></TH></TR>\n"; print "</TABLE>\n"; print "<BR>\n"; print "<TABLE ALIGN=CENTER BGCOLOR=$back_col_body BORDER=1 CELLPADDING=2 CELLSPACING=2>\n"; print "<TR BGCOLOR=$back_col_head>\n"; print "<TD> </TD>\n"; print "<TH ALIGN=LEFT>Fecha/hora</TH>\n"; print "<TH ALIGN=LEFT>Dirección IP</TH>\n"; print "<TH ALIGN=LEFT>Browser</TH>\n"; print "</TR>\n"; for ($i=0; $i<$log_no; $i++) { print "<TR>\n"; printf("<TD ALIGN=RIGHT BGCOLOR=$back_col_head>%d</TD>\n", $i+1+$off_no); print "<TD>$time[$i]</TD>\n"; print "<TD>$host[$i]</TD>\n"; print "<TD>$agent[$i]</TD>\n"; print "</TR>\n"; } print "</TABLE>\n"; } print "</BODY>\n\n"; print "</HTML>\n"; } function handleListedIP() { global $white_ip_list, $black_ip_list; global $visible_count, $visible_stat, $summary_stat, $detail_stat; $this_ip = getenv('REMOTE_ADDR') . '.'; foreach ($white_ip_list as $ip) { if (preg_match("/^$ip\./", $this_ip)) { # override default for white-listed ip $visible_count = 1; $visible_stat = 1; $summary_stat = 1; $detail_stat = 1; return(1); } } foreach ($black_ip_list as $ip) { if (preg_match("/^$ip\./", $this_ip)) { # override default for black-listed ip $visible_count = 0; $visible_stat = 0; $summary_stat = 0; $detail_stat = 0; return(2); } } return(0); } function isReload() { global $vst_file; global $anti_reload_period; $vst_fp = fopen($vst_file, 'r') or die("Can't open $vst_file\n"); $vst = preg_split('/\|/', fread($vst_fp, filesize($vst_file))); $ip_last = $vst[0]; $tm_last = chop($vst[1]); fclose($vst_fp); $tm_now = time(); $min_diff = ($tm_now-$tm_last)/60; # return true if current IP is the same as last IP and within anti-reload # period if ((getenv('REMOTE_ADDR')==$ip_last)&&($min_diff<=$anti_reload_period)) { return(1); } else { return(0); } } function arabic2chinese($in) { $d = '¹s'; $mm = array('','¸U','»õ','¥ü'); # return 0 if input is all 0 if (! intval($in)) { return($d); } # construct chinese characters, in groups of 4 digits from the right for ($i=0,$s='',$out=''; $i<strlen($in); $i+=4) { if (($i+4) <= strlen($in)) { $s = substr($in,-($i+4),4); } elseif (($i+3) == strlen($in)) { $s = substr($in,-($i+3),3); } elseif (($i+2) == strlen($in)) { $s = substr($in,-($i+2),2); } else { $s = substr($in,-($i+1),1); } if (intval($s)) { # append 0 between groups if it's not first loop, and either rightmost # digit of current group or leftmost digit of previous group is 0, and # digits of previous group are not all 0's $j = (($i)&&((substr($s,-1,1)=='0')||(substr($in,-$i,1)=='0'))&&intval(substr($in,-$i))?$d:''); # append current group, with corresponding multiple $out = chineseQuadruple($s) . $mm[$i/4] . $j . $out; } } return($out); } function chineseQuadruple($in) { $d = array('¹s','¤@','¤G','¤T','¥|','¤','¤»','¤C','¤K','¤E'); $m = array('¤d','¦Ê','¤Q',''); # return 0 if input is all 0 if (! intval($in)) { return($d[0]); } for ($i=-strlen($in),$out=''; $i<=-1; $i++) { if (substr($in,$i,1)) { # append current digit (1-9), with corresponding multiple $out .= $d[substr($in,$i,1)] . $m[$i+count($m)]; } else { # break loop if all remaining digits are 0's if (! intval(substr($in,$i))) { break; } # append 0 if previous digit is not 0 or null if (substr($in,$i-1,1)) { $out .= $d[0]; } } } return($out); } function arabic2roman($in) { $r1 = array('I','II','III','IV','V','VI','VII','VIII','IX'); $r10 = array('X','XX','XXX','XL','L','LX','LXX','LXXX','XC'); $r100 = array('C','CC','CCC','CD','D','DC','DCC','DCCC','CM'); # get arabic digits $a1 = $in%10; $in = ($in-$a1)/10; $a10 = $in%10; $in = ($in-$a10)/10; $a100 = $in%10; $a1000 = ($in-$a100)/10; # construct roman numerals for ($i=0,$out=''; $i<$a1000; $i++) { $out .= 'M'; } if ($a100) { $out .= $r100[$a100-1]; } if ($a10) { $out .= $r10[$a10-1]; } if ($a1) { $out .= $r1[$a1-1]; } return($out); } ?>