![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/soundstudiopro.com/public_html/radio/ |
<?php
// Error handling
error_reporting(E_ALL);
ini_set('display_errors', 0);
ini_set('log_errors', 1);
register_shutdown_function(function() {
$error = error_get_last();
if ($error && in_array($error['type'], [E_ERROR, E_PARSE, E_CORE_ERROR, E_COMPILE_ERROR])) {
error_log("Fatal error in subscription_success.php: " . $error['message']);
http_response_code(500);
echo '<!DOCTYPE html><html><head><title>Error</title></head><body style="font-family: Arial; padding: 2rem; text-align: center;"><h1>Something went wrong</h1><p>Please try again later.</p><a href="/radio/dashboard/">Go to Dashboard</a></body></html>';
exit;
}
});
session_start();
try {
require_once __DIR__ . '/../config/database.php';
require_once __DIR__ . '/includes/functions.php';
} catch (Exception $e) {
error_log("Error loading dependencies in subscription_success.php: " . $e->getMessage());
http_response_code(500);
die('Error loading page. Please contact support.');
}
$station_id = $_GET['station_id'] ?? $_SESSION['radio_station_id'] ?? null;
if (!$station_id) {
header('Location: /radio/register.php');
exit;
}
try {
$station = getRadioStation($station_id);
if (!$station) {
header('Location: /radio/register.php');
exit;
}
// Set session variables for dashboard access
$_SESSION['radio_station_id'] = $station_id;
$_SESSION['radio_station_name'] = $station['station_name'];
$_SESSION['radio_station_email'] = $station['contact_email'];
} catch (Exception $e) {
error_log("Subscription success error: " . $e->getMessage());
// Don't redirect on error, show error message instead
$error = "Error loading station: " . $e->getMessage();
}
$page_title = 'Subscription Success - SoundStudioPro';
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title><?= htmlspecialchars($page_title) ?></title>
<link rel="stylesheet" href="/assets/css/main.css">
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap" rel="stylesheet">
<style>
* {
box-sizing: border-box;
}
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
min-height: 100vh;
padding: 2rem 1rem;
}
.success-page {
max-width: 700px;
margin: 0 auto;
padding: 3rem;
background: rgba(255, 255, 255, 0.95);
backdrop-filter: blur(20px);
border-radius: 24px;
box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
text-align: center;
animation: slideUp 0.6s ease-out;
}
@keyframes slideUp {
from {
opacity: 0;
transform: translateY(30px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.success-icon {
font-size: 5rem;
margin-bottom: 1.5rem;
animation: scaleIn 0.6s ease-out 0.2s both;
}
@keyframes scaleIn {
from {
transform: scale(0);
}
to {
transform: scale(1);
}
}
.success-page h1 {
font-size: 2.5rem;
font-weight: 800;
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
-webkit-background-clip: text;
-webkit-text-fill-color: transparent;
background-clip: text;
margin-bottom: 1rem;
}
.success-page > p {
font-size: 1.1rem;
color: #666;
margin-bottom: 2rem;
}
.api-credentials {
background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%);
padding: 2rem;
border-radius: 16px;
margin: 2.5rem 0;
text-align: left;
border: 1px solid rgba(255, 255, 255, 0.5);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.1);
}
.api-credentials h3 {
margin-top: 0;
font-size: 1.5rem;
font-weight: 700;
color: #333;
margin-bottom: 0.5rem;
}
.api-credentials > p {
color: #555;
margin-bottom: 1.5rem;
font-size: 0.95rem;
}
.credential-item {
margin-bottom: 1.5rem;
}
.credential-item:last-child {
margin-bottom: 0;
}
.credential-item label {
display: block;
font-weight: 600;
margin-bottom: 0.5rem;
color: #333;
font-size: 0.9rem;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.credential-item code {
background: rgba(255, 255, 255, 0.9);
padding: 1rem;
border-radius: 12px;
display: block;
word-break: break-all;
font-family: 'Monaco', 'Courier New', monospace;
font-size: 0.85rem;
color: #667eea;
border: 2px solid rgba(102, 126, 234, 0.2);
transition: all 0.3s ease;
cursor: pointer;
position: relative;
}
.credential-item code:hover {
border-color: #667eea;
background: rgba(255, 255, 255, 1);
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(102, 126, 234, 0.2);
}
.credential-item code::after {
content: '📋';
position: absolute;
right: 1rem;
opacity: 0;
transition: opacity 0.3s;
}
.credential-item code:hover::after {
opacity: 1;
}
.api-credentials small {
display: block;
margin-top: 1.5rem;
padding-top: 1.5rem;
border-top: 1px solid rgba(0, 0, 0, 0.1);
color: #666;
font-size: 0.85rem;
}
.api-credentials small code {
background: transparent;
padding: 0.25rem 0.5rem;
border: none;
display: inline;
color: #667eea;
font-size: 0.85rem;
}
.btn-primary {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
color: white;
padding: 1rem 2.5rem;
border: none;
border-radius: 12px;
font-size: 1.1rem;
font-weight: 600;
cursor: pointer;
text-decoration: none;
display: inline-block;
margin-top: 1.5rem;
box-shadow: 0 8px 24px rgba(102, 126, 234, 0.4);
transition: all 0.3s ease;
position: relative;
overflow: hidden;
}
.btn-primary::before {
content: '';
position: absolute;
top: 0;
left: -100%;
width: 100%;
height: 100%;
background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
transition: left 0.5s;
}
.btn-primary:hover {
transform: translateY(-2px);
box-shadow: 0 12px 32px rgba(102, 126, 234, 0.5);
}
.btn-primary:hover::before {
left: 100%;
}
.btn-primary:active {
transform: translateY(0);
}
.error-message {
background: linear-gradient(135deg, #fee 0%, #fcc 100%);
color: #c33;
padding: 1.25rem;
border-radius: 12px;
margin-bottom: 1.5rem;
border: 2px solid rgba(204, 51, 51, 0.3);
font-weight: 500;
}
@media (max-width: 768px) {
.success-page {
padding: 2rem 1.5rem;
}
.success-page h1 {
font-size: 2rem;
}
.api-credentials {
padding: 1.5rem;
}
}
</style>
</head>
<body>
<?php
// Try to include header, but don't fail if it doesn't exist
$header_path = __DIR__ . '/../includes/header.php';
if (file_exists($header_path)) {
try {
include $header_path;
} catch (Exception $e) {
error_log("Header include error: " . $e->getMessage());
// Fallback minimal header
echo '<header style="padding: 1rem; background: rgba(102, 126, 234, 0.1);"><a href="/" style="color: #667eea; text-decoration: none; font-weight: 600;">SoundStudioPro</a></header>';
}
} else {
// Fallback minimal header
echo '<header style="padding: 1rem; background: rgba(102, 126, 234, 0.1);"><a href="/" style="color: #667eea; text-decoration: none; font-weight: 600;">SoundStudioPro</a></header>';
}
?>
<div class="success-page">
<?php if (isset($error)): ?>
<div class="error-message">
<strong>⚠️ Error:</strong> <?= htmlspecialchars($error) ?>
</div>
<?php endif; ?>
<div class="success-icon">🎉</div>
<h1>Subscription Activated!</h1>
<p>Your radio station subscription has been successfully activated. You're all set to start broadcasting!</p>
<?php if (isset($_SESSION['radio_api_key'])): ?>
<div class="api-credentials">
<h3>Your API Credentials</h3>
<p><strong>Save these credentials securely!</strong> You'll need them to integrate with your broadcast software.</p>
<div class="credential-item">
<label>API Key:</label>
<code><?= htmlspecialchars($_SESSION['radio_api_key']) ?></code>
</div>
<div class="credential-item">
<label>API Secret:</label>
<code><?= htmlspecialchars($_SESSION['radio_api_secret']) ?></code>
</div>
<p><small>Use these in the Authorization header: <code>Bearer {api_key}:{api_secret}</code></small></p>
</div>
<?php endif; ?>
<a href="/radio/dashboard/" class="btn-primary">Go to Dashboard</a>
</div>
<?php
// Try to include footer, but don't fail if it doesn't exist
$footer_path = __DIR__ . '/../includes/footer.php';
if (file_exists($footer_path)) {
try {
include $footer_path;
} catch (Exception $e) {
error_log("Footer include error: " . $e->getMessage());
}
}
?>
</body>
</html>