[phpBB Debug] PHP Warning: in file [ROOT]/includes/crs/crs_misc_functions.php on line 37: mime_content_type(): Empty filename or path
[phpBB Debug] PHP Warning: in file [ROOT]/includes/crs/crs_misc_functions.php on line 37: mime_content_type(): Empty filename or path
Zen Cart 源代码 admin_activity.php

Zen Cart 源代码 admin_activity.php




下载文件

文件名: admin_activity.php
文件类型: PHP文件
文件大小: 18.84 KiB
MD5: b4fbc06178ffb5cd571a7ad5f14db3dc

admin_activity.php - 关闭高亮
  1. <?php
  2. /**
  3.  * Admin Activity Log Viewer/Archiver
  4.  *
  5.  * @package admin
  6.  * @copyright Copyright 2003-2014 Zen Cart Development Team
  7.  * @copyright Portions Copyright 2003 osCommerce
  8.  * @license http://www.zen-cart.com/license/2_0.txt GNU Public License V2.0
  9.  * @version GIT: $Id: Author: DrByte  Jun 30 2014 Modified in v1.5.4 $
  10.  *
  11.  * @TODO: prettify so on-screen output is more friendly, perhaps adding pagination support etc (using existing "s" and "p" params)
  12.  * @TODO: prettify by hiding postdata until requested, either with hidden layers or other means
  13.  * @TODO: Consider streaming to file line-by-line as an alternate output method in case of RAM blowout with large data quantities or low RAM config on servers.
  14.  */
  15. require ('includes/application_top.php');
  16.  
  17.  
  18. // change destination here for path when using "save to file on server"
  19. if (! defined('DIR_FS_ADMIN_ACTIVITY_EXPORT')) define('DIR_FS_ADMIN_ACTIVITY_EXPORT', DIR_FS_ADMIN . 'backups/');
  20.  
  21. $action = (isset($_GET['action']) ? $_GET['action'] : '');
  22. $start = (isset($_GET['s']) ? (int)$_GET['s'] : 0);
  23. $perpage = (isset($_GET['p']) ? (int)$_GET['p'] : 50);
  24. $available_export_formats = array();
  25. $available_export_formats[0] = array('id' => '0' , 'text' => TEXT_EXPORTFORMAT0, 'format' => 'HTML'); // review on screen
  26. $available_export_formats[1] = array('id' => '1' , 'text' => TEXT_EXPORTFORMAT1, 'format' => 'CSV'); // export to CSV
  27. //  $available_export_formats[2]=array('id' => '2', 'text' => TEXT_EXPORTFORMAT2, 'format' => 'TXT');
  28. //  $available_export_formats[3]=array('id' => '3', 'text' => TEXT_EXPORTFORMAT3, 'format' => 'XML');
  29. $save_to_file_checked = (isset($_POST['savetofile']) && zen_not_null($_POST['savetofile']) ? $_POST['savetofile'] : 0);
  30. $post_format = (isset($_POST['format']) && zen_not_null($_POST['format']) ? $_POST['format'] : 1);
  31. $format = $available_export_formats[$post_format]['format'];
  32. $file = (isset($_POST['filename']) ? preg_replace('/[^\w\.-]/', '', $_POST['filename']) : 'admin_activity_archive_' . date('Y-m-d_H-i-s') . '.csv');
  33. $filter_options = array();
  34. $filter_options[0] = array('id' => '0', 'text' => TEXT_EXPORTFILTER0, 'filter' => 'all');
  35. $filter_options[1] = array('id' => '1', 'text' => TEXT_EXPORTFILTER1, 'filter' => 'info');
  36. $filter_options[2] = array('id' => '2', 'text' => TEXT_EXPORTFILTER2, 'filter' => 'notice');
  37. $filter_options[3] = array('id' => '3', 'text' => TEXT_EXPORTFILTER3, 'filter' => 'warning');
  38. $filter_options[4] = array('id' => '4', 'text' => TEXT_EXPORTFILTER4, 'filter' => 'notice+warning');
  39. $post_filter = (isset($_POST['filter']) && (int)$_POST['filter'] >= 0 && (int)$_POST['filter'] < 5) ? (int)$_POST['filter'] : 4;
  40. $selected_filter = $filter_options[$post_filter]['filter'];
  41.  
  42. zen_set_time_limit(600);
  43.  
  44. if ($action != '')
  45. {
  46.   $NL = "\n";
  47.   $limit = '';
  48.   if ($perpage > 0 || $start > 0)
  49.   {
  50.     $limit = ' LIMIT ';
  51.     if ($start > 0) $limit .= (int)$start;
  52.     if ($start > 0 && $perpage > 0) $limit .= ', ';
  53.     if ($perpage > 0) $limit .= (int)$perpage;
  54.   }
  55.   $sort = '';
  56.  
  57.   switch ($action)
  58.   {
  59.     case 'save':
  60.       global $db;
  61.  
  62.       zen_record_admin_activity(sprintf(TEXT_ACTIVITY_LOG_ACCESSED, $format, $selected_filter, ($save_to_file_checked ? '(SaveToFile)' : ($format =='HTML' ? '(Output to browser)' : '(Download to browser)'))), 'warning');
  63.  
  64.       if ($format == 'CSV')
  65.       {
  66.         $FIELDSTART = '"';
  67.         $FIELDEND = '"';
  68.         $FIELDSEPARATOR = ',';
  69.         $LINESTART = '';
  70.         $LINEBREAK = "\n";
  71.         $sort = ' ASC ';
  72.         $limit = '';
  73.       }
  74.       if ($format == 'TXT')
  75.       {
  76.         $FIELDSTART = '';
  77.         $FIELDEND = '';
  78.         $FIELDSEPARATOR = "\t";
  79.         $LINESTART = '';
  80.         $LINEBREAK = "\n";
  81.         $sort = ' ASC ';
  82.       }
  83.       if ($format == 'HTML')
  84.       {
  85.         $FIELDSTART = '<td>';
  86.         $FIELDEND = '</td>';
  87.         $FIELDSEPARATOR = "";
  88.         $LINESTART = "<tr>";
  89.         $LINEBREAK = "</tr>" . $NL;
  90.         $sort = ' DESC ';
  91.       }
  92.  
  93.       $where = '';
  94.       switch($selected_filter) {
  95.         case 'warning':
  96.           $where = " severity='warning'";
  97.           break;
  98.         case 'notice+warning':
  99.           $where = " severity in ('warning','notice')";
  100.           break;
  101.         case 'notice':
  102.           $where = " severity='notice'";
  103.           break;
  104.         case 'info':
  105.           $where = " severity='info'";
  106.           break;
  107.         default:
  108.           $where = '';
  109.       }
  110.       if ($where != '') $where = " WHERE " . $where;
  111.  
  112.       $sql = "select a.access_date, a.admin_id, u.admin_name, a.ip_address, a.page_accessed, a.page_parameters, a.gzpost, a.flagged, a.attention, a.severity, a.logmessage
  113.              FROM " . TABLE_ADMIN_ACTIVITY_LOG . " a LEFT OUTER JOIN " . TABLE_ADMIN . " u ON a.admin_id = u.admin_id " . $where . " ORDER BY log_id " . $sort . $limit;
  114.       $result = $db->Execute($sql);
  115.       $records = $result->RecordCount();
  116.       if ($records == 0)
  117.       {
  118.  
  119.         $messageStack->add_session(TEXT_NO_RECORDS_FOUND, 'error');
  120.       } else
  121.       { //process records
  122.         $i = 0;
  123.         // make a <table> tag if HTML output
  124.         if ($format == "HTML")
  125.         {
  126.           $exporter_output .= '<table border="1">' . $NL;
  127.         }
  128.         // add column headers if CSV or HTML format
  129.         if ($format == "CSV" || $format == "HTML")
  130.         {
  131.           $exporter_output .= $LINESTART;
  132.           $exporter_output .= $FIELDSTART . "severity" . $FIELDEND;
  133.           $exporter_output .= $FIELDSEPARATOR;
  134.           $exporter_output .= $FIELDSTART . "timestamp" . $FIELDEND;
  135.           $exporter_output .= $FIELDSEPARATOR;
  136.           $exporter_output .= $FIELDSTART . "ip_address" . $FIELDEND;
  137.           $exporter_output .= $FIELDSEPARATOR;
  138.           $exporter_output .= $FIELDSTART . "admin_user" . $FIELDEND;
  139.           $exporter_output .= $FIELDSEPARATOR;
  140.           $exporter_output .= $FIELDSTART . "page_accessed" . $FIELDEND;
  141.           $exporter_output .= $FIELDSEPARATOR;
  142.           $exporter_output .= $FIELDSTART . "parameters" . $FIELDEND;
  143.           $exporter_output .= $FIELDSEPARATOR;
  144.           $exporter_output .= $FIELDSTART . "flagged" . $FIELDEND;
  145.           $exporter_output .= $FIELDSEPARATOR;
  146.           $exporter_output .= $FIELDSTART . "attention" . $FIELDEND;
  147.           $exporter_output .= $FIELDSEPARATOR;
  148.           $exporter_output .= $FIELDSTART . "logmessage" . $FIELDEND;
  149.           $exporter_output .= $FIELDSEPARATOR;
  150.           $exporter_output .= $FIELDSTART . "postdata" . $FIELDEND;
  151.           $exporter_output .= $LINEBREAK;
  152.         }
  153.         // headers - XML
  154.         if ($format == "XML")
  155.         {
  156.           $exporter_output .= '<?xml version="1.0" encoding="' . CHARSET . '"?>' . "\n";
  157.         }
  158.         // output real data
  159.         while (! $result->EOF)
  160.         {
  161.           $i ++;
  162.           $postoutput = '';
  163.           if ($format == "XML")
  164.           {
  165.             $postoutput = nl2br(print_r(json_decode(@gzinflate($result->fields['gzpost'])), true));
  166.             $exporter_output .= "<admin_activity_log>\n";
  167.             $exporter_output .= "  <row>\n";
  168.             $exporter_output .= "    <severity>" . $result->fields['severity'] . "</severity>\n";
  169.             $exporter_output .= "    <access_date>" . $result->fields['access_date'] . "</access_date>\n";
  170.             $exporter_output .= "    <admin_id>" . $result->fields['admin_id'] . "</admin_id>\n";
  171.             $exporter_output .= "    <admin_name>" . htmlspecialchars($result->fields['admin_name'], ENT_COMPAT, CHARSET, TRUE) . "</admin_name>\n";
  172.             $exporter_output .= "    <ip_address>" . $result->fields['ip_address'] . "</ip_address>\n";
  173.             $exporter_output .= "    <page_accessed>" . $result->fields['page_accessed'] . "</page_accessed>\n";
  174.             $exporter_output .= "    <page_parameters>" . htmlspecialchars($result->fields['page_parameters'], ENT_COMPAT, CHARSET, TRUE) . "</page_parameters>\n";
  175.             $exporter_output .= "    <flagged>" . htmlspecialchars($result->fields['flagged'], ENT_COMPAT, CHARSET, TRUE) . "</flagged>\n";
  176.             $exporter_output .= "    <attention>" . htmlspecialchars($result->fields['attention'], ENT_COMPAT, CHARSET, TRUE) . "</attention>\n";
  177.             $exporter_output .= "    <logmessage>" . htmlspecialchars($result->fields['logmessage'], ENT_COMPAT, CHARSET, TRUE) . "</logmessage>\n";
  178.             $exporter_output .= "    <postdata>" . $postoutput . "</postdata>\n";
  179.             $exporter_output .= "  </row>\n";
  180.           } else
  181.           { // output non-XML data-format
  182.             $postoutput = print_r(json_decode(@gzinflate($result->fields['gzpost'])), true);
  183.             if ($format == 'HTML') {
  184.               $postoutput = nl2br(zen_output_string_protected($postoutput));
  185.             } else {
  186.               $postoutput = nl2br($postoutput);
  187.             }
  188.             $exporter_output .= $LINESTART;
  189.             $exporter_output .= $FIELDSTART . $result->fields['severity'] . $FIELDEND;
  190.             $exporter_output .= $FIELDSEPARATOR;
  191.             $exporter_output .= $FIELDSTART . $result->fields['access_date'] . $FIELDEND;
  192.             $exporter_output .= $FIELDSEPARATOR;
  193.             $exporter_output .= $FIELDSTART . $result->fields['ip_address'] . $FIELDEND;
  194.             $exporter_output .= $FIELDSEPARATOR;
  195.             $exporter_output .= $FIELDSTART . $result->fields['admin_id'] . ' ' . $result->fields['admin_name'] . $FIELDEND;
  196.             $exporter_output .= $FIELDSEPARATOR;
  197.             $exporter_output .= $FIELDSTART . $result->fields['page_accessed'] . $FIELDEND;
  198.             $exporter_output .= $FIELDSEPARATOR;
  199.             $exporter_output .= $FIELDSTART . $result->fields['page_parameters'] . $FIELDEND;
  200.             $exporter_output .= $FIELDSEPARATOR;
  201.             $exporter_output .= $FIELDSTART . $result->fields['flagged'] . $FIELDEND;
  202.             $exporter_output .= $FIELDSEPARATOR;
  203.             $exporter_output .= $FIELDSTART . $result->fields['attention'] . $FIELDEND;
  204.             $exporter_output .= $FIELDSEPARATOR;
  205.             $exporter_output .= $FIELDSTART . $result->fields['logmessage'] . $FIELDEND;
  206.             $exporter_output .= $FIELDSEPARATOR;
  207.             $exporter_output .= $FIELDSTART . $postoutput . $FIELDEND;
  208.             $exporter_output .= $LINEBREAK;
  209.           }
  210.           $result->MoveNext();
  211.         }
  212.         if ($format == "HTML")
  213.         {
  214.           $exporter_output .= $NL . "</table>";
  215.         }
  216.         if ($format == "XML")
  217.         {
  218.           $exporter_output .= "</admin_activity_log>\n";
  219.         }
  220.         // theoretically, $i should == $records at this point.
  221.         // status message
  222.         if ($format != "HTML") $messageStack->add($records . TEXT_PROCESSED, 'success');
  223.         // begin streaming file contents
  224.         if ($save_to_file_checked != 1)
  225.         { // not saving to a file, so do regular output
  226.           if ($format == "CSV" || $format == "TXT" || $format == "XML")
  227.           {
  228.             if ($format == "CSV" || $format == "TXT")
  229.             {
  230.               $content_type = 'text/x-csv';
  231.             } elseif ($format == "XML")
  232.             {
  233.               $content_type = 'text/xml; charset=' . CHARSET;
  234.             }
  235.             if (preg_match('/MSIE/', $_SERVER['HTTP_USER_AGENT']))
  236.             {
  237.               header('Content-Type: application/octetstream');
  238. //              header('Content-Type: '.$content_type);
  239. //              header('Content-Disposition: inline; filename="' . $file . '"');
  240.               header('Content-Disposition: attachment; filename=' . $file);
  241.               header("Expires: Mon, 26 Jul 2001 05:00:00 GMT");
  242.               header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  243.               header("Cache-Control: must_revalidate, post-check=0, pre-check=0");
  244.               header("Pragma: public");
  245.               header("Cache-control: private");
  246.             } else
  247.             {
  248.               header('Content-Type: application/x-octet-stream');
  249. //              header('Content-Type: '.$content_type);
  250.               header('Content-Disposition: attachment; filename=' . $file);
  251.               header("Expires: Mon, 26 Jul 2001 05:00:00 GMT");
  252.               header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
  253.               header("Pragma: no-cache");
  254.             }
  255.             session_write_close();
  256.             echo $exporter_output;
  257.             exit();
  258.           } else
  259.           {
  260.             // HTML
  261. ?>
  262. <!doctype html>
  263. <html <?php echo HTML_PARAMS; ?>>
  264. <head>
  265. <meta charset="<?php echo CHARSET; ?>">
  266. <title><?php echo TITLE; ?></title>
  267. <link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
  268. </head>
  269. <body>
  270. <?php
  271.             echo $exporter_output;
  272. ?>
  273. </body>
  274. </html>
  275. <?php
  276.             exit();
  277.           }
  278.         } else
  279.         { //write to file
  280.           //open output file for writing
  281.           $f = fopen(DIR_FS_ADMIN_ACTIVITY_EXPORT . $file, 'w');
  282.           if ($f) {
  283.             fwrite($f, $exporter_output);
  284.             fclose($f);
  285.             //open output file for readback
  286.             $readback = file_get_contents(DIR_FS_ADMIN_ACTIVITY_EXPORT . $file);
  287.           }
  288.           if ($readback !== FALSE && $readback == $exporter_output) {
  289.             $messageStack->add_session(SUCCESS_EXPORT_ADMIN_ACTIVITY_LOG . $file, 'success');
  290.           } else {
  291.             $messageStack->add_session(FAILURE_EXPORT_ADMIN_ACTIVITY_LOG . $file, 'error');
  292.           }
  293.           unset($f);
  294.         } // endif $save_to_file
  295.       } //end if $records for processing not 0
  296.       zen_redirect(zen_href_link(FILENAME_ADMIN_ACTIVITY));
  297.       break;
  298.  
  299. // clean out the admin_activity_log
  300.     case 'clean_admin_activity_log':
  301.       if (isset($_POST['confirm']) && $_POST['confirm'] == 'yes')
  302.       {
  303.         $zco_notifier->notify('NOTIFY_ADMIN_ACTIVITY_LOG_RESET');
  304.         $messageStack->add_session(SUCCESS_CLEAN_ADMIN_ACTIVITY_LOG, 'success');
  305.         unset($_SESSION['reset_admin_activity_log']);
  306.         zen_redirect(zen_href_link(FILENAME_ADMIN_ACTIVITY));
  307.       } else {
  308.         $confirmation_needed = TRUE;
  309.       }
  310.     break;
  311.  
  312.   } //end switch / case
  313. } //endif $action
  314. ?>
  315. <?php echo '<!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN">'; ?>
  316. <html <?php
  317. echo HTML_PARAMS;
  318. ?>>
  319. <head>
  320. <meta http-equiv="Content-Type"  content="text/html; charset=<?php echo CHARSET; ?>">
  321. <title><?php echo TITLE; ?></title>
  322. <link rel="stylesheet" type="text/css" href="includes/stylesheet.css">
  323. <link rel="stylesheet" type="text/css" href="includes/cssjsmenuhover.css" media="all" id="hoverJS">
  324. <script language="javascript" src="includes/menu.js"></script>
  325. <script language="javascript" src="includes/general.js"></script>
  326. <script type="text/javascript">
  327.   <!--
  328.   function init()
  329.   {
  330.     cssjsmenu('navbar');
  331.     if (document.getElementById)
  332.     {
  333.       var kill = document.getElementById('hoverJS');
  334.       kill.disabled = true;
  335.     }
  336.   }
  337.   // -->
  338. </script>
  339. </head>
  340. <body onload="init()">
  341. <!-- header //-->
  342. <?php
  343. require (DIR_WS_INCLUDES . 'header.php');
  344. ?>
  345. <!-- header_eof //-->
  346.  
  347. <!-- body //-->
  348. <table border="0" width="100%" cellspacing="2" cellpadding="2">
  349.   <tr>
  350.     <!-- body_text //-->
  351.     <td width="100%" valign="top">
  352.     <table border="0" width="100%" cellspacing="0" cellpadding="0">
  353.       <tr>
  354.         <td width="100%">
  355.         <table border="0" width="100%" cellspacing="0" cellpadding="0">
  356.           <tr>
  357.             <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
  358.             <td class="pageHeading" align="right"><?php echo zen_draw_separator('pixel_trans.gif', HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>
  359.           </tr>
  360.         </table>
  361.         </td>
  362.       </tr>
  363.       <tr>
  364.         <td><?php echo zen_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
  365.       </tr>
  366.  
  367. <?php if ($action == '') { ?>
  368.       <tr><?php echo zen_draw_form('export', FILENAME_ADMIN_ACTIVITY, 'action=save', 'post'); //, 'onsubmit="return check_form(export);"');   ?>
  369.         <td align="center">
  370.         <table border="0" cellspacing="0" cellpadding="2">
  371.         <tr><td><h2><?php echo HEADING_SUB1; ?></h2></td></tr>
  372.           <tr>
  373.             <td class="main" colspan="2"><?php echo TEXT_INSTRUCTIONS; ?></td>
  374.           </tr>
  375.           <tr>
  376.             <td class="main"><strong><?php echo TEXT_ACTIVITY_EXPORT_FILTER; ?></strong><br /><?php echo zen_draw_pull_down_menu('filter', $filter_options, $post_filter); ?></td>
  377.           </tr>
  378.           <tr>
  379.             <td colspan="2"><?php echo zen_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
  380.           </tr>
  381.           <tr>
  382.             <td class="main"><strong><?php echo TEXT_ACTIVITY_EXPORT_FORMAT; ?></strong><br /><?php echo zen_draw_pull_down_menu('format', $available_export_formats, $format); ?></td>
  383.           </tr>
  384.           <tr>
  385.             <td colspan="2"><?php echo zen_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
  386.           </tr>
  387.           <tr>
  388.             <td class="main"><strong><?php echo TEXT_ACTIVITY_EXPORT_FILENAME; ?></strong><br /><?php echo zen_draw_input_field('filename', htmlspecialchars($file, ENT_COMPAT, CHARSET, TRUE), ' size="60"'); ?></td>
  389.           </tr>
  390.           <tr>
  391.             <td colspan="2"><?php echo zen_draw_separator('pixel_trans.gif', '1', '10'); ?></td>
  392.           </tr>
  393.           <tr>
  394.             <td class="main"><?php echo zen_draw_checkbox_field('savetofile', '1', $save_to_file_checked); ?> <strong><?php echo TEXT_ACTIVITY_EXPORT_SAVETOFILE; ?></strong><br />
  395.               &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<strong><?php echo TEXT_ACTIVITY_EXPORT_DEST; ?></strong> <em><?php echo DIR_FS_ADMIN_ACTIVITY_EXPORT; ?></em>
  396.               </td>
  397.           </tr>
  398.           <tr>
  399.             <td class="main" align="right"><?php echo zen_image_submit('button_go.gif', IMAGE_GO) . '&nbsp;&nbsp;<a href="' . zen_href_link(FILENAME_ADMIN_ACTIVITY) . '">' . zen_image_button('button_cancel.gif', IMAGE_CANCEL) . '</a>'; ?></td>
  400.           </tr>
  401.         <tr><td><div style="width:100%;max-width:800px"><?php echo TEXT_INTERPRETING_LOG_DATA; ?></div></td></tr>
  402.         </table>
  403.         </td>
  404.         </form>
  405.       </tr>
  406.  
  407. <!-- bof: reset admin_activity_log -->
  408.       <tr>
  409.         <td align="center"><table border="0" cellspacing="0" cellpadding="2">
  410.       <tr><td><h2><?php echo HEADING_SUB2; ?></h2></td></tr>
  411.           <tr>
  412.             <td class="<?php echo ($_SESSION['reset_admin_activity_log'] == true ? "alert" : "main"); ?>" align="left" valign="top"><?php echo TEXT_INFO_ADMIN_ACTIVITY_LOG; ?></td>
  413.             <td class="main" align="right" valign="middle"><?php echo '<a href="' . zen_href_link(FILENAME_ADMIN_ACTIVITY, 'action=clean_admin_activity_log') . '">' . zen_image_button('button_reset.gif', IMAGE_RESET) . '</a>'; ?></td>
  414.           </tr>
  415.         </table></td>
  416.       </tr>
  417. <!-- eof: reset admin_activity_log -->
  418.  
  419. <?php } elseif ($confirmation_needed) { ?>
  420.   <tr><td><?php echo TEXT_ADMIN_LOG_PLEASE_CONFIRM_ERASE; ?><?php echo zen_draw_form('admin_activity_erase', FILENAME_ADMIN_ACTIVITY, 'action=clean_admin_activity_log'); echo zen_image_submit('button_reset.gif', IMAGE_RESET); ?><input type="hidden" name="confirm" value="yes" /></form></td></tr>
  421.  
  422. <?php } ?>
  423.         <!-- body_text_eof //-->
  424.     </table>
  425.     <!-- body_eof //--> <!-- footer //-->
  426. <?php require (DIR_WS_INCLUDES . 'footer.php'); ?>
  427. <!-- footer_eof //--> <br />
  428.  
  429. </body>
  430. </html>
  431. <?php require (DIR_WS_INCLUDES . 'application_bottom.php'); ?>
  432.  


cron