PHP WebShell

Текущая директория: /var/www/bitcardoApp/backyard/user/transactions

Просмотр файла: view.php

<?php
// backyard/user/transactions/view.php
include '../common/header.php';

if (!isset($conn)) {
    include_once '../../config/db_config.php';
}

require_once '../../models/dashboard/index.php';

function h($s) { return htmlspecialchars((string)$s, ENT_QUOTES, 'UTF-8'); }

function status_badge($status) {
    $s = strtoupper(trim((string)$status));
    if (in_array($s, ['SUCCESS','COMPLETED','APPROVED'], true)) return 'bg-success text-white';
    if (in_array($s, ['PENDING','PROCESSING','INITIATED','QUEUED'], true)) return 'bg-warning text-dark';
    if (in_array($s, ['FAILED','DECLINED','REJECTED','CANCELLED','CANCELED','ERROR'], true)) return 'bg-danger text-white';
    return 'bg-secondary text-white';
}

function is_pending_like($status): bool {
    $s = strtolower(trim((string)$status));
    return in_array($s, ['pending','processing','queued'], true);
}

// CSRF token
if (empty($_SESSION['csrf_token'])) {
    $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}

$trans_id = isset($_GET['trans_id']) ? (int)$_GET['trans_id'] : 0;
$tx = dash_get_transaction_by_id($conn, $trans_id);
?>
<div class="nk-content nk-content-fluid mt-5">
    <div class="container-xl wide-lg">
        <div class="nk-content-body">

            <div class="nk-block-head">
                <div class="nk-block-between-md g-4">
                    <div class="nk-block-head-content">
                        <h3 class="nk-block-title">Transaction Details</h3>
                        <div class="nk-block-des">
                            <p class="text-muted mb-0">Viewing transaction record.</p>
                        </div>
                    </div>
                    <div class="nk-block-head-content">
                        <a href="../dashboard/index.php" class="btn btn-outline-secondary btn-sm">Back to Dashboard</a>
                    </div>
                </div>
            </div>

            <?php if (!empty($_SESSION['flash_success'])): ?>
                <div class="alert alert-success border">
                    <?= h($_SESSION['flash_success']); ?>
                </div>
                <?php unset($_SESSION['flash_success']); ?>
            <?php endif; ?>

            <?php if (!empty($_SESSION['flash_error'])): ?>
                <div class="alert alert-danger border">
                    <?= h($_SESSION['flash_error']); ?>
                </div>
                <?php unset($_SESSION['flash_error']); ?>
            <?php endif; ?>

            <?php if (!$tx): ?>
                <div class="alert alert-danger border">
                    Transaction not found.
                </div>
            <?php else: ?>
                <?php
                    $badgeClass = status_badge($tx['status'] ?? '');
                    $name = trim(($tx['first_name'] ?? '').' '.($tx['last_name'] ?? ''));
                    if ($name === '') $name = '—';

                    $providerMetaRaw = $tx['provider_meta'] ?? '';
                    $providerMetaPretty = '';
                    if (is_string($providerMetaRaw) && trim($providerMetaRaw) !== '') {
                        $decoded = json_decode($providerMetaRaw, true);
                        if (json_last_error() === JSON_ERROR_NONE) {
                            $providerMetaPretty = json_encode($decoded, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES);
                        } else {
                            $providerMetaPretty = $providerMetaRaw;
                        }
                    }

                    $canApprove = is_pending_like($tx['status'] ?? '') && ((int)($tx['applied'] ?? 0) === 0);
                ?>

                <div class="card card-bordered">
                    <div class="card-inner">
                        <div class="d-flex justify-content-between align-items-start flex-wrap gap-2">
                            <div>
                                <h5 class="mb-1">#<?= h($tx['trans_id']); ?></h5>
                                <div class="small text-muted">
                                    Created: <?= h($tx['created_at'] ?? '—'); ?>
                                </div>
                            </div>
                            <div class="d-flex gap-2 align-items-center">
                                <span class="badge <?= $badgeClass; ?> px-3 py-2">
                                    <?= h($tx['status'] ?? '—'); ?>
                                </span>

                                <?php if ($canApprove): ?>
                                    <form method="post" action="approve.php" class="m-0">
                                        <input type="hidden" name="trans_id" value="<?= h($tx['trans_id']); ?>">
                                        <input type="hidden" name="csrf_token" value="<?= h($_SESSION['csrf_token']); ?>">
                                        <button type="submit" class="btn btn-sm btn-success">
                                            Approve &amp; Credit Wallet
                                        </button>
                                    </form>
                                <?php endif; ?>
                            </div>
                        </div>

                        <hr class="my-3">

                        <div class="row g-3">
                            <div class="col-md-6">
                                <div class="border rounded-4 p-3 h-100">
                                    <h6 class="mb-2">User</h6>
                                    <div class="small text-muted">Name</div>
                                    <div class="mb-2"><?= h($name); ?></div>

                                    <div class="small text-muted">Email</div>
                                    <div class="mb-2"><?= h($tx['email'] ?? '—'); ?></div>

                                    <div class="small text-muted">Phone</div>
                                    <div><?= h($tx['phone'] ?? '—'); ?></div>
                                </div>
                            </div>

                            <div class="col-md-6">
                                <div class="border rounded-4 p-3 h-100">
                                    <h6 class="mb-2">Transaction</h6>

                                    <div class="small text-muted">Coin</div>
                                    <div class="mb-2"><?= h($tx['coin'] ?? '—'); ?></div>

                                    <div class="small text-muted">Amount</div>
                                    <div class="mb-2"><?= h($tx['amount'] ?? '0'); ?></div>

                                    <div class="small text-muted">Type</div>
                                    <div><?= h($tx['type'] ?? '—'); ?></div>
                                </div>
                            </div>

                            <div class="col-md-12">
                                <div class="border rounded-4 p-3">
                                    <h6 class="mb-2">Addresses</h6>
                                    <div class="row g-3">
                                        <div class="col-md-6">
                                            <div class="small text-muted">Sender Address</div>
                                            <div class="text-break"><?= h($tx['sender_address'] ?? '—'); ?></div>
                                        </div>
                                        <div class="col-md-6">
                                            <div class="small text-muted">Receiver Address</div>
                                            <div class="text-break"><?= h($tx['receiver_address'] ?? '—'); ?></div>
                                        </div>
                                    </div>
                                </div>
                            </div>

                            <div class="col-md-12">
                                <div class="border rounded-4 p-3">
                                    <h6 class="mb-2">Provider / References</h6>
                                    <div class="row g-3">
                                        <div class="col-md-4">
                                            <div class="small text-muted">Reference</div>
                                            <div class="text-break"><?= h($tx['reference'] ?? '—'); ?></div>
                                        </div>
                                        <div class="col-md-4">
                                            <div class="small text-muted">TXID</div>
                                            <div class="text-break"><?= h($tx['txid'] ?? '—'); ?></div>
                                        </div>
                                        <div class="col-md-4">
                                            <div class="small text-muted">Provider</div>
                                            <div><?= h($tx['provider'] ?? '—'); ?></div>
                                        </div>
                                        <div class="col-md-4">
                                            <div class="small text-muted">Confirmations</div>
                                            <div><?= h($tx['confirmation'] ?? '0'); ?></div>
                                        </div>
                                        <div class="col-md-4">
                                            <div class="small text-muted">Wallet ID</div>
                                            <div class="text-break"><?= h($tx['wallet_id'] ?? '—'); ?></div>
                                        </div>
                                        <div class="col-md-4">
                                            <div class="small text-muted">Transfer ID</div>
                                            <div class="text-break"><?= h($tx['transfer_id'] ?? '—'); ?></div>
                                        </div>
                                    </div>

                                    <?php if ($providerMetaPretty !== ''): ?>
                                        <hr class="my-3">
                                        <div class="small text-muted mb-2">Provider Meta</div>
                                        <pre class="p-3 bg-light rounded-4 mb-0" style="white-space: pre-wrap; word-break: break-word;"><?= h($providerMetaPretty); ?></pre>
                                    <?php endif; ?>
                                </div>
                            </div>

                            <?php if (!empty($tx['note'])): ?>
                                <div class="col-md-12">
                                    <div class="border rounded-4 p-3">
                                        <h6 class="mb-2">Note</h6>
                                        <div class="text-break"><?= h($tx['note']); ?></div>
                                    </div>
                                </div>
                            <?php endif; ?>

                        </div>
                    </div>
                </div>
            <?php endif; ?>

        </div>
    </div>
</div>

<?php include '../common/footer.php'; ?>

Выполнить команду


Для локальной разработки. Не используйте в интернете!