403Webshell
Server IP : 173.209.174.21  /  Your IP : 216.73.216.89
Web Server : Apache/2.4.58 (Ubuntu)
System : Linux wcfs-server 6.8.0-124-generic #124-Ubuntu SMP PREEMPT_DYNAMIC Tue May 26 13:00:45 UTC 2026 x86_64
User : nodor ( 1000)
PHP Version : 8.3.6
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : OFF
Directory :  /var/www/thelittlebigshow/app/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/thelittlebigshow/app/vote.php
<?php
session_start();
include_once("db.php");
include_once("voting_helpers.php");

function public_town_only($address) {
    $address = trim((string) $address);
    if ($address === '') {
        return 'Not listed';
    }

    if (strpos($address, ',') !== false) {
        $address = trim(explode(',', $address)[0]);
    }

    if (preg_match('/\d/', $address)) {
        return 'Not listed';
    }

    return $address;
}

$scoreOptions = [
    'fit_finish' => 'Fit and Finish',
    'paint' => 'Paint',
    'interior' => 'Interior',
    'overall_look' => 'Overall Look',
    'stance' => 'Stance',
    'engine_bay' => 'Engine Bay',
    'wheels_tires' => 'Wheels and Tires',
    'cleanliness_detail' => 'Cleanliness and Detail',
];

function ensureVoteScoreColumns($conn)
{
    $columns = [];
    $result = mysqli_query($conn, "SHOW COLUMNS FROM `vote`");
    if (!$result) {
        return false;
    }

    while ($row = mysqli_fetch_assoc($result)) {
        $columns[$row['Field']] = true;
    }

    $neededColumns = [
        'fit_finish' => "TINYINT UNSIGNED DEFAULT NULL",
        'paint' => "TINYINT UNSIGNED DEFAULT NULL",
        'interior' => "TINYINT UNSIGNED DEFAULT NULL",
        'overall_look' => "TINYINT UNSIGNED DEFAULT NULL",
        'stance' => "TINYINT UNSIGNED DEFAULT NULL",
        'engine_bay' => "TINYINT UNSIGNED DEFAULT NULL",
        'wheels_tires' => "TINYINT UNSIGNED DEFAULT NULL",
        'cleanliness_detail' => "TINYINT UNSIGNED DEFAULT NULL",
        'total_score' => "SMALLINT UNSIGNED DEFAULT NULL",
        'judge_notes' => "TEXT NULL",
        'created_at' => "TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP",
    ];

    foreach ($neededColumns as $column => $definition) {
        if (!isset($columns[$column])) {
            $sql = "ALTER TABLE `vote` ADD COLUMN `$column` $definition";
            if (!mysqli_query($conn, $sql)) {
                return false;
            }
        }
    }

    return true;
}

$settingSql = "SELECT * FROM `settings` WHERE id = 1";
$settingQuery = mysqli_query($conn, $settingSql);
$setting = mysqli_fetch_assoc($settingQuery);
$votingSettings = getVotingSettings($conn);

$vehicle = null;
$vehicleId = filter_input(INPUT_GET, 'id', FILTER_VALIDATE_INT);
$judgeCookieName = $vehicleId ? "judged_" . $vehicleId : "";
$hasJudgedVehicle = $judgeCookieName !== "" && isset($_COOKIE[$judgeCookieName]);
$adminOverride = isset($_GET['override']) && $_GET['override'] === '1' && isset($_SESSION['user_logged_in']) && $_SESSION['user_logged_in'] == true;
$votingClosed = isVotingClosed($votingSettings);
$allowUnscoredOverride = $adminOverride && !empty($votingSettings['allow_unscored_after_close']);
$vehicleScoreCount = 0;
$closedOverridePassword = trim($votingSettings['closed_override_password'] ?? '');
$closedOverrideInput = trim($_POST['closed_override_password'] ?? '');
$hasClosedPasswordOverride = $votingClosed && $closedOverridePassword !== '' && hash_equals($closedOverridePassword, $closedOverrideInput);

if ($vehicleId) {
    $vehicleStmt = mysqli_prepare($conn, "SELECT * FROM vehicles WHERE id = ?");
    mysqli_stmt_bind_param($vehicleStmt, "i", $vehicleId);
    mysqli_stmt_execute($vehicleStmt);
    $vehicleResult = mysqli_stmt_get_result($vehicleStmt);
    $vehicle = mysqli_fetch_assoc($vehicleResult);

    $scoreCountStmt = mysqli_prepare($conn, "SELECT COUNT(*) AS score_count FROM vote WHERE vehicle_id = ?");
    mysqli_stmt_bind_param($scoreCountStmt, "i", $vehicleId);
    mysqli_stmt_execute($scoreCountStmt);
    $scoreCountResult = mysqli_stmt_get_result($scoreCountStmt);
    $scoreCountRow = mysqli_fetch_assoc($scoreCountResult);
    $vehicleScoreCount = (int) ($scoreCountRow['score_count'] ?? 0);
}

