# PAIDSURVEYHUB 14 OCT 2025 - REPOSITORY ================================================================================ Project Name: PaidSurveyHub 14 Oct 2025 Created: 2025-10-14 02:15:11 Last Updated: 2025-10-14 02:16:04 Source ZIP: public_html.zip Total Files: 42 Total Folders: 5 ================================================================================ ## FILE STRUCTURE ================================================================================ PaidSurveyHub 14 Oct 2025/ ├── assets/ │ └── style.css ├── config/ │ └── config.php ├── contact.php ├── create-admin.php ├── dashboard.php ├── default.php ├── includes/ │ ├── footer.php │ └── header.php ├── index.php ├── login.php ├── logout.php ├── management/ │ ├── add-survey.php │ ├── dashboard.php │ ├── delete-survey.php │ ├── edit-member.php │ ├── edit-survey.php │ ├── index.php │ ├── logout.php │ ├── manage-members.php │ ├── manage-surveys.php │ ├── manage-tickets.php │ ├── reply-ticket.php │ ├── settings.php │ └── view-ticket.php ├── my-tickets.php ├── payment-info.php ├── reply-my-ticket.php ├── reply-ticket.php ├── signup.php ├── survey-detail.php ├── uploads/ │ ├── 68e875094c5cd.png │ ├── 68e88a7f0c767.png │ ├── 68e88a92c53b1.png │ ├── 68e88b5160c95.png │ ├── 68e88b5c4655f.png │ ├── 68e88b6790d1b.png │ ├── 68e88bd4a06c7.png │ ├── 68e88bdeaf176.png │ ├── 68e88be9460c0.png │ ├── 68e88bf2dc063.png │ └── qr_code_1760063901.jpg └── verify-email.php ================================================================================ ## FILE CONTENTS ================================================================================ ### FILE 1: contact.php - Type: PHP - Size: 7.34 KB - Path: . - Name: contact.php ------------------------------------------------------------ query($sql)) { $ticket_id = $conn->insert_id; $success = "Your ticket has been submitted successfully! Our support team will respond within 24 hours."; } else { $error = "Failed to send message. Please try again."; } } } $page_title = 'Contact Us'; include 'includes/header.php'; ?>

Contact Us

✅ Ticket Submitted Successfully!

Your Ticket ID: #

You can view your ticket status and response anytime from your My Tickets page.

📧 Please check your email inbox:

We will send our response to:

You will receive an email notification when our support team replies to your query.

The email will include a link to respond if you have any follow-up questions.

💡 Tip: Check your spam/junk folder if you don't see our response within 24 hours.
View My Tickets Go to Dashboard Back to Home

Have a question or need assistance? Submit your query below and our support team will get back to you within 24 hours.

✨ Member Support
As a member, you can track your ticket status and view responses from your My Tickets page.
> We will respond to this email address

View your previous tickets →

-------------------- END OF FILE -------------------- ### FILE 2: create-admin.php - Type: PHP - Size: 1.18 KB - Path: . - Name: create-admin.php ------------------------------------------------------------ query($check_sql); if ($result->num_rows > 0) { echo "Admin user already exists!"; } else { // Insert admin user $sql = "INSERT INTO admins (username, password, email) VALUES ('$username', '$hashed_password', '$email')"; if ($conn->query($sql)) { echo "Admin user created successfully!
"; echo "Username: " . $username . "
"; echo "Password: " . $password . "

"; echo "Please login at: " . SITE_URL . ADMIN_PATH . "

"; echo "IMPORTANT: Change your password after first login and DELETE this file!"; } else { echo "Error creating admin user: " . $conn->error; } } $conn->close(); ?> -------------------- END OF FILE -------------------- ### FILE 3: dashboard.php - Type: PHP - Size: 6.34 KB - Path: . - Name: dashboard.php ------------------------------------------------------------ query($sql); $member = $result->fetch_assoc(); // Check approval and payment status $is_approved = $member['is_approved'] == 1; $payment_status = $member['payment_status'] == 1; $payment_amount = get_setting('payment_amount'); // If approved but payment not done and payment amount > 0, redirect to payment info if ($is_approved && !$payment_status && $payment_amount > 0) { redirect(SITE_URL . '/payment-info.php'); } $page_title = 'Dashboard'; include 'includes/header.php'; ?>

Welcome, !

0): ?>
⏱️ Payment Verification Pending

Thank you for your interest! We have received your registration. To access all verified survey sites, please:

  1. Complete the payment of ₹
  2. Send payment screenshot with UTR/Reference Number to signupverification@paidsurveyhub.in
  3. Wait for verification (within 24 working hours)

If you have already made the payment and sent the proof, your account will be activated within 24 working hours. Please be patient!

View Payment Instructions
🔄 Account Pending Approval

Your account is currently awaiting admin approval. You will receive access once your account is approved. This usually takes up to 24 working hours.

Thank you for your payment! We are verifying your payment details and will activate your account within 24 working hours (Monday to Saturday, 9 AM to 6 PM IST).

You will receive full access to all verified survey sites once your account is approved.

0): ?>
💳 Payment Required

Your account has been approved! Please complete your one-time payment to access all verified survey sites.

View Payment Details
✅ Account Active! You have lifetime access to all verified survey sites.

Browse through our collection of verified survey sites and start earning! Click on any survey site below to view details and visit their website.

query($survey_sql); if ($survey_result->num_rows > 0): ?>
fetch_assoc()): ?>
<?php echo htmlspecialchars($survey['title']); ?>

📋 No Survey Sites Available

We are currently adding verified survey sites to the platform. Please check back soon for updates!
-------------------- END OF FILE -------------------- ### FILE 4: default.php - Type: PHP - Size: 15.99 KB - Path: . - Name: default.php ------------------------------------------------------------ Default page

You Are All Set to Go!

All you have to do now is upload your website files and start your journey. Check out how to do that below:

-------------------- END OF FILE -------------------- ### FILE 5: index.php - Type: PHP - Size: 3.38 KB - Path: . - Name: index.php ------------------------------------------------------------

Welcome to Paid Survey Hub India

Discover genuine and reliable paid online survey opportunities in India. Our platform connects you with legitimate survey companies that actually pay for your valuable opinions.

