import os
# Define project structure and file contents
project_files = {
# ------------------ ROOT FILES ------------------
"install.php": """connect_error) { die("Connection failed: " . $conn->connect_error); }
$conn->query("CREATE DATABASE IF NOT EXISTS skillzup");
$conn->select_db("skillzup");
// Create Tables
$conn->query("CREATE TABLE IF NOT EXISTS users (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), phone VARCHAR(20), email VARCHAR(100) UNIQUE, password VARCHAR(255), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)");
$conn->query("CREATE TABLE IF NOT EXISTS admin (id INT AUTO_INCREMENT PRIMARY KEY, username VARCHAR(50) UNIQUE, password VARCHAR(255))");
$conn->query("CREATE TABLE IF NOT EXISTS banners (id INT AUTO_INCREMENT PRIMARY KEY, image VARCHAR(255), link VARCHAR(255))");
$conn->query("CREATE TABLE IF NOT EXISTS courses (id INT AUTO_INCREMENT PRIMARY KEY, title VARCHAR(255), mrp DECIMAL(10,2), price DECIMAL(10,2), description TEXT, image VARCHAR(255), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)");
$conn->query("CREATE TABLE IF NOT EXISTS chapters (id INT AUTO_INCREMENT PRIMARY KEY, course_id INT, title VARCHAR(255))");
$conn->query("CREATE TABLE IF NOT EXISTS videos (id INT AUTO_INCREMENT PRIMARY KEY, chapter_id INT, title VARCHAR(255), filename VARCHAR(255))");
$conn->query("CREATE TABLE IF NOT EXISTS orders (id INT AUTO_INCREMENT PRIMARY KEY, user_id INT, course_id INT, amount DECIMAL(10,2), status VARCHAR(20), razorpay_order_id VARCHAR(100), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP)");
$conn->query("CREATE TABLE IF NOT EXISTS settings (id INT AUTO_INCREMENT PRIMARY KEY, app_name VARCHAR(100), razorpay_key VARCHAR(100), razorpay_secret VARCHAR(100), support_email VARCHAR(100), support_phone VARCHAR(20))");
// Default Admin
$p = password_hash('123456', PASSWORD_BCRYPT);
$conn->query("INSERT IGNORE INTO admin (id, username, password) VALUES (1, 'admin', '$p')");
$conn->query("INSERT IGNORE INTO settings (id, app_name, support_email, support_phone) VALUES (1, 'SkillzUp', 'support@skillzup.com', '1234567890')");
// Create Upload Folders
@mkdir('uploads/banners', 0777, true);
@mkdir('uploads/courses', 0777, true);
@mkdir('uploads/videos', 0777, true);
header("Location: login.php");
exit;
?>""",
"common/config.php": """connect_error) { die("Database connection failed"); }
$settings = $conn->query("SELECT * FROM settings WHERE id=1")->fetch_assoc();
define('APP_NAME', $settings['app_name'] ?? 'SkillzUp');
?>""",
"common/header.php": """
Login / Signup
""",
"index.php": """query("SELECT * FROM banners");
$latest = $conn->query("SELECT * FROM courses ORDER BY id DESC LIMIT 5");
$all = $conn->query("SELECT * FROM courses ORDER BY id DESC");
?>
""",
"course.php": """real_escape_string($_GET['search']) : '';
$sort = isset($_GET['sort']) ? $_GET['sort'] : 'latest';
$sql = "SELECT * FROM courses WHERE title LIKE '%$search%'";
if($sort === 'low') $sql .= " ORDER BY price ASC";
elseif($sort === 'high') $sql .= " ORDER BY price DESC";
else $sql .= " ORDER BY id DESC";
$res = $conn->query($sql);
?>
""",
"course_detail.php": """query("SELECT * FROM courses WHERE id=$id")->fetch_assoc();
if(!$c) { die("Course not found"); }
$purchased = false;
if(isset($_SESSION['user_id'])) {
$uid = $_SESSION['user_id'];
$check = $conn->query("SELECT id FROM orders WHERE user_id=$uid AND course_id=$id AND status='Success'");
if($check->num_rows > 0) $purchased = true;
}
$disc = round((($c['mrp'] - $c['price'])/$c['mrp'])*100);
?>
""",
"buy.php": """query("SELECT * FROM courses WHERE id=$course_id")->fetch_assoc();
$u = $conn->query("SELECT * FROM users WHERE id=$user_id")->fetch_assoc();
if(!$c) { die("Invalid Course"); }
// Server-side cURL verification mechanism after checkout triggers this block via POST
if($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['razorpay_payment_id'])) {
header('Content-Type: application/json');
$pay_id = $_POST['razorpay_payment_id'];
$order_id = $_POST['razorpay_order_id'];
$sig = $_POST['razorpay_signature'];
$key_id = $settings['razorpay_key'] ?? '';
$secret = $settings['razorpay_secret'] ?? '';
// Server-side cURL Verification
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.razorpay.com/v1/payments/" . $pay_id);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, $key_id . ":" . $secret);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
if(isset($response['status']) && $response['status'] === 'captured') {
$amount = $c['price'];
$conn->query("INSERT INTO orders (user_id, course_id, amount, status, razorpay_order_id) VALUES ($user_id, $course_id, $amount, 'Success', '$order_id')");
echo json_encode(['status' => 'success']); exit;
} else {
$conn->query("INSERT INTO orders (user_id, course_id, amount, status, razorpay_order_id) VALUES ($user_id, $course_id, 0, 'Failed', '$order_id')");
echo json_encode(['status' => 'failed']); exit;
}
}
// Minimalistic Order Creation for Razorpay Checkouts
$api_url = "https://api.razorpay.com/v1/orders";
$order_data = json_encode([
'amount' => $c['price'] * 100,
'currency' => 'INR',
'receipt' => 'rcpt_' . time()
]);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $api_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $order_data);
curl_setopt($ch, CURLOPT_USERPWD, ($settings['razorpay_key'] ?? '') . ":" . ($settings['razorpay_secret'] ?? ''));
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
$rz_order = json_decode(curl_exec($ch), true);
curl_close($ch);
$rz_order_id = $rz_order['id'] ?? '';
?>
Checkout
""",
"mycourses.php": """query("SELECT courses.* FROM orders JOIN courses ON orders.course_id = courses.id WHERE orders.user_id = $uid AND orders.status = 'Success'");
?>
""",
"watch.php": """query("SELECT id FROM orders WHERE user_id=$uid AND course_id=$course_id AND status='Success'");
if($chk->num_rows === 0) { die("Access Denied: Please purchase this course."); }
$course = $conn->query("SELECT * FROM courses WHERE id=$course_id")->fetch_assoc();
$chapters = $conn->query("SELECT * FROM chapters WHERE course_id=$course_id");
// Custom Secure Stream Gateway Pipeline Endpoint Logic via Obfuscated Session Tokens
if(isset($_GET['stream'])) {
$vid_id = (int)$_GET['stream'];
$v = $conn->query("SELECT filename FROM videos WHERE id=$vid_id")->fetch_assoc();
if($v) {
$path = 'uploads/videos/' . $v['filename'];
if(file_exists($path)) {
header('Content-Type: video/mp4');
header('Content-Length: ' . filesize($path));
readfile($path); exit;
}
}
exit;
}
?>
Watching:
""",
"help.php": """
""",
# ------------------ ADMIN PANEL ------------------
"admin/login.php": """real_escape_string($_POST['username']);
$pass = $_POST['password'];
$res = $conn->query("SELECT * FROM admin WHERE username='$user'");
if($res->num_rows > 0) {
$a = $res->fetch_assoc();
if(password_verify($pass, $a['password'])) {
$_SESSION['admin_id'] = $a['id'];
header("Location: index.php"); exit;
}
}
$err = "Invalid Credentials";
}
?>
Admin Portal Login
""",
"admin/common/header.php": """
Console Admin Panel
ADMIN OPERATIONS
""",
"admin/banner.php": """real_escape_string($_POST['link']);
$ext = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION);
$filename = time() . '.' . $ext;
if(move_uploaded_file($_FILES['image']['tmp_tmp_name'] ?? $_FILES['image']['tmp_name'], '../uploads/banners/'.$filename)) {
$conn->query("INSERT INTO banners (image, link) VALUES ('$filename', '$link')");
}
}
if(isset($_GET['del'])) {
$id = (int)$_GET['del'];
$b = $conn->query("SELECT image FROM banners WHERE id=$id")->fetch_assoc();
@unlink('../uploads/banners/'.$b['image']);
$conn->query("DELETE FROM banners WHERE id=$id");
header("Location: banner.php"); exit;
}
$list = $conn->query("SELECT * FROM banners");
include 'common/header.php';
include 'common/sidebar.php';
?>
""",
"admin/course.php": """real_escape_string($_POST['title']);
$mrp = (float)$_POST['mrp'];
$price = (float)$_POST['price'];
$desc = $conn->real_escape_string($_POST['description']);
$filename = '';
if(!empty($_FILES['thumbnail']['name'])) {
$ext = pathinfo($_FILES['thumbnail']['name'], PATHINFO_EXTENSION);
$filename = time() . '.' . $ext;
move_uploaded_file($_FILES['thumbnail']['tmp_name'], '../uploads/courses/'.$filename);
}
$sql = "INSERT INTO courses (title, mrp, price, description, image) VALUES ('$title', $mrp, $price, '$desc', '$filename')";
if($conn->query($sql)) { echo json_encode(['status'=>'success']); }
else { echo json_encode(['status'=>'error']); }
exit;
}
if(isset($_GET['del'])) {
$id = (int)$_GET['del'];
$c = $conn->query("SELECT image FROM courses WHERE id=$id")->fetch_assoc();
@unlink('../uploads/courses/'.$c['image']);
$conn->query("DELETE FROM courses WHERE id=$id");
header("Location: course.php"); exit;
}
$courses = $conn->query("SELECT * FROM courses ORDER BY id DESC");
include 'common/header.php';
include 'common/sidebar.php';
?>
""",
"admin/chapter.php": """real_escape_string($_POST['title']);
$conn->query("INSERT INTO chapters (course_id, title) VALUES ($course_id, '$title')");
}
if(isset($_GET['del'])) {
$id = (int)$_GET['del'];
$conn->query("DELETE FROM chapters WHERE id=$id");
header("Location: chapter.php?course_id=$course_id"); exit;
}
$chapters = $conn->query("SELECT * FROM chapters WHERE course_id=$course_id");
include 'common/header.php';
include 'common/sidebar.php';
?>
""",
"admin/video.php": """real_escape_string($_POST['title']);
$ext = pathinfo($_FILES['video']['name'], PATHINFO_EXTENSION);
if(strtolower($ext) !== 'mp4') { echo json_encode(['status'=>'error','msg'=>'Only MP4 allowed']); exit; }
$filename = time() . '.' . $ext;
if(move_uploaded_file($_FILES['video']['tmp_name'], '../uploads/videos/'.$filename)) {
$conn->query("INSERT INTO videos (chapter_id, title, filename) VALUES ($chapter_id, '$title', '$filename')");
echo json_encode(['status'=>'success']);
} else { echo json_encode(['status'=>'error','msg'=>'Upload failed']); }
exit;
}
if(isset($_GET['del'])) {
$id = (int)$_GET['del'];
$v = $conn->query("SELECT filename FROM videos WHERE id=$id")->fetch_assoc();
@unlink('../uploads/videos/'.$v['filename']);
$conn->query("DELETE FROM videos WHERE id=$id");
header("Location: video.php?chapter_id=$chapter_id"); exit;
}
$videos = $conn->query("SELECT * FROM videos WHERE chapter_id=$chapter_id");
include 'common/header.php';
include 'common/sidebar.php';
?>
""",
"admin/users.php": """query("SELECT * FROM users ORDER BY id DESC");
include 'common/header.php';
include 'common/sidebar.php';
?>
""",
"admin/orders.php": """query("SELECT orders.*, users.name as uname, courses.title as ctitle FROM orders JOIN users ON orders.user_id=users.id JOIN courses ON orders.course_id=courses.id ORDER BY orders.id DESC");
include 'common/header.php';
include 'common/sidebar.php';
?>
""",
"admin/payments.php": """query("SELECT orders.*, users.name as uname FROM orders JOIN users ON orders.user_id=users.id ORDER BY orders.id DESC");
include 'common/header.php';
include 'common/sidebar.php';
?>
""",
"admin/settings.php": """real_escape_string($_POST['app_name']);
$rz_key = $conn->real_escape_string($_POST['razorpay_key']);
$rz_sec = $conn->real_escape_string($_POST['razorpay_secret']);
$email = $conn->real_escape_string($_POST['support_email']);
$phone = $conn->real_escape_string($_POST['support_phone']);
$sql = "UPDATE settings SET app_name='$app_name', razorpay_key='$rz_key', razorpay_secret='$rz_sec', support_email='$email', support_phone='$phone' WHERE id=1";
if($conn->query($sql)) { $msg = "Settings updated successfully System-Wide"; }
}
$st = $conn->query("SELECT * FROM settings WHERE id=1")->fetch_assoc();
include 'common/header.php';
include 'common/sidebar.php';
?>
"""
}
# Generate directories and files structurally
base_directory = "skillzup"
print(f"[*] Starting compilation payload deployment inside directory: {base_directory}/")
for relative_path, file_content in project_files.items():
full_path = os.path.join(base_directory, relative_path)
directory_name = os.path.dirname(full_path)
if not os.path.exists(directory_name):
os.makedirs(directory_name, exist_ok=True)
with open(full_path, "w", encoding="utf-8") as file_handle:
file_handle.write(file_content.strip())
print("[+] Build Complete! All application codes, security mechanisms, forms, and custom players are generated.")
print("[!] Run 'install.php' on your local PHP environment (e.g. XAMPP) to deploy the database.")
""",
"common/bottom.php": """
""",
"common/sidebar.php": """
""",
"login.php": """real_escape_string($_POST['email']);
$pass = $_POST['password'];
$res = $conn->query("SELECT * FROM users WHERE email='$email'");
if($res->num_rows > 0) {
$u = $res->fetch_assoc();
if(password_verify($pass, $u['password'])) {
$_SESSION['user_id'] = $u['id'];
$_SESSION['user_name'] = $u['name'];
$_SESSION['user_email'] = $u['email'];
echo json_encode(['status'=>'success']); exit;
}
}
echo json_encode(['status'=>'error', 'msg'=>'Invalid Email or Password']); exit;
}
if($_POST['action'] === 'signup') {
$name = $conn->real_escape_string($_POST['name']);
$phone = $conn->real_escape_string($_POST['phone']);
$email = $conn->real_escape_string($_POST['email']);
$pass = password_hash($_POST['password'], PASSWORD_BCRYPT);
if($conn->query("SELECT id FROM users WHERE email='$email'")->num_rows > 0) {
echo json_encode(['status'=>'error', 'msg'=>'Email already registered']); exit;
}
if($conn->query("INSERT INTO users (name, phone, email, password) VALUES ('$name', '$phone', '$email', '$pass')")) {
$_SESSION['user_id'] = $conn->insert_id;
$_SESSION['user_name'] = $name;
$_SESSION['user_email'] = $email;
echo json_encode(['status'=>'success']); exit;
}
echo json_encode(['status'=>'error', 'msg'=>'Registration failed']); exit;
}
}
?>
fetch_assoc()):
$disc = round((($c['mrp'] - $c['price'])/$c['mrp'])*100);
?>
0): ?>
% OFF
₹
₹
₹
₹
0): ?>
(% Off)
Course Details
Total Amount: ₹
My Enrolled Courses
num_rows === 0): ?>You haven't bought any courses yet.
fetch_assoc()): ?>
Select a Video
00:00
00:00
fetch_assoc()): ?>
""",
"profile.php": """real_escape_string($_POST['name']);
$phone = $conn->real_escape_string($_POST['phone']);
$email = $conn->real_escape_string($_POST['email']);
$sql = "UPDATE users SET name='$name', phone='$phone', email='$email' WHERE id=$uid";
if($conn->query($sql)) {
$_SESSION['user_name'] = $name; $_SESSION['user_email'] = $email;
if(!empty($_POST['password'])) {
$pass = password_hash($_POST['password'], PASSWORD_BCRYPT);
$conn->query("UPDATE users SET password='$pass' WHERE id=$uid");
}
$msg = "Profile updated successfully";
}
}
$u = $conn->query("SELECT * FROM users WHERE id=$uid")->fetch_assoc();
include 'common/header.php';
include 'common/sidebar.php';
?>
query("SELECT * FROM videos WHERE chapter_id=".$ch['id']);
while($vd = $videos->fetch_assoc()):
?>
My Profile Settings
LOGOUT ACCOUNTHelp & Support
Have any issues or questions regarding courses? Reach us instantly.
Email Support
Call Hotline
Admin Panel
""",
"admin/common/bottom.php": """
""",
"admin/common/sidebar.php": """""",
"admin/index.php": """query("SELECT count(id) as total FROM users")->fetch_assoc()['total'];
$c_count = $conn->query("SELECT count(id) as total FROM courses")->fetch_assoc()['total'];
$o_count = $conn->query("SELECT count(id) as total FROM orders WHERE status='Success'")->fetch_assoc()['total'];
$rev = $conn->query("SELECT sum(amount) as total FROM orders WHERE status='Success'")->fetch_assoc()['total'] ?? 0;
include 'common/header.php';
include 'common/sidebar.php';
?>
Total Users
Net Revenue
₹
Active Courses
Purchases
Add Chapter To Course
fetch_assoc()): ?>
Registered Users Registry
fetch_assoc()): ?>
Email: | Phone:
Purchases:
query("SELECT courses.title FROM orders JOIN courses ON orders.course_id=courses.id WHERE orders.user_id=".$u['id']." AND orders.status='Success'");
if($p->num_rows == 0) echo 'None';
while($o = $p->fetch_assoc()) { echo ''.$o['title'].''; }
?>
Order Purchases Audit Logs
fetch_assoc()): ?>
₹
Course:
Date:
Razorpay Transaction Telemetry Ledger
fetch_assoc()): ?>
ID: #₹
Order Ref:
User Handle: []
Comments
Post a Comment