403Webshell
Server IP : 93.86.61.54  /  Your IP : 216.73.216.60
Web Server : Apache/2.4.62 (Ubuntu)
System : Linux rasin.ddns.net 6.8.0-124-generic #124~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue May 26 21:05:19 UTC x86_64
User : www-data ( 33)
PHP Version : 8.4.22
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /var/www/html/projects/meteo-ca/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/html/projects/meteo-ca/dashboard.php
<?php
session_start();
require 'db.php';
require 'activity_log.php';

if (!isset($_SESSION["username"])) {
    header("Location: login.php");
    exit();
}

$username = $_SESSION["username"];


// Query 01: Temperature values from sensors 
$temperature_data = [];
$result = $conn->query("
    SELECT sensor_id, created_at AS sensor_date, temperature, humidity
    FROM temperature_logs
    WHERE sensor_id = 'esp32-bme280-01'
    ORDER BY sensor_date DESC LIMIT 1000
");
$i=0;
$range_date_2 = '';
while ($row = $result->fetch_assoc()) {
    $temperature_data['sdates'][] = $row['sensor_date'];
	if(!($i>0)){
		$range_date_2 = $row['sensor_date'];
		$i = $i + 1;
	}
    $temperature_data['temp'][] = $row['temperature'];
	$temperature_data['humidity'][] = $row['humidity'];
}


$time_range_date_2 = strtotime($range_date_2);
$time_range_date_1 = $time_range_date_2 - (15 * 60);
$range_date_1 = date("Y-m-d H:i:s", $time_range_date_1);

// Query 1: User registrations per day
$user_data = [];
$result = $conn->query("
    SELECT DATE(created_at) AS reg_date, COUNT(*) AS total
    FROM users
    GROUP BY DATE(created_at)
    ORDER BY reg_date ASC
");
while ($row = $result->fetch_assoc()) {
    $user_data['dates'][] = $row['reg_date'];
    $user_data['totals'][] = $row['total'];
}

// Query 2: Activity log by action type
$activity_data = [];
$result2 = $conn->query("
    SELECT action, COUNT(*) AS total
    FROM activity_log
    GROUP BY action
    ORDER BY total DESC
");
while ($row = $result2->fetch_assoc()) {
    $activity_data['actions'][] = $row['action'];
    $activity_data['totals'][] = $row['total'];
}
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Kontrolni panel</title>
    <!-- <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet"> -->
	<link rel="stylesheet" type="text/css" href="css/bootstrap533.css">
    <script src="https://cdn.plot.ly/plotly-latest.min.js"></script>
	<!-- <script type="text/javascript" src="css/plotly.js"></script> -->
</head>
<body class="bg-light">
<div class="container mt-5">
    <div class="card shadow p-4 mb-4">
        <h3 class="text-center mb-4">📊 Kontrolni panel</h3>
        <div class="d-flex justify-content-between mb-3">
			<p><strong>Username:</strong> <?php echo htmlspecialchars($username); ?></p>
            <a href="profile.php" class="btn btn-secondary">Profil korisnika</a>
            <a href="logout.php" class="btn btn-danger">Odjava</a>
        </div>
    </div>


    <div class="card shadow p-4 mb-4">
        <h5 class="mb-3">Temperatura</h5>
        <div id="temperatureGraph" style="height:400px;"></div>
    </div>



    <div class="card shadow p-4">
        <h5 class="mb-3">Logovane aktivnosti po tipu akcije</h5>
        <div id="activityGraph" style="height:400px;"></div>
    </div>
</div>

<script>


    // Temperature sensor data
    const sensorDates = <?php echo json_encode($temperature_data['sdates']); ?>;
    const sensorTemp = <?php echo json_encode($temperature_data['temp']); ?>;
	const sensorHumidity = <?php echo json_encode($temperature_data['humidity']); ?>;
	
	const rangeDate1 = <?php echo json_encode($range_date_1); ?>;
	const rangeDate2 = <?php echo json_encode($range_date_2); ?>;


    const tempTrace = {
        x: sensorDates,
        y: sensorTemp,
        mode: 'lines+markers',
        name: 'Temperatura (&#8451;)',
        line: { color: 'rgb(0, 123, 255)', width: 3 },
		
        marker: { size: 6 }
    };
	
	
    const humidityTrace = {
        x: sensorDates,
        y: sensorHumidity,
        mode: 'lines+markers',
        name: 'Relativna vlažnost (%)',
        line: { color: '#72b043', width: 3 },
		
        marker: { size: 6 }
    };


    const tempLayout = {
        title: 'Senzorske vrednosti',
        xaxis: { range: [rangeDate1,rangeDate2], title: 'Vreme' },
        yaxis: { title: 'Senzorske vrednosti', rangemode: 'tozero' },
		
        plot_bgcolor: '#f8f9fa',
        paper_bgcolor: '#f8f9fa'
    };

    Plotly.newPlot('temperatureGraph', [tempTrace,humidityTrace], tempLayout);





 

    // Activity log data
    const activityActions = <?php echo json_encode($activity_data['actions']); ?>;
    const activityTotals = <?php echo json_encode($activity_data['totals']); ?>;

    const activityTrace = {
        x: activityActions,
        y: activityTotals,
        type: 'lines+markers',
        name: 'Broj aktivnosti',
        marker: { color: 'rgba(40,167,69,0.7)' }
    };

    const activityLayout = {
        title: 'Prikaz logovanih aktivnosti',
        xaxis: { title: 'Tip akcije' },
        yaxis: { title: 'Broj pojava', rangemode: 'tozero' },
        plot_bgcolor: '#f8f9fa',
        paper_bgcolor: '#f8f9fa'
    };

    Plotly.newPlot('activityGraph', [activityTrace], activityLayout);
</script>
</body>
</html>

Youez - 2016 - github.com/yon3zu
LinuXploit