Why Choose Us?

  • ✓ Verified and genuine survey sites only
  • ✓ Direct links to survey companies
  • ✓ Support contact for each site
  • ✓ One-time access fee
  • ✓ Lifetime access to all survey sites
Get Started Now Already a Member? Login

How It Works

1

Sign Up

Create your free account with basic information

2

Get Approved

Wait for admin approval and complete payment

3

Start Earning

Access all verified survey sites and start earning

-------------------- END OF FILE -------------------- ### FILE 6: login.php - Type: PHP - Size: 2.64 KB - Path: . - Name: login.php ------------------------------------------------------------ query($sql); if ($result->num_rows > 0) { $member = $result->fetch_assoc(); if (password_verify($password, $member['password'])) { if ($member['is_verified'] == 0) { $error = "Please verify your email first. Check your inbox for the verification link."; } else { // Set session $_SESSION['member_id'] = $member['id']; $_SESSION['member_name'] = $member['full_name']; $_SESSION['member_email'] = $member['email']; redirect(SITE_URL . '/dashboard.php'); } } else { $error = "Invalid email or password"; } } else { $error = "Invalid email or password"; } } } $page_title = 'Login'; include 'includes/header.php'; ?>

Member Login

Don't have an account? Sign up here

-------------------- END OF FILE -------------------- ### FILE 7: logout.php - Type: PHP - Size: 186 B - Path: . - Name: logout.php ------------------------------------------------------------ -------------------- END OF FILE -------------------- ### FILE 8: my-tickets.php - Type: PHP - Size: 7.62 KB - Path: . - Name: my-tickets.php ------------------------------------------------------------ query($sql); $page_title = 'My Tickets'; include 'includes/header.php'; ?>

My Support Tickets

View all your support requests and responses from our team. Click "Respond" to continue the conversation.

num_rows > 0): ?>
fetch_assoc()): ?>

Ticket #

Submitted:

'background: #ffc107; color: #000;', 'in_progress' => 'background: #17a2b8; color: #fff;', 'resolved' => 'background: #28a745; color: #fff;', 'closed' => 'background: #6c757d; color: #fff;' ]; $status_text = ucfirst(str_replace('_', ' ', $ticket['ticket_status'])); ?>

Your Message:

Support Team Response: ()

⏱️ Waiting for response... Our support team will reply within 24 hours.

$response) { $response = trim($response); if (!empty($response)) { echo '

Your Follow-up #' . ($index + 1) . ':

' . nl2br(htmlspecialchars($response)) . '

'; } } } } ?>
💬 Respond to Ticket
No tickets yet
You haven't submitted any support requests yet. If you have any questions or need assistance, feel free to use the contact form.
Submit New Ticket Back to Dashboard
-------------------- END OF FILE -------------------- ### FILE 9: payment-info.php - Type: PHP - Size: 6.67 KB - Path: . - Name: payment-info.php ------------------------------------------------------------ query($sql); $member = $result->fetch_assoc(); // If already paid, redirect to dashboard if ($member['payment_status'] == 1) { redirect(SITE_URL . '/dashboard.php'); } // Get payment settings $payment_amount = get_setting('payment_amount'); $upi_id = get_setting('upi_id'); $qr_code_path = get_setting('qr_code_path'); // If payment amount is 0, auto-approve and redirect if ($payment_amount == 0) { $update_sql = "UPDATE members SET payment_status = 1 WHERE id = $member_id"; $conn->query($update_sql); redirect(SITE_URL . '/dashboard.php'); } $page_title = 'Payment Information'; include 'includes/header.php'; ?>

Complete Your Payment

📋 Payment Instructions

One-time Access Fee

UPI ID:

Scan QR Code to Pay:

Payment QR Code

📌 How to Complete Payment & Activation

Step 1: Make Payment

Pay ₹ using the UPI ID or QR code shown above. Make sure to complete the payment successfully.

Step 2: Take Screenshot

After successful payment, take a clear screenshot of the payment confirmation showing:

  • Payment amount (₹)
  • Transaction date and time
  • UTR/Reference Number (Very Important!)
  • Payment status as "Success"

Step 3: Send Payment Proof

Email your payment screenshot to:

signupverification@paidsurveyhub.in

Email Subject: Payment Verification -

Email Body: Include your registered email () and UTR/Reference Number

⏱️ Verification Time

Your payment will be verified and account will be activated within 24 working hours (Monday to Saturday, 9 AM to 6 PM IST, excluding Sundays and public holidays).

✅ After Activation

Once verified, you will receive lifetime access to all verified survey sites. You can then login anytime to access the complete list of genuine paid survey opportunities.

⚠️ Important Notes:
• Double-check the UPI ID before making payment
• Keep the UTR/Reference Number safe
• Send payment proof from the same email you registered with
• Do not share your login credentials with anyone
• Contact us if payment is done but not verified after 24 hours
Back to Dashboard Need Help? Contact Support
-------------------- END OF FILE -------------------- ### FILE 10: reply-my-ticket.php - Type: PHP - Size: 9.2 KB - Path: . - Name: reply-my-ticket.php ------------------------------------------------------------ query($sql); if ($result->num_rows == 0) { redirect(SITE_URL . '/my-tickets.php'); } $ticket = $result->fetch_assoc(); // Handle form submission if ($_SERVER['REQUEST_METHOD'] === 'POST') { $user_reply = clean_input($_POST['user_reply']); if (empty($user_reply)) { $error = "Please enter your response"; } else { // Append user reply to the message $updated_message = $ticket['message'] . "\n\n--- User Response ---\n" . $user_reply; $updated_message = clean_input($updated_message); // Update ticket with user's response and change status to new $update_sql = "UPDATE contact_messages SET message = '$updated_message', ticket_status = 'new' WHERE id = $ticket_id"; if ($conn->query($update_sql)) { $success = "Your response has been submitted successfully! Our support team will review and respond to your follow-up question."; // Refresh ticket data $result = $conn->query($sql); $ticket = $result->fetch_assoc(); } else { $error = "Failed to submit response. Please try again."; } } } $page_title = 'Respond to Ticket'; include 'includes/header.php'; ?>
← Back to My Tickets

Respond to Ticket #

'background: #ffc107; color: #000;', 'in_progress' => 'background: #17a2b8; color: #fff;', 'resolved' => 'background: #28a745; color: #fff;', 'closed' => 'background: #6c757d; color: #fff;' ]; $status_text = ucfirst(str_replace('_', ' ', $ticket['ticket_status'])); ?>

📧 What happens next:

  • Our support team will review your follow-up question
  • We will respond within 24 hours
  • You'll receive an email notification when we reply
  • You can view the response in your "My Tickets" section
View My Tickets Go to Dashboard

Ticket Created:

Support Team Response:

Replied on:

Your Original Message:

'; echo '

Previous Follow-ups:

'; foreach ($parts as $index => $response) { $response = trim($response); if (!empty($response)) { echo '

Follow-up #' . ($index + 1) . ':

' . nl2br(htmlspecialchars($response)) . '

'; } } echo '
'; } } ?>

💬 Add Your Follow-up

Have additional questions or need clarification? Type your follow-up message below and our support team will respond.

We will review your follow-up and respond to your email within 24 hours.
📌 Note: After submitting your follow-up, our support team will review and respond within 24 hours. You will receive an email notification and can view the response in your "My Tickets" section.
-------------------- END OF FILE -------------------- ### FILE 11: reply-ticket.php - Type: PHP - Size: 9.29 KB - Path: . - Name: reply-ticket.php ------------------------------------------------------------ query($sql); if ($result->num_rows == 0) { $error = "Invalid or expired ticket link. Please contact support if you need assistance."; } else { $ticket = $result->fetch_assoc(); // Handle form submission if ($_SERVER['REQUEST_METHOD'] === 'POST') { $user_reply = clean_input($_POST['user_reply']); if (empty($user_reply)) { $error = "Please enter your response"; } else { // Append user reply to the message $updated_message = $ticket['message'] . "\n\n--- User Response ---\n" . $user_reply; $updated_message = clean_input($updated_message); // Update ticket with user's response $update_sql = "UPDATE contact_messages SET message = '$updated_message', ticket_status = 'new' WHERE id = $ticket_id"; if ($conn->query($update_sql)) { $success = "Your response has been submitted successfully! Our support team will review and respond to your follow-up question."; // Refresh ticket data $result = $conn->query($sql); $ticket = $result->fetch_assoc(); } else { $error = "Failed to submit response. Please try again."; } } } } } $page_title = 'Respond to Ticket'; ?> <?php echo $page_title; ?> - India Survey Guide
Paid Survey Hub India
⚠️

Access Error

Submit New Ticket Go to Homepage

Response Submitted!

📧 What happens next:

  • Our support team will review your follow-up question
  • We will respond to your email within 24 hours
  • You can respond again using the link in our next email
Go to Homepage

Respond to Support Ticket

Ticket ID: #

Submitted:

'background: #ffc107; color: #000;', 'in_progress' => 'background: #17a2b8; color: #fff;', 'resolved' => 'background: #28a745; color: #fff;', 'closed' => 'background: #6c757d; color: #fff;' ]; $status_text = ucfirst(str_replace('_', ' ', $ticket['ticket_status'])); ?>

