Path : /home/vishqocm/pcib.in/
File Upload :
Current File : /home/vishqocm//pcib.in/verify.php

<?php
// Start output buffering
ob_start();

// Include necessary files
require_once 'config.php';
require_once 'includes/certificate_lib.php';

// Start session if not already started
if (session_status() === PHP_SESSION_NONE) {
session_start();
}

$pageTitle = "Certificate Verification";
include_once('includes/header.php');

// Initialize certificate verifier
$certificateVerifier = new CertificateVerifier();

// Initialize variables
$verification_code = $_GET['code'] ?? '';
$certificate_number = $_GET['number'] ?? '';
$verification_result = null;
$certificate_data = null;
$error_message = '';

// Process verification request
if (!empty($verification_code) || !empty($certificate_number)) {
    // Get certificate from database
    $query = '';
    $param_type = '';
    $param_value = '';
    
    if (!empty($verification_code)) {
        $query = "SELECT e.*, 
                       CONCAT(u.first_name, ' ', u.last_name) AS student_name,
                       u.email AS student_email,
                       c.title AS course_title,
                       c.duration AS course_duration
                FROM enrollments e
                INNER JOIN users u ON e.user_id = u.id
                INNER JOIN courses c ON e.course_id = c.id
                WHERE e.verification_code = ?";
        $param_type = "s";
        $param_value = $verification_code;
    } else {
        $query = "SELECT e.*, 
                       CONCAT(u.first_name, ' ', u.last_name) AS student_name,
                       u.email AS student_email,
                       c.title AS course_title,
                       c.duration AS course_duration
            FROM enrollments e
                INNER JOIN users u ON e.user_id = u.id
                INNER JOIN courses c ON e.course_id = c.id
                WHERE e.certificate_number = ?";
        $param_type = "s";
        $param_value = $certificate_number;
    }
        
        $stmt = $conn->prepare($query);
    $stmt->bind_param($param_type, $param_value);
        $stmt->execute();
        $result = $stmt->get_result();
        
        if ($result && $result->num_rows > 0) {
        $certificate_data = $result->fetch_assoc();
        
        // Prepare certificate meta for verification
        $certificate_meta = json_decode($certificate_data['certificate_meta'], true);
        
        if (!empty($certificate_meta)) {
            // Create signed data to verify
            $signedData = [
                'data' => $certificate_meta,
                'hash' => md5(json_encode($certificate_meta) . $certificateVerifier->generator->getSecretKey()),
                'issued_at' => $certificate_data['certificate_issue_date']
            ];
            
            // Verify certificate
            if (!empty($verification_code)) {
                $verification_result = $certificateVerifier->verifyByCode($verification_code, $signedData);
            } else {
                $verification_result = $certificateVerifier->verifyByCertificateNumber($certificate_number, $signedData);
            }
        } else {
            // If no meta data, use a simpler verification
            $verification_result = true;
        }
    } else {
        $error_message = "Certificate not found";
    }
}

// Get institute details
$institute_query = "SELECT * FROM site_settings WHERE setting_key IN ('site_name', 'site_logo', 'contact_email', 'contact_phone')";
$institute_result = $conn->query($institute_query);
$institute = [];

if ($institute_result->num_rows > 0) {
    while ($row = $institute_result->fetch_assoc()) {
        $institute[$row['setting_key']] = $row['setting_value'];
    }
}

// Set institute defaults if not found
if (!isset($institute['site_name'])) {
    $institute['site_name'] = 'Popular Computer Institute';
}
if (!isset($institute['site_logo'])) {
    $institute['site_logo'] = 'assets/img/logo.png';
}
?>

