Ejemplo n.º 1
0
 * @package   Administration
 * @author    Thorsten Rinne <*****@*****.**>
 * @copyright 2003-2010 phpMyFAQ Team
 * @license   http://www.mozilla.org/MPL/MPL-1.1.html Mozilla Public License Version 1.1
 * @link      http://www.phpmyfaq.de
 * @since     2003-02-24
 */
if (!defined('IS_VALID_PHPMYFAQ')) {
    header('Location: http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['SCRIPT_NAME']));
    exit;
}
if ($permission['viewlog']) {
    require_once PMF_ROOT_DIR . '/inc/Session.php';
    $sid = PMF_Filter::filterInput(INPUT_GET, 'id', FILTER_VALIDATE_INT);
    printf('<h2>%s "<span style="color: Red;">%d</span>"</h2>', $PMF_LANG['ad_sess_session'], $sid);
    $session = new PMF_Session();
    $time = $session->getTimeFromSessionId($sid);
    $trackingdata = explode("\n", file_get_contents(PMF_ROOT_DIR . '/data/tracking' . date('dmY', $time)));
    ?>
    <table class="list">
    <tfoot>
	    <tr>
            <td colspan="2"><a href="?action=viewsessions"><?php 
    print $PMF_LANG["ad_sess_back"];
    ?>
</a></td>
        </tr>
    </tfoot>
    <tbody>
<?php 
    $num = 0;
 /**
  * Deletes the CurrentUser from the session. The user
  * will be logged out. Return true on success, otherwise false.
  *
  * @param boolean $deleteCookie
  *
  * @return boolean
  */
 public function deleteFromSession($deleteCookie = false)
 {
     // delete CSRF Token
     $this->deleteCsrfTokenFromSession();
     // delete CurrentUser object from session
     $_SESSION[PMF_SESSION_CURRENT_USER] = null;
     unset($_SESSION[PMF_SESSION_CURRENT_USER]);
     // log CurrentUser out
     $this->_loggedIn = false;
     // delete session-ID
     $update = sprintf("\n            UPDATE\n                %sfaquser\n            SET\n                session_id = NULL\n                %s\n            WHERE\n                user_id = %d", PMF_Db::getTablePrefix(), $deleteCookie ? ', remember_me = NULL' : '', $this->getUserId());
     $res = $this->config->getDb()->query($update);
     if (!$res) {
         $this->errors[] = $this->config->getDb()->error();
         return false;
     }
     if ($deleteCookie) {
         PMF_Session::setCookie(PMF_Session::PMF_COOKIE_NAME_REMEMBERME);
     }
     session_destroy();
     return true;
 }
Ejemplo n.º 3
0
//
// Use mbstring extension if available and when possible
//
$valid_mb_strings = array('ja', 'en', 'uni');
$mbLanguage = $PMF_LANG['metaLanguage'] != 'ja' ? 'uni' : $PMF_LANG['metaLanguage'];
if (function_exists('mb_language') && in_array($mbLanguage, $valid_mb_strings)) {
    mb_language($mbLanguage);
    mb_internal_encoding('utf-8');
}
//
// Found a session ID in _GET or _COOKIE?
//
$sid = null;
$sid_get = PMF_Filter::filterInput(INPUT_GET, PMF_GET_KEY_NAME_SESSIONID, FILTER_VALIDATE_INT);
$sid_cookie = PMF_Filter::filterInput(INPUT_COOKIE, PMF_COOKIE_NAME_SESSIONID, FILTER_VALIDATE_INT);
$faqsession = new PMF_Session();
// Note: do not track internal calls
$internal = false;
if (isset($_SERVER['HTTP_USER_AGENT'])) {
    $internal = strpos($_SERVER['HTTP_USER_AGENT'], 'phpMyFAQ%2F') === 0;
}
if (!$internal) {
    if (is_null($sid_get) && is_null($sid_cookie)) {
        // Create a per-site unique SID
        $faqsession->userTracking('new_session', 0);
    } else {
        if (!is_null($sid_cookie)) {
            $faqsession->checkSessionId($sid_cookie, $_SERVER['REMOTE_ADDR']);
        } else {
            $faqsession->checkSessionId($sid_get, $_SERVER['REMOTE_ADDR']);
        }
Ejemplo n.º 4
0
//
// Use mbstring extension if available and when possible
//
$valid_mb_strings = array('ja', 'en', 'uni');
$mbLanguage = 'utf-8' == strtolower($PMF_LANG['metaCharset']) && $PMF_LANG['metaLanguage'] != 'ja' ? 'uni' : $PMF_LANG['metaLanguage'];
if (function_exists('mb_language') && in_array($mbLanguage, $valid_mb_strings)) {
    mb_language($mbLanguage);
    mb_internal_encoding($PMF_LANG['metaCharset']);
}
//
// Found a session ID in _GET or _COOKIE?
//
$sid = null;
$sid_get = PMF_Filter::filterInput(INPUT_GET, PMF_GET_KEY_NAME_SESSIONID, FILTER_VALIDATE_INT);
$sid_cookie = PMF_Filter::filterInput(INPUT_COOKIE, PMF_COOKIE_NAME_SESSIONID, FILTER_VALIDATE_INT);
$faqsession = new PMF_Session();
// Note: do not track internal calls
$internal = false;
if (isset($_SERVER['HTTP_USER_AGENT'])) {
    $internal = strpos($_SERVER['HTTP_USER_AGENT'], 'phpMyFAQ%2F') === 0;
}
if (!$internal) {
    if (is_null($sid_get) && is_null($sid_cookie)) {
        // Create a per-site unique SID
        $faqsession->userTracking('new_session', 0);
    } else {
        if (!is_null($sid_cookie)) {
            $faqsession->checkSessionId($sid_cookie, $_SERVER['REMOTE_ADDR']);
        } else {
            $faqsession->checkSessionId($sid_get, $_SERVER['REMOTE_ADDR']);
        }
Ejemplo n.º 5
0
 * @author    Thorsten Rinne <*****@*****.**>
 * @copyright 2003-2009 phpMyFAQ Team
 * @license   http://www.mozilla.org/MPL/MPL-1.1.html Mozilla Public License Version 1.1
 * @link      http://www.phpmyfaq.de
 * @since     2003-02-24
 */
if (!defined('IS_VALID_PHPMYFAQ')) {
    header('Location: http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['SCRIPT_NAME']));
    exit;
}
if ($permission['viewlog']) {
    $perpage = 50;
    $day = PMF_Filter::filterInput(INPUT_POST, 'day', FILTER_VALIDATE_INT);
    $firstHour = mktime(0, 0, 0, date('m', $day), date('d', $day), date('Y', $day));
    $lastHour = mktime(23, 59, 59, date('m', $day), date('d', $day), date('Y', $day));
    $session = new PMF_Session();
    $sessiondata = $session->getSessionsbyDate($firstHour, $lastHour);
    ?>
	<h2><?php 
    print "Session " . date("Y-m-d", $day);
    ?>
</h2>
    <table class="list">
    <thead>
        <tr>
            <th class="list">IP</th>
            <th class="list">&nbsp;</th>
            <th class="list">Session</th>
        </tr>
    </thead>
    <tbody>
Ejemplo n.º 6
0
}
//Load plurals support for selected language
$plr = new PMF_Language_Plurals($PMF_LANG);
//
// Initalizing static string wrapper
//
PMF_String::init($languageCode);
// Check captcha
$captcha = new PMF_Captcha($db, $Language);
//$captcha->setSessionId($sids);
// Send headers
$http = PMF_Helper_Http::getInstance();
$http->setContentType('application/json');
$http->addHeader();
// Set session
$faqsession = new PMF_Session($db, $Language);
$network = new PMF_Network();
if (!$network->checkIp($_SERVER['REMOTE_ADDR'])) {
    $message = array('error' => $PMF_LANG['err_bannedIP']);
}
if ('savevoting' !== $action && !$captcha->checkCaptchaCode($code)) {
    $message = array('error' => $PMF_LANG['msgCaptcha']);
}
if (isset($message['error'])) {
    print json_encode($message);
    exit;
}
// Save user generated content
switch ($action) {
    // Comments
    case 'savecomment':
Ejemplo n.º 7
0
 * @category  phpMyFAQ
 * @package   Administration
 * @author    Thorsten Rinne <*****@*****.**>
 * @author    Matteo Scaramuccia <*****@*****.**>
 * @copyright 2003-2011 phpMyFAQ Team
 * @license   http://www.mozilla.org/MPL/MPL-1.1.html Mozilla Public License Version 1.1
 * @link      http://www.phpmyfaq.de
 * @since     2003-02-24
 */
if (!defined('IS_VALID_PHPMYFAQ')) {
    header('Location: http://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['SCRIPT_NAME']));
    exit;
}
printf('<header><h2>%s</h2></header>', $PMF_LANG['ad_stat_sess']);
if ($permission['viewlog']) {
    $session = new PMF_Session($db, $Language);
    $statdelete = PMF_Filter::filterInput(INPUT_POST, 'statdelete', FILTER_SANITIZE_STRING);
    $month = PMF_Filter::filterInput(INPUT_POST, 'month', FILTER_SANITIZE_STRING);
    if (!is_null($statdelete) && !is_null($month)) {
        // Search for related tracking data files and
        // delete them including the sid records in the faqsessions table
        $dir = opendir(PMF_ROOT_DIR . "/data");
        $first = 1.0E+25;
        $last = 0;
        while ($trackingFile = readdir($dir)) {
            // The filename format is: trackingDDMMYYYY
            // e.g.: tracking02042006
            if ($trackingFile != '.' && $trackingFile != '..' && 10 == strpos($trackingFile, $month)) {
                $candidateFirst = PMF_Date::getTrackingFileDate($trackingFile);
                $candidateLast = PMF_Date::getTrackingFileDate($trackingFile, true);
                if ($candidateLast > 0 && $candidateLast > $last) {
Ejemplo n.º 8
0
 * @license   http://www.mozilla.org/MPL/2.0/ Mozilla Public License Version 2.0
 * @link      http://www.phpmyfaq.de
 * @since     2013-02-05
 */
if (!defined('IS_VALID_PHPMYFAQ')) {
    $protocol = 'http';
    if (isset($_SERVER['HTTPS']) && strtoupper($_SERVER['HTTPS']) === 'ON') {
        $protocol = 'https';
    }
    header('Location: ' . $protocol . '://' . $_SERVER['HTTP_HOST'] . dirname($_SERVER['SCRIPT_NAME']));
    exit;
}
$faqTableInfo = $faqConfig->getDb()->getTableStatus();
$templateVars = array('PMF_LANG' => $PMF_LANG, 'dashboardArticles' => $faqTableInfo[PMF_Db::getTablePrefix() . "faqdata"], 'dashboardComments' => $faqTableInfo[PMF_Db::getTablePrefix() . "faqcomments"], 'dashboardNews' => $faqTableInfo[PMF_Db::getTablePrefix() . "faqnews"], 'dashboardOpenQuestions' => $faqTableInfo[PMF_Db::getTablePrefix() . "faqquestions"], 'dashboardUsers' => $faqTableInfo[PMF_Db::getTablePrefix() . 'faquser'] - 1, 'dashboardVisits' => $faqTableInfo[PMF_Db::getTablePrefix() . 'faqsessions'], 'enableUserTracking' => $faqConfig->get('main.enableUserTracking'), 'inMaintenanceMode' => $faqConfig->get('main.maintenanceMode'), 'onlineVerificationActive' => false, 'onlineVerificationError' => false, 'updateCheckActive' => false);
if ($faqConfig->get('main.enableUserTracking')) {
    $session = new PMF_Session($faqConfig);
    $visits = $session->getLast30DaysVisits();
    $templateVars['visitsData'] = implode(',', $visits);
    unset($session, $visits);
}
// Perform update check
$version = PMF_Filter::filterInput(INPUT_POST, 'param', FILTER_SANITIZE_STRING);
if (!is_null($version) && $version == 'version') {
    $json = file_get_contents('http://www.phpmyfaq.de/api/version');
    $result = json_decode($json);
    if ($result instanceof stdClass) {
        $installed = $faqConfig->get('main.currentVersion');
        $available = $result->stable;
        $templateVars['updateCheckActive'] = true;
        $templateVars['updateAvailable'] = -1 == version_compare($installed, $available);
        $templateVars['lastestVersion'] = $available;
    </section>

    <?php 
if ($faqConfig->get('main.enableUserTracking')) {
    ?>

    <section class="row-fluid">
        <div class="span12">
            <header>
                <h3><?php 
    echo $PMF_LANG["ad_stat_report_visits"];
    ?>
</h3>
            </header>
            <?php 
    $session = new PMF_Session($faqConfig);
    $visits = $session->getLast30DaysVisits();
    ?>
            <script type="text/javascript" src="../assets/js/plugins/jquery.sparkline.min.js"></script>
            <script type="text/javascript">
                $(function() {
                    var visits = [<?php 
    echo implode(',', $visits);
    ?>
];
                    $('.visits').sparkline(
                        visits, {
                            type: 'bar',
                            barColor: '#fbc372',
                            barWidth: window.innerWidth / 42,
                            height: 200,