Support Team Response:

Replied on:

Your Original Message:

💬 Have a follow-up question?

Type your follow-up message below and our support team will respond to your email.

We will send our response to:
📌 Note: After submitting your follow-up, our support team will review and respond to your email within 24 hours. You will receive another email with our response and a link to continue the conversation if needed.

© Paid Survey Hub India. All rights reserved.

-------------------- END OF FILE -------------------- ### FILE 12: signup.php - Type: PHP - Size: 4.92 KB - Path: . - Name: signup.php ------------------------------------------------------------ query($check_sql); if ($result->num_rows > 0) { $error = "Email already registered"; } else { // Hash password and create verification token $hashed_password = password_hash($password, PASSWORD_DEFAULT); $verification_token = bin2hex(random_bytes(32)); // Insert member $sql = "INSERT INTO members (full_name, email, phone, password, verification_token) VALUES ('$full_name', '$email', '$phone', '$hashed_password', '$verification_token')"; if ($conn->query($sql)) { // Send verification email $verify_link = SITE_URL . "/verify-email.php?token=" . $verification_token; $email_subject = "Verify Your Email - India Survey Guide"; $email_message = "

Welcome to Paid Survey Hub India!

Thank you for signing up. Please verify your email address by clicking the link below:

Verify Email Address

Or copy and paste this link: $verify_link

Best regards,
India Survey Guide Team

"; send_email($email, $email_subject, $email_message); $success = "Registration successful! Please check your email to verify your account."; } else { $error = "Registration failed. Please try again."; } } } } $page_title = 'Sign Up'; include 'includes/header.php'; ?>

Create Your Account

Already have an account? Login here

-------------------- END OF FILE -------------------- ### FILE 13: survey-detail.php - Type: PHP - Size: 2.99 KB - Path: . - Name: survey-detail.php ------------------------------------------------------------ query($sql); $member = $result->fetch_assoc(); // Check if member has access $payment_amount = get_setting('payment_amount'); $has_access = ($member['is_approved'] == 1 && ($member['payment_status'] == 1 || $payment_amount == 0)); if (!$has_access) { redirect(SITE_URL . '/dashboard.php'); } // Get survey site details if (!isset($_GET['id'])) { redirect(SITE_URL . '/dashboard.php'); } $survey_id = (int)$_GET['id']; $survey_sql = "SELECT * FROM survey_sites WHERE id = $survey_id"; $survey_result = $conn->query($survey_sql); if ($survey_result->num_rows == 0) { redirect(SITE_URL . '/dashboard.php'); } $survey = $survey_result->fetch_assoc(); $page_title = htmlspecialchars($survey['title']); include 'includes/header.php'; ?>
← Back to Dashboard

<?php echo htmlspecialchars($survey['title']); ?>

About This Survey Site

Support Contact:

Visit Survey Site →
-------------------- END OF FILE -------------------- ### FILE 14: verify-email.php - Type: PHP - Size: 1.76 KB - Path: . - Name: verify-email.php ------------------------------------------------------------ query($sql); if ($result->num_rows > 0) { $member = $result->fetch_assoc(); if ($member['is_verified'] == 1) { $message = "Your email has already been verified. You can login now."; $type = 'info'; } else { // Update member as verified $update_sql = "UPDATE members SET is_verified = 1, verification_token = NULL WHERE id = " . $member['id']; if ($conn->query($update_sql)) { $message = "Email verified successfully! Your account is now awaiting admin approval. You will be notified once approved."; $type = 'success'; } else { $message = "Verification failed. Please try again."; } } } else { $message = "Invalid verification token."; } } else { $message = "No verification token provided."; } $page_title = 'Email Verification'; include 'includes/header.php'; ?>

Email Verification

Go to Login
-------------------- END OF FILE -------------------- ### FILE 15: assets/style.css - Type: CSS - Size: 5.42 KB - Path: assets - Name: style.css ------------------------------------------------------------ /* Reset and Base Styles */ * { margin: 0; padding: 0; box-sizing: border-box; } :root { --navy-blue: #001f3f; --yellow: #FFD700; --light-grey: #f5f5f5; --dark-grey: #666; --white: #ffffff; } body { font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color: var(--light-grey); color: var(--navy-blue); line-height: 1.6; } /* Header */ header { background-color: var(--navy-blue); color: var(--white); padding: 1rem 0; box-shadow: 0 2px 5px rgba(0,0,0,0.1); } .header-container { max-width: 1200px; margin: 0 auto; padding: 0 20px; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; } .logo { font-size: 1.5rem; font-weight: bold; color: var(--yellow); text-decoration: none; } nav ul { list-style: none; display: flex; gap: 1.5rem; flex-wrap: wrap; } nav a { color: var(--white); text-decoration: none; transition: color 0.3s; } nav a:hover { color: var(--yellow); } /* Main Container */ .container { max-width: 1200px; margin: 2rem auto; padding: 0 20px; } /* Cards */ .card { background: var(--white); border-radius: 8px; padding: 2rem; box-shadow: 0 2px 10px rgba(0,0,0,0.1); margin-bottom: 2rem; } .card-title { color: var(--navy-blue); margin-bottom: 1.5rem; font-size: 1.8rem; border-bottom: 3px solid var(--yellow); padding-bottom: 0.5rem; } /* Forms */ .form-group { margin-bottom: 1.5rem; } label { display: block; margin-bottom: 0.5rem; color: var(--navy-blue); font-weight: 500; } input[type="text"], input[type="email"], input[type="password"], input[type="tel"], input[type="url"], input[type="number"], textarea, select { width: 100%; padding: 0.75rem; border: 2px solid var(--dark-grey); border-radius: 5px; font-size: 1rem; transition: border-color 0.3s; } input:focus, textarea:focus, select:focus { outline: none; border-color: var(--yellow); } textarea { resize: vertical; min-height: 120px; } /* Buttons */ .btn { padding: 0.75rem 1.5rem; border: none; border-radius: 5px; cursor: pointer; font-size: 1rem; transition: all 0.3s; text-decoration: none; display: inline-block; } .btn-primary { background-color: var(--yellow); color: var(--navy-blue); font-weight: bold; } .btn-primary:hover { background-color: #FFC700; transform: translateY(-2px); box-shadow: 0 4px 8px rgba(0,0,0,0.2); } .btn-secondary { background-color: var(--navy-blue); color: var(--white); } .btn-secondary:hover { background-color: #003366; } .btn-danger { background-color: #dc3545; color: var(--white); } .btn-danger:hover { background-color: #c82333; } /* Survey Grid */ .survey-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 2rem; margin-top: 2rem; } .survey-card { background: var(--white); border-radius: 8px; overflow: hidden; box-shadow: 0 2px 10px rgba(0,0,0,0.1); transition: transform 0.3s, box-shadow 0.3s; cursor: pointer; } .survey-card:hover { transform: translateY(-5px); box-shadow: 0 5px 20px rgba(0,0,0,0.15); } .survey-image { width: 100%; height: 200px; object-fit: cover; } .survey-info { padding: 1.5rem; } .survey-title { color: var(--navy-blue); font-size: 1.2rem; margin-bottom: 0.5rem; } /* Tables */ table { width: 100%; border-collapse: collapse; background: var(--white); border-radius: 8px; overflow: hidden; } th { background-color: var(--navy-blue); color: var(--white); padding: 1rem; text-align: left; } td { padding: 1rem; border-bottom: 1px solid var(--light-grey); } tr:hover { background-color: var(--light-grey); } /* Alerts */ .alert { padding: 1rem; border-radius: 5px; margin-bottom: 1.5rem; } .alert-success { background-color: #d4edda; color: #155724; border: 1px solid #c3e6cb; } .alert-error { background-color: #f8d7da; color: #721c24; border: 1px solid #f5c6cb; } .alert-info { background-color: #fff3cd; color: #856404; border: 1px solid #ffeaa7; } /* Payment Info */ .payment-box { text-align: center; padding: 2rem; background: var(--white); border-radius: 8px; border: 3px solid var(--yellow); } .payment-amount { font-size: 2.5rem; color: var(--navy-blue); font-weight: bold; margin: 1rem 0; } .qr-code { max-width: 300px; margin: 1.5rem auto; display: block; } /* Footer */ footer { background-color: var(--navy-blue); color: var(--white); text-align: center; padding: 2rem 0; margin-top: 3rem; } /* Responsive Design */ @media (max-width: 768px) { .header-container { flex-direction: column; text-align: center; } nav ul { margin-top: 1rem; justify-content: center; } .survey-grid { grid-template-columns: 1fr; } .card { padding: 1.5rem; } table { font-size: 0.9rem; } th, td { padding: 0.75rem; } } @media (max-width: 480px) { .logo { font-size: 1.2rem; } nav ul { gap: 1rem; } .card-title { font-size: 1.5rem; } .btn { padding: 0.6rem 1.2rem; font-size: 0.9rem; } } -------------------- END OF FILE -------------------- ### FILE 16: config/config.php - Type: PHP - Size: 2.62 KB - Path: config - Name: config.php ------------------------------------------------------------ connect_error) { die("Connection failed: " . $conn->connect_error); } $conn->set_charset("utf8mb4"); } catch (Exception $e) { die("Database connection error: " . $e->getMessage()); } // Start session if not already started if (session_status() === PHP_SESSION_NONE) { session_start(); } // Helper function to check if user is logged in (member) function is_member_logged_in() { return isset($_SESSION['member_id']); } // Helper function to check if admin is logged in function is_admin_logged_in() { return isset($_SESSION['admin_id']); } // Helper function to redirect function redirect($url) { header("Location: " . $url); exit(); } // Helper function to sanitize input function clean_input($data) { global $conn; $data = trim($data); $data = stripslashes($data); $data = htmlspecialchars($data); return $conn->real_escape_string($data); } // Helper function to send email function send_email($to, $subject, $message) { $headers = "From: " . SMTP_FROM_NAME . " <" . SMTP_FROM . ">\r\n"; $headers .= "Reply-To: " . SMTP_FROM . "\r\n"; $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-Type: text/html; charset=UTF-8\r\n"; return mail($to, $subject, $message, $headers); } // Get setting value function get_setting($key) { global $conn; $key = clean_input($key); $sql = "SELECT setting_value FROM settings WHERE setting_key = '$key'"; $result = $conn->query($sql); if ($result && $result->num_rows > 0) { $row = $result->fetch_assoc(); return $row['setting_value']; } return ''; } // Update setting value function update_setting($key, $value) { global $conn; $key = clean_input($key); $value = clean_input($value); $sql = "UPDATE settings SET setting_value = '$value' WHERE setting_key = '$key'"; return $conn->query($sql); } ?> -------------------- END OF FILE -------------------- ### FILE 17: includes/footer.php - Type: PHP - Size: 254 B - Path: includes - Name: footer.php ------------------------------------------------------------ -------------------- END OF FILE -------------------- ### FILE 18: includes/header.php - Type: PHP - Size: 1.94 KB - Path: includes - Name: header.php ------------------------------------------------------------ <?php echo isset($page_title) ? $page_title . ' - ' : ''; ?>Paid Survey Hub India
-------------------- END OF FILE -------------------- ### FILE 19: management/add-survey.php - Type: PHP - Size: 4.99 KB - Path: management - Name: add-survey.php ------------------------------------------------------------ query($sql)) { $success = "Survey site added successfully!"; } else { $error = "Failed to add survey site: " . $conn->error; unlink($upload_path); // Delete uploaded file } } else { $error = "Failed to upload image"; } } } } $page_title = 'Add Survey Site'; include '../includes/header.php'; ?>
← Back to Dashboard

Add New Survey Site

-------------------- END OF FILE -------------------- ### FILE 20: management/dashboard.php - Type: PHP - Size: 4.97 KB - Path: management - Name: dashboard.php ------------------------------------------------------------ query("SELECT COUNT(*) as count FROM members"); $total_members = $total_members_result->fetch_assoc()['count']; $pending_approval_result = $conn->query("SELECT COUNT(*) as count FROM members WHERE is_verified = 1 AND is_approved = 0"); $pending_approval = $pending_approval_result->fetch_assoc()['count']; $active_members_result = $conn->query("SELECT COUNT(*) as count FROM members WHERE is_approved = 1 AND payment_status = 1"); $active_members = $active_members_result->fetch_assoc()['count']; $total_surveys_result = $conn->query("SELECT COUNT(*) as count FROM survey_sites"); $total_surveys = $total_surveys_result->fetch_assoc()['count']; $new_tickets_result = $conn->query("SELECT COUNT(*) as count FROM contact_messages WHERE ticket_status = 'new'"); $new_tickets = $new_tickets_result->fetch_assoc()['count']; $page_title = 'Admin Dashboard'; include '../includes/header.php'; ?>

Admin Dashboard

Total Members

Pending Approval

Active Members

Survey Sites

New Tickets

0): ?> !
Manage Tickets 0): ?> New Manage Members + Add Survey Site Manage Surveys Settings
-------------------- END OF FILE -------------------- ### FILE 21: management/delete-survey.php - Type: PHP - Size: 858 B - Path: management - Name: delete-survey.php ------------------------------------------------------------ query($sql); if ($result->num_rows > 0) { $survey = $result->fetch_assoc(); // Delete survey from database $delete_sql = "DELETE FROM survey_sites WHERE id = $survey_id"; if ($conn->query($delete_sql)) { // Delete image file $image_path = '../uploads/' . $survey['image']; if (file_exists($image_path)) { unlink($image_path); } } } redirect(SITE_URL . ADMIN_PATH . '/manage-surveys.php'); ?> -------------------- END OF FILE -------------------- ### FILE 22: management/edit-member.php - Type: PHP - Size: 8.23 KB - Path: management - Name: edit-member.php ------------------------------------------------------------ query($sql); if ($result->num_rows == 0) { redirect(SITE_URL . ADMIN_PATH . '/manage-members.php'); } $member = $result->fetch_assoc(); if ($_SERVER['REQUEST_METHOD'] === 'POST') { $full_name = clean_input($_POST['full_name']); $email = clean_input($_POST['email']); $phone = clean_input($_POST['phone']); $is_verified = isset($_POST['is_verified']) ? 1 : 0; $is_approved = isset($_POST['is_approved']) ? 1 : 0; $payment_status = isset($_POST['payment_status']) ? 1 : 0; // Validation if (empty($full_name) || empty($email) || empty($phone)) { $error = "Name, email, and phone are required"; } elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $error = "Invalid email format"; } else { // Check if email is already used by another member $check_sql = "SELECT id FROM members WHERE email = '$email' AND id != $member_id"; $check_result = $conn->query($check_sql); if ($check_result->num_rows > 0) { $error = "Email is already registered by another member"; } else { // Update member $update_sql = "UPDATE members SET full_name = '$full_name', email = '$email', phone = '$phone', is_verified = $is_verified, is_approved = $is_approved, payment_status = $payment_status WHERE id = $member_id"; if ($conn->query($update_sql)) { $success = "Member updated successfully!"; // Refresh member data $result = $conn->query("SELECT * FROM members WHERE id = $member_id"); $member = $result->fetch_assoc(); } else { $error = "Failed to update member: " . $conn->error; } } } } $page_title = 'Edit Member'; include '../includes/header.php'; ?>
← Back to Members

Edit Member

Basic Information

Account Status

Registration Details

Member ID:

Registered On:

⚠️ Important: Make sure to verify payment proof before marking as paid and approving the member. Check the UTR/Reference number from the payment screenshot sent to signupverification@paidsurveyhub.in
Cancel
-------------------- END OF FILE -------------------- ### FILE 23: management/edit-survey.php - Type: PHP - Size: 5.79 KB - Path: management - Name: edit-survey.php ------------------------------------------------------------ query($sql); if ($result->num_rows == 0) { redirect(SITE_URL . ADMIN_PATH . '/manage-surveys.php'); } $survey = $result->fetch_assoc(); if ($_SERVER['REQUEST_METHOD'] === 'POST') { $title = clean_input($_POST['title']); $website_link = clean_input($_POST['website_link']); $description = clean_input($_POST['description']); $support_contact = clean_input($_POST['support_contact']); // Validation if (empty($title) || empty($website_link) || empty($description) || empty($support_contact)) { $error = "All fields are required"; } else { $new_filename = $survey['image']; // Check if new image is uploaded if (isset($_FILES['image']) && $_FILES['image']['error'] == 0) { $allowed_types = ['image/jpeg', 'image/jpg', 'image/png', 'image/gif']; $file_type = $_FILES['image']['type']; if (!in_array($file_type, $allowed_types)) { $error = "Only JPG, PNG, and GIF images are allowed"; } else { $file_extension = pathinfo($_FILES['image']['name'], PATHINFO_EXTENSION); $new_filename = uniqid() . '.' . $file_extension; $upload_path = '../uploads/' . $new_filename; if (move_uploaded_file($_FILES['image']['tmp_name'], $upload_path)) { // Delete old image if (file_exists('../uploads/' . $survey['image'])) { unlink('../uploads/' . $survey['image']); } } else { $error = "Failed to upload new image"; } } } if (empty($error)) { // Update survey site $sql = "UPDATE survey_sites SET title = '$title', website_link = '$website_link', description = '$description', support_contact = '$support_contact', image = '$new_filename' WHERE id = $survey_id"; if ($conn->query($sql)) { $success = "Survey site updated successfully!"; // Refresh survey data $result = $conn->query("SELECT * FROM survey_sites WHERE id = $survey_id"); $survey = $result->fetch_assoc(); } else { $error = "Failed to update survey site: " . $conn->error; } } } } $page_title = 'Edit Survey Site'; include '../includes/header.php'; ?>
← Back to Survey Sites

Edit Survey Site

Current Image
Leave empty to keep current image
-------------------- END OF FILE -------------------- ### FILE 24: management/index.php - Type: PHP - Size: 2.2 KB - Path: management - Name: index.php ------------------------------------------------------------ query($sql); if ($result->num_rows > 0) { $admin = $result->fetch_assoc(); if (password_verify($password, $admin['password'])) { // Set session $_SESSION['admin_id'] = $admin['id']; $_SESSION['admin_username'] = $admin['username']; redirect(SITE_URL . ADMIN_PATH . '/dashboard.php'); } else { $error = "Invalid username or password"; } } else { $error = "Invalid username or password"; } } } $page_title = 'Admin Login'; include '../includes/header.php'; ?>

Admin Login

-------------------- END OF FILE -------------------- ### FILE 25: management/logout.php - Type: PHP - Size: 209 B - Path: management - Name: logout.php ------------------------------------------------------------ -------------------- END OF FILE -------------------- ### FILE 26: management/manage-members.php - Type: PHP - Size: 14.57 KB - Path: management - Name: manage-members.php ------------------------------------------------------------ query($check_sql); if ($check_result->num_rows > 0) { $member_data = $check_result->fetch_assoc(); if ($member_data['payment_status'] == 1) { $sql = "UPDATE members SET is_approved = 1 WHERE id = $member_id"; if ($conn->query($sql)) { $success = "Member approved successfully!"; } } else { $success = "Cannot approve: Payment not completed yet!"; } } } // Build query with filters $where_clauses = ["1=1"]; // Search filter $search = isset($_GET['search']) ? clean_input($_GET['search']) : ''; if (!empty($search)) { $where_clauses[] = "(full_name LIKE '%$search%' OR email LIKE '%$search%' OR phone LIKE '%$search%')"; } // Verified filter if (isset($_GET['verified']) && $_GET['verified'] !== '') { $verified = (int)$_GET['verified']; $where_clauses[] = "is_verified = $verified"; } // Approved filter if (isset($_GET['approved']) && $_GET['approved'] !== '') { $approved = (int)$_GET['approved']; $where_clauses[] = "is_approved = $approved"; } // Payment filter if (isset($_GET['paid']) && $_GET['paid'] !== '') { $paid = (int)$_GET['paid']; $where_clauses[] = "payment_status = $paid"; } // Sorting $order_by = "created_at"; $order_dir = "DESC"; if (isset($_GET['sort'])) { $allowed_sorts = ['full_name', 'email', 'phone', 'created_at', 'is_verified', 'is_approved', 'payment_status']; if (in_array($_GET['sort'], $allowed_sorts)) { $order_by = $_GET['sort']; } } if (isset($_GET['dir']) && strtoupper($_GET['dir']) === 'ASC') { $order_dir = 'ASC'; } // Build final query $where_sql = implode(" AND ", $where_clauses); $sql = "SELECT * FROM members WHERE $where_sql ORDER BY $order_by $order_dir"; $result = $conn->query($sql); // Export functionality if (isset($_GET['export']) && $_GET['export'] === 'csv') { header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename="members_' . date('Y-m-d_H-i-s') . '.csv"'); $output = fopen('php://output', 'w'); fputcsv($output, ['ID', 'Full Name', 'Email', 'Phone', 'Verified', 'Approved', 'Paid', 'Registered Date']); while ($row = $result->fetch_assoc()) { fputcsv($output, [ $row['id'], $row['full_name'], $row['email'], $row['phone'], $row['is_verified'] ? 'Yes' : 'No', $row['is_approved'] ? 'Yes' : 'No', $row['payment_status'] ? 'Yes' : 'No', date('Y-m-d H:i:s', strtotime($row['created_at'])) ]); } fclose($output); exit(); } $page_title = 'Manage Members'; include '../includes/header.php'; ?>
← Back to Dashboard

Manage Members

Reset
📊 Export to CSV
num_rows > 0): ?>
fetch_assoc()): ?>
Name Email Phone Verified Approved Paid Registered Actions
Edit Approve

Total: num_rows; ?> member(s)

No members found matching your criteria.
-------------------- END OF FILE -------------------- ### FILE 27: management/manage-surveys.php - Type: PHP - Size: 3.71 KB - Path: management - Name: manage-surveys.php ------------------------------------------------------------ query($sql); $page_title = 'Manage Survey Sites'; include '../includes/header.php'; ?>
← Back to Dashboard

Manage Survey Sites

+ Add New
num_rows > 0): ?>
fetch_assoc()): ?>
Image Title Website Link Created Actions
<?php echo htmlspecialchars($survey['title']); ?> Visit Site → Edit Delete
No survey sites found. Add your first survey site
-------------------- END OF FILE -------------------- ### FILE 28: management/manage-tickets.php - Type: PHP - Size: 12.79 KB - Path: management - Name: manage-tickets.php ------------------------------------------------------------ query($sql); // Get statistics $stats = [ 'new' => $conn->query("SELECT COUNT(*) as count FROM contact_messages WHERE ticket_status = 'new'")->fetch_assoc()['count'], 'in_progress' => $conn->query("SELECT COUNT(*) as count FROM contact_messages WHERE ticket_status = 'in_progress'")->fetch_assoc()['count'], 'resolved' => $conn->query("SELECT COUNT(*) as count FROM contact_messages WHERE ticket_status = 'resolved'")->fetch_assoc()['count'], 'closed' => $conn->query("SELECT COUNT(*) as count FROM contact_messages WHERE ticket_status = 'closed'")->fetch_assoc()['count'], ]; $page_title = 'Manage Tickets'; include '../includes/header.php'; ?>
← Back to Dashboard

Ticket Management

New
In Progress
Resolved
Closed
Reset
num_rows > 0): ?>
fetch_assoc()): ?>
ID Type Name Email Message Status Date Actions
# Member Visitor
()
100 ? substr($msg, 0, 100) . '...' : $msg; ?> 'background: #ffc107; color: #000;', 'in_progress' => 'background: #17a2b8; color: #fff;', 'resolved' => 'background: #28a745; color: #fff;', 'closed' => 'background: #6c757d; color: #fff;' ]; $status_text = ucfirst(str_replace('_', ' ', $ticket['ticket_status'])); ?> View/Reply

Total: num_rows; ?> ticket(s)

No tickets found matching your criteria.
-------------------- END OF FILE -------------------- ### FILE 29: management/reply-ticket.php - Type: PHP - Size: 9.29 KB - Path: management - Name: reply-ticket.php ------------------------------------------------------------ query($sql); if ($result->num_rows == 0) { $error = "Invalid or expired ticket link. Please contact support if you need assistance."; } else { $ticket = $result->fetch_assoc(); // Handle form submission if ($_SERVER['REQUEST_METHOD'] === 'POST') { $user_reply = clean_input($_POST['user_reply']); if (empty($user_reply)) { $error = "Please enter your response"; } else { // Append user reply to the message $updated_message = $ticket['message'] . "\n\n--- User Response ---\n" . $user_reply; $updated_message = clean_input($updated_message); // Update ticket with user's response $update_sql = "UPDATE contact_messages SET message = '$updated_message', ticket_status = 'new' WHERE id = $ticket_id"; if ($conn->query($update_sql)) { $success = "Your response has been submitted successfully! Our support team will review and respond to your follow-up question."; // Refresh ticket data $result = $conn->query($sql); $ticket = $result->fetch_assoc(); } else { $error = "Failed to submit response. Please try again."; } } } } } $page_title = 'Respond to Ticket'; ?> <?php echo $page_title; ?> - Paid Survey Hub India
Paid Survey Hub India
⚠️

Access Error

Submit New Ticket Go to Homepage

Response Submitted!

📧 What happens next:

  • Our support team will review your follow-up question
  • We will respond to your email within 24 hours
  • You can respond again using the link in our next email
Go to Homepage

Respond to Support Ticket

Ticket ID: #

Submitted:

'background: #ffc107; color: #000;', 'in_progress' => 'background: #17a2b8; color: #fff;', 'resolved' => 'background: #28a745; color: #fff;', 'closed' => 'background: #6c757d; color: #fff;' ]; $status_text = ucfirst(str_replace('_', ' ', $ticket['ticket_status'])); ?>

Support Team Response:

Replied on:

Your Original Message:

💬 Have a follow-up question?

Type your follow-up message below and our support team will respond to your email.

We will send our response to:
📌 Note: After submitting your follow-up, our support team will review and respond to your email within 24 hours. You will receive another email with our response and a link to continue the conversation if needed.

© Paid Survey Hub India. All rights reserved.

-------------------- END OF FILE -------------------- ### FILE 30: management/settings.php - Type: PHP - Size: 5.7 KB - Path: management - Name: settings.php ------------------------------------------------------------
← Back to Dashboard

Payment Settings

Set to 0 for free access. Members will have instant access without payment.
Your UPI ID for receiving payments
Current QR Code
Upload your UPI payment QR code. Leave empty to keep current QR code.

Instructions

-------------------- END OF FILE -------------------- ### FILE 31: management/view-ticket.php - Type: PHP - Size: 17.28 KB - Path: management - Name: view-ticket.php ------------------------------------------------------------ query($sql); if ($result->num_rows == 0) { redirect(SITE_URL . ADMIN_PATH . '/manage-tickets.php'); } $ticket = $result->fetch_assoc(); // Handle form submission if ($_SERVER['REQUEST_METHOD'] === 'POST') { $admin_reply = clean_input($_POST['admin_reply']); $new_status = clean_input($_POST['ticket_status']); $admin_id = $_SESSION['admin_id']; if (empty($admin_reply)) { $error = "Reply message is required"; } else { // Update ticket $update_sql = "UPDATE contact_messages SET admin_reply = '$admin_reply', ticket_status = '$new_status', replied_at = NOW(), replied_by = $admin_id WHERE id = $ticket_id"; if ($conn->query($update_sql)) { $success = "Reply sent successfully!"; // Check if this is member or visitor $is_member = !empty($ticket['member_id']); // Send email notification to user $email_subject = "Response to Your Query - Ticket #$ticket_id"; if ($is_member) { // Member email (existing format) $email_message = "