if ($vehicle && $_SERVER['REQUEST_METHOD'] === 'POST') {
    if ($votingClosed && !$hasClosedPasswordOverride && !($allowUnscoredOverride && $vehicleScoreCount === 0)) {
        $_SESSION['err'] = "Voting is closed. Enter the admin override password to submit this score.";
    } elseif (!$adminOverride && $hasJudgedVehicle) {
        $_SESSION['err'] = "You have already scored this vehicle.";
    } elseif (!ensureVoteScoreColumns($conn)) {
        $_SESSION['err'] = "The scoring fields could not be prepared. Please contact an admin.";
    } else {
        $notes = trim($_POST["judge_notes"] ?? '');
        $scores = [];
        $totalScore = 0;

        foreach ($scoreOptions as $field => $label) {
            $score = filter_input(INPUT_POST, $field, FILTER_VALIDATE_INT, [
                'options' => ['min_range' => 1, 'max_range' => 10],
            ]);

            if ($score === false || $score === null) {
                $_SESSION['err'] = "Please score every category from 1 to 10.";
                break;
            }

            $scores[$field] = $score;
            $totalScore += $score;
        }

        if (!isset($_SESSION['err'])) {
            $newVoteCount = (int) $vehicle['vote_status'] + 1;
            $updateStmt = mysqli_prepare($conn, "UPDATE vehicles SET vote_status = ? WHERE id = ?");
            mysqli_stmt_bind_param($updateStmt, "ii", $newVoteCount, $vehicleId);
            mysqli_stmt_execute($updateStmt);

            $voteMarker = "judge_cookie";
            $voteInsertStmt = mysqli_prepare(
                $conn,
                "INSERT INTO vote
                    (vehicle_id, password, fit_finish, paint, interior, overall_look, stance, engine_bay, wheels_tires, cleanliness_detail, total_score, judge_notes)
                 VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"
            );
            mysqli_stmt_bind_param(
                $voteInsertStmt,
                "isiiiiiiiiis",
                $vehicleId,
                $voteMarker,
                $scores['fit_finish'],
                $scores['paint'],
                $scores['interior'],
                $scores['overall_look'],
                $scores['stance'],
                $scores['engine_bay'],
                $scores['wheels_tires'],
                $scores['cleanliness_detail'],
                $totalScore,
                $notes
            );
            mysqli_stmt_execute($voteInsertStmt);

            setcookie($judgeCookieName, "1", time() + (86400 * 365), "/");
            $_SESSION['msg'] = "Scores submitted. Total score: " . $totalScore . " out of 80.";
            header("Location: vote.php?id=" . $vehicleId);
            exit;
        }
    }
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Vehicle Scoring</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css" />
    <link rel="stylesheet" href="style.css">
    <style>
        body {
            height: auto !important;
            min-height: 100vh;
        }

        .main {
            margin-top: 40px;
            margin-bottom: 40px;
            padding-bottom: 32px;
        }

        .vehicle-summary {
            color: #fff;
            font-size: 18px;
        }

        .score-card {
            background: rgba(255, 255, 255, 0.08);
            border: 1px solid rgba(206, 126, 0, 0.45);
            border-radius: 8px;
            margin-bottom: 16px;
            padding: 14px;
        }

        .score-title {
            color: #CE7E00;
            font-weight: 700;
            margin-bottom: 10px;
        }

        .score-options {
            display: grid;
            grid-template-columns: repeat(5, 1fr);
            gap: 8px;
        }

        .score-options input {
            position: absolute;
            opacity: 0;
        }

        .score-options label {
            align-items: center;
            background: #fff;
            border: 2px solid transparent;
            border-radius: 6px;
            color: #111;
            cursor: pointer;
            display: flex;
            font-size: 16px;
            height: 42px;
            justify-content: center;
            margin: 0 !important;
        }

        .score-options input:checked + label {
            background: #CE7E00;
            border-color: #fff;
            color: #000;
        }

        textarea.form-control {
            min-height: 95px;
        }

        .btn-warning {
            color: #000;
            font-weight: 700;
            min-height: 48px;
            width: 100%;
        }

        @media screen and (max-width: 550px) {
            .main {
                margin-top: 24px;
            }

            h1 {
                font-size: 28px !important;
            }
        }
    </style>
</head>
<body>
    <?php if ($vehicle) { ?>
        <div class="container">
            <div class="main">
                <h1 class="text-center">Vehicle Scoring</h1>

                <div class="text-center mb-4">
                    <img src="./admin/assets/upload/<?php echo htmlspecialchars($setting['logo'] ?? '', ENT_QUOTES); ?>" alt="" class="card-img-top" style="width:180px; height:180px; margin:auto;">
                    <p class="vehicle-summary mt-3 mb-0">
                        #<?php echo htmlspecialchars($vehicle['id'], ENT_QUOTES); ?>
                        <?php echo htmlspecialchars($vehicle['vehicle_year'] . " " . $vehicle['vehicle_maker'] . " " . $vehicle['vehicle_model'], ENT_QUOTES); ?>
                    </p>
                    <p class="vehicle-summary mb-0">
                        <?php echo htmlspecialchars($vehicle['category'] ?? '', ENT_QUOTES); ?>
                    </p>
                    <p class="vehicle-summary mb-0">
                        Town: <?php echo htmlspecialchars(public_town_only($vehicle['address'] ?? ''), ENT_QUOTES); ?>
                    </p>
                </div>

                <div class="row">
                    <div class="col-md-8 offset-md-2">
                        <?php if (isset($_SESSION['msg'])) { ?>
                            <div class="alert alert-success alert-dismissible fade show" role="alert">
                                <?php echo htmlspecialchars($_SESSION['msg'], ENT_QUOTES); ?>
                                <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                                    <span aria-hidden="true">&times;</span>
                                </button>
                            </div>
                            <?php unset($_SESSION["msg"]); ?>
                        <?php } ?>

                        <?php if (isset($_SESSION['err'])) { ?>
                            <div class="alert alert-danger alert-dismissible fade show" role="alert">
                                <?php echo htmlspecialchars($_SESSION['err'], ENT_QUOTES); ?>
                                <button type="button" class="close" data-dismiss="alert" aria-label="Close">
                                    <span aria-hidden="true">&times;</span>
                                </button>
                            </div>
                            <?php unset($_SESSION["err"]); ?>
                        <?php } ?>

                        <?php if (!$adminOverride && $hasJudgedVehicle) { ?>
                            <p class="text-danger text-center mt-2">You have already scored this vehicle.</p>
                        <?php } else { ?>
                            <form action="" method="POST">
                                <?php if ($votingClosed && !($allowUnscoredOverride && $vehicleScoreCount === 0)) { ?>
                                    <div class="alert alert-warning text-center" role="alert">
                                        Voting is closed<?php echo formatVotingCloseTime($votingSettings) ? " as of " . htmlspecialchars(formatVotingCloseTime($votingSettings), ENT_QUOTES) : ""; ?>. Admin override is required.
                                    </div>
                                    <div class="form-group">
                                        <label for="closed_override_password">Admin Override Password</label>
                                        <input type="password" class="form-control" id="closed_override_password" name="closed_override_password" required placeholder="Enter override password">
                                    </div>
                                <?php } ?>

                                <?php foreach ($scoreOptions as $field => $label) { ?>
                                    <div class="score-card">
                                        <div class="score-title"><?php echo htmlspecialchars($label, ENT_QUOTES); ?></div>
                                        <div class="score-options">
                                            <?php for ($score = 1; $score <= 10; $score++) { ?>
                                                <?php $inputId = $field . "_" . $score; ?>
                                                <input type="radio" id="<?php echo $inputId; ?>" name="<?php echo $field; ?>" value="<?php echo $score; ?>" required>
                                                <label for="<?php echo $inputId; ?>"><?php echo $score; ?></label>
                                            <?php } ?>
                                        </div>
                                    </div>
                                <?php } ?>

                                <div class="form-group">
                                    <label for="judge_notes">Notes</label>
                                    <textarea class="form-control" id="judge_notes" name="judge_notes" placeholder="Optional judge notes"></textarea>
                                </div>

                                <button type="submit" name="vote" class="btn btn-warning">Submit Scores</button>
                            </form>
                        <?php } ?>
                    </div>
                </div>
            </div>
        </div>
    <?php } else { ?>
        <div class="text-center mt-5">
            <p>NO DATA FOUND!!!!</p>
            <a href="index.php" class="btn btn-info">Go To Home</a>
        </div>
    <?php } ?>

    <script src="https://cdn.jsdelivr.net/npm/jquery@3.7.1/dist/jquery.slim.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

Youez - 2016 - github.com/yon3zu
LinuXploit