query("SELECT setting_key, setting_value FROM site_settings"); if ($settings_query) { while ($row = $settings_query->fetch_assoc()) { $settings[$row['setting_key']] = $row['setting_value']; } } $site_name = $settings['site_name'] ?? 'Crypto Investment System'; $referral_bonus = $settings['referral_bonus'] ?? 10; // Check for referral code $referral_code = isset($_GET['ref']) ? trim($_GET['ref']) : ''; // Process registration if ($_SERVER['REQUEST_METHOD'] === 'POST') { $full_name = trim($_POST['full_name'] ?? ''); $username = trim($_POST['username'] ?? ''); $email = trim($_POST['email'] ?? ''); $phone = trim($_POST['phone'] ?? ''); $password = $_POST['password'] ?? ''; $confirm_password = $_POST['confirm_password'] ?? ''; $agree_terms = isset($_POST['agree_terms']) ? true : false; $ref_code = trim($_POST['referral_code'] ?? ''); // Validation if (empty($full_name)) { $error = 'Please enter your full name'; } elseif (empty($username)) { $error = 'Please choose a username'; } elseif (strlen($username) < 3) { $error = 'Username must be at least 3 characters'; } elseif (!preg_match('/^[a-zA-Z0-9_]+$/', $username)) { $error = 'Username can only contain letters, numbers, and underscores'; } elseif (empty($email)) { $error = 'Please enter your email address'; } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $error = 'Please enter a valid email address'; } elseif (empty($phone)) { $error = 'Please enter your phone number'; } elseif (!preg_match('/^[0-9+\-\s()]+$/', $phone)) { $error = 'Please enter a valid phone number'; } elseif (strlen($phone) < 7) { $error = 'Please enter a valid phone number (minimum 7 digits)'; } elseif (empty($password)) { $error = 'Please choose a password'; } elseif (strlen($password) < 6) { $error = 'Password must be at least 6 characters'; } elseif ($password !== $confirm_password) { $error = 'Passwords do not match'; } elseif (!$agree_terms) { $error = 'You must agree to the Terms & Conditions'; } else { // Check if username already exists $check_username = $conn->prepare("SELECT id FROM users WHERE username = ?"); $check_username->bind_param("s", $username); $check_username->execute(); $username_result = $check_username->get_result(); if ($username_result->num_rows > 0) { $error = 'Username already taken. Please choose another one.'; } else { // Check if email already exists $check_email = $conn->prepare("SELECT id FROM users WHERE email = ?"); $check_email->bind_param("s", $email); $check_email->execute(); $email_result = $check_email->get_result(); if ($email_result->num_rows > 0) { $error = 'Email already registered. Please use another email.'; } else { // Check if phone already exists $check_phone = $conn->prepare("SELECT id FROM users WHERE phone = ?"); $check_phone->bind_param("s", $phone); $check_phone->execute(); $phone_result = $check_phone->get_result(); if ($phone_result->num_rows > 0) { $error = 'Phone number already registered. Please use another number.'; } else { // Check if referral code exists (if provided) $referrer_id = null; if (!empty($ref_code)) { $check_ref = $conn->prepare("SELECT id FROM users WHERE referral_code = ?"); $check_ref->bind_param("s", $ref_code); $check_ref->execute(); $ref_result = $check_ref->get_result(); if ($ref_result->num_rows > 0) { $referrer = $ref_result->fetch_assoc(); $referrer_id = $referrer['id']; } } // Generate unique referral code do { $new_referral_code = strtoupper(substr(md5(uniqid(rand(), true)), 0, 8)); $check_code = $conn->prepare("SELECT id FROM users WHERE referral_code = ?"); $check_code->bind_param("s", $new_referral_code); $check_code->execute(); $code_result = $check_code->get_result(); } while ($code_result->num_rows > 0); // Hash password for secure storage $hashed_password = password_hash($password, PASSWORD_DEFAULT); // Insert user - BOTH hashed password AND view_password (plain text) $insert = $conn->prepare(" INSERT INTO users ( username, full_name, email, phone, password, view_password, referral_code, referred_by, created_at, status ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, NOW(), 'active') "); $insert->bind_param("sssssssi", $username, $full_name, $email, $phone, $hashed_password, $password, $new_referral_code, $referrer_id); if ($insert->execute()) { $new_user_id = $conn->insert_id; // Add welcome notification $notif_title = "Welcome to " . $site_name . "!"; $notif_message = "Welcome aboard! Your account has been created successfully. Start your investment journey today."; $notif_type = "system"; // Check if notifications table exists $table_check = $conn->query("SHOW TABLES LIKE 'notifications'"); if ($table_check && $table_check->num_rows > 0) { $notif_stmt = $conn->prepare("INSERT INTO notifications (user_id, title, message, type, created_at) VALUES (?, ?, ?, ?, NOW())"); $notif_stmt->bind_param("isss", $new_user_id, $notif_title, $notif_message, $notif_type); $notif_stmt->execute(); $notif_stmt->close(); } $success = 'Account created successfully! You can now login.'; // Redirect to login after 2 seconds header("refresh:2;url=../../login.html"); } else { $error = 'Registration failed. Please try again.'; } $insert->close(); } $check_phone->close(); } $check_email->close(); } $check_username->close(); } } ?>