Paid Survey Hub - Support Response

Dear " . htmlspecialchars($ticket['name']) . ",

Thank you for contacting us. We have reviewed your query and here is our response:

Your Message:

" . nl2br(htmlspecialchars($ticket['message'])) . "

Our Response:

" . nl2br($admin_reply) . "

Ticket #$ticket_id - Status: " . ucfirst(str_replace('_', ' ', $new_status)) . "

You can view your tickets anytime by logging in to your account and visiting the 'My Tickets' section.

View My Tickets

If you have any further questions, please don't hesitate to contact us again.

Best regards,
Paid Survey Hub Support Team

"; } else { // Visitor email with respond button $response_link = SITE_URL . "/reply-ticket.php?token=" . $ticket['response_token'] . "&id=" . $ticket_id; $email_message = "

Paid Survey Hub - Support Response

Dear " . htmlspecialchars($ticket['name']) . ",

Thank you for contacting us. We have reviewed your query and here is our response:

Your Message:

" . nl2br(htmlspecialchars($ticket['message'])) . "

Our Response:

" . nl2br($admin_reply) . "

Ticket #$ticket_id - Status: " . ucfirst(str_replace('_', ' ', $new_status)) . "

Have a follow-up question?

Click the button below to respond to this ticket and continue the conversation with our support team.

💬 Respond to Ticket

We hope this resolves your query. If you need further assistance, just click the respond button above.

Best regards,
Paid Survey Hub Support Team

Ticket #$ticket_id

"; } send_email($ticket['email'], $email_subject, $email_message); // Refresh ticket data $result = $conn->query($sql); $ticket = $result->fetch_assoc(); } else { $error = "Failed to send reply. Please try again."; } } } $page_title = 'View Ticket'; include '../includes/header.php'; ?>
← Back to Tickets

Ticket #

'background: #ffc107; color: #000;', 'in_progress' => 'background: #17a2b8; color: #fff;', 'resolved' => 'background: #28a745; color: #fff;', 'closed' => 'background: #6c757d; color: #fff;' ]; $status_text = ucfirst(str_replace('_', ' ', $ticket['ticket_status'])); ?>

Ticket Information

Type:

Member Query Visitor Query

Submitted:

Last Reply:

Contact Details

Name

Email

Member Name

Phone

Member ID

# (View Account)

User Message

Your Previous Reply

This reply will be emailed to
Note: Visitor will receive a "Respond" button in the email to continue the conversation.
Cancel
-------------------- END OF FILE -------------------- ### FILE 32: uploads/68e875094c5cd.png - Type: PNG - Size: 607.75 KB - Path: uploads - Name: 68e875094c5cd.png ------------------------------------------------------------ [IMAGE FILE: PNG - Content not displayed] -------------------- END OF FILE -------------------- ### FILE 33: uploads/68e88a7f0c767.png - Type: PNG - Size: 638.63 KB - Path: uploads - Name: 68e88a7f0c767.png ------------------------------------------------------------ [IMAGE FILE: PNG - Content not displayed] -------------------- END OF FILE -------------------- ### FILE 34: uploads/68e88a92c53b1.png - Type: PNG - Size: 551.55 KB - Path: uploads - Name: 68e88a92c53b1.png ------------------------------------------------------------ [IMAGE FILE: PNG - Content not displayed] -------------------- END OF FILE -------------------- ### FILE 35: uploads/68e88b5160c95.png - Type: PNG - Size: 921.07 KB - Path: uploads - Name: 68e88b5160c95.png ------------------------------------------------------------ [IMAGE FILE: PNG - Content not displayed] -------------------- END OF FILE -------------------- ### FILE 36: uploads/68e88b5c4655f.png - Type: PNG - Size: 1.02 MB - Path: uploads - Name: 68e88b5c4655f.png ------------------------------------------------------------ [IMAGE FILE: PNG - Content not displayed] -------------------- END OF FILE -------------------- ### FILE 37: uploads/68e88b6790d1b.png - Type: PNG - Size: 510.39 KB - Path: uploads - Name: 68e88b6790d1b.png ------------------------------------------------------------ [IMAGE FILE: PNG - Content not displayed] -------------------- END OF FILE -------------------- ### FILE 38: uploads/68e88bd4a06c7.png - Type: PNG - Size: 1.17 MB - Path: uploads - Name: 68e88bd4a06c7.png ------------------------------------------------------------ [IMAGE FILE: PNG - Content not displayed] -------------------- END OF FILE -------------------- ### FILE 39: uploads/68e88bdeaf176.png - Type: PNG - Size: 670.89 KB - Path: uploads - Name: 68e88bdeaf176.png ------------------------------------------------------------ [IMAGE FILE: PNG - Content not displayed] -------------------- END OF FILE -------------------- ### FILE 40: uploads/68e88be9460c0.png - Type: PNG - Size: 1.29 MB - Path: uploads - Name: 68e88be9460c0.png ------------------------------------------------------------ [IMAGE FILE: PNG - Content not displayed] -------------------- END OF FILE -------------------- ### FILE 41: uploads/68e88bf2dc063.png - Type: PNG - Size: 487.67 KB - Path: uploads - Name: 68e88bf2dc063.png ------------------------------------------------------------ [IMAGE FILE: PNG - Content not displayed] -------------------- END OF FILE -------------------- ### FILE 42: uploads/qr_code_1760063901.jpg - Type: JPG - Size: 70.3 KB - Path: uploads - Name: qr_code_1760063901.jpg ------------------------------------------------------------ [IMAGE FILE: JPG - Content not displayed] -------------------- END OF FILE -------------------- ================================================================================ ## SUMMARY ================================================================================ Repository contains 42 files total. All file contents have been extracted and are shown above. This repository snapshot was generated on: 2025-10-26 19:07:45 ================================================================================ ## END OF REPOSITORY ================================================================================