<div class="container mt-5 mb-5">
        <div class="row justify-content-center">
        <div class="col-md-10">
            <div class="card shadow">
                <div class="card-header bg-primary text-white">
                    <h4 class="m-0">Certificate Verification</h4>
                </div>
                <div class="card-body">
                    <?php if ($verification_result === null): ?>
                        <div class="text-center mb-4">
                            <img src="assets/img/verification-icon.png" alt="Verification" class="img-fluid" style="max-height: 150px;">
                            <h5 class="mt-3">Verify the authenticity of a certificate</h5>
                            <p class="text-muted">Enter the verification code or certificate number to verify a certificate issued by <?php echo $institute['site_name']; ?></p>
                        </div>
                        
                        <?php if (!empty($error_message)): ?>
                            <div class="alert alert-danger">
                                <?php echo $error_message; ?>
                        </div>
                        <?php endif; ?>
                        
                        <div class="row justify-content-center">
                            <div class="col-md-8">
                                <form method="get" action="" class="mb-4">
                                    <div class="form-group mb-3">
                                        <label for="code">Verification Code</label>
                                        <input type="text" class="form-control" id="code" name="code" placeholder="Enter verification code (e.g. ABC12345)">
                                </div>
                                    <button type="submit" class="btn btn-primary btn-block">Verify Certificate</button>
                                </form>
                                
                                <div class="text-center my-3">
                                    <span class="text-muted">OR</span>
                                </div>
                                
                                <form method="get" action="">
                                    <div class="form-group mb-3">
                                        <label for="number">Certificate Number</label>
                                        <input type="text" class="form-control" id="number" name="number" placeholder="Enter certificate number (e.g. CERT-20230101-0001)">
                                    </div>
                                    <button type="submit" class="btn btn-secondary btn-block">Verify Certificate</button>
                                </form>
                            </div>
                        </div>
                    <?php else: ?>
                        <?php if ($verification_result): ?>
                            <!-- Valid Certificate -->
                            <div class="text-center mb-4">
                                <img src="assets/img/verified-icon.png" alt="Verified" class="img-fluid" style="max-height: 120px;">
                                <h5 class="text-success mt-3">Certificate Verified Successfully</h5>
                                <p>This certificate is authentic and was issued by <?php echo $institute['site_name']; ?>.</p>
                            </div>
                            
                            <div class="card mb-4">
                                <div class="card-header bg-light">
                                    <h5 class="mb-0">Certificate Details</h5>
                                </div>
                                <div class="card-body">
                                    <div class="row">
                                        <div class="col-md-6">
                                            <p><strong>Certificate Number:</strong><br> <?php echo $certificate_data['certificate_number']; ?></p>
                                            <p><strong>Student Name:</strong><br> <?php echo $certificate_data['student_name']; ?></p>
                                            <p><strong>Course Title:</strong><br> <?php echo $certificate_data['course_title']; ?></p>
                                        </div>
                                        <div class="col-md-6">
                                            <p><strong>Issue Date:</strong><br> <?php echo date('F d, Y', strtotime($certificate_data['certificate_issue_date'])); ?></p>
                                            <p><strong>Verification Code:</strong><br> <?php echo $certificate_data['verification_code']; ?></p>
                                            <p><strong>Course Duration:</strong><br> <?php echo $certificate_data['course_duration']; ?></p>
                                        </div>
                                        </div>
                                    </div>
                                </div>
                                
                            <div class="text-center">
                                <a href="student/view_certificate.php?number=<?php echo $certificate_data['certificate_number']; ?>" target="_blank" class="btn btn-primary">
                                    <i class="fas fa-eye mr-2"></i> View Certificate
                                </a>
                            </div>
                        <?php else: ?>
                            <!-- Invalid Certificate -->
                            <div class="text-center mb-4">
                                <img src="assets/img/invalid-icon.png" alt="Invalid" class="img-fluid" style="max-height: 120px;">
                                <h5 class="text-danger mt-3">Invalid Certificate</h5>
                                <p>The certificate information could not be verified. It may be invalid, tampered with, or not exist in our records.</p>
                            </div>
                            
                            <div class="alert alert-warning">
                                <p><strong>Possible reasons:</strong></p>
                                <ul>
                                    <li>The verification code or certificate number was entered incorrectly</li>
                                    <li>The certificate is not authentic or has been tampered with</li>
                                    <li>There was a technical issue with the verification process</li>
                                    </ul>
                                </div>
                            
                            <div class="text-center mt-4">
                                <a href="verify.php" class="btn btn-primary">Try Again</a>
                                <a href="contact.php" class="btn btn-secondary ml-2">Contact Support</a>
                        </div>
                        <?php endif; ?>
                    <?php endif; ?>
                </div>
            </div>
        </div>
    </div>
</div>

<?php include_once('includes/footer.php'); ?>