query($sql); if (!$result || $result->num_rows == 0) { header('Location: ' . SITE_URL . '/'); exit; } $survey = $result->fetch_assoc(); // Check if proof columns exist before selecting them $proof_cols = ''; $cols_result = $conn->query("SHOW COLUMNS FROM survey_reviews LIKE 'proof_file'"); if ($cols_result && $cols_result->num_rows > 0) { $proof_cols = ', proof_file, proof_type'; } // Fetch approved reviews $reviews_sql = "SELECT rating, feedback{$proof_cols}, reviewer_name, reviewer_location, reviewer_email, created_at, helpful_count FROM survey_reviews WHERE survey_id = $survey_id AND is_approved = 1 ORDER BY created_at DESC LIMIT 20"; $reviews_result = $conn->query($reviews_sql); // Rating breakdown $breakdown_sql = "SELECT rating, COUNT(*) as cnt FROM survey_reviews WHERE survey_id = $survey_id AND is_approved = 1 GROUP BY rating ORDER BY rating DESC"; $breakdown_result = $conn->query($breakdown_sql); $breakdown = [5=>0, 4=>0, 3=>0, 2=>0, 1=>0]; if ($breakdown_result) { while ($row = $breakdown_result->fetch_assoc()) { $breakdown[(int)$row['rating']] = (int)$row['cnt']; } } // Handle review submission $review_success = false; $review_error = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['submit_review'])) { // Honeypot spam check if (!empty($_POST['website_url'])) { $review_error = 'Spam detected.'; } else { $rating = (int)($_POST['rating'] ?? 0); $feedback = trim($conn->real_escape_string($_POST['feedback'] ?? '')); $name = trim($conn->real_escape_string(substr($_POST['reviewer_name'] ?? '', 0, 100))); $location = trim($conn->real_escape_string(substr($_POST['reviewer_location'] ?? '', 0, 100))); $email_raw = trim($_POST['reviewer_email'] ?? ''); $newsletter_consent = isset($_POST['newsletter_consent']) ? 1 : 0; $ip = $conn->real_escape_string($_SERVER['REMOTE_ADDR'] ?? ''); // Validate if ($rating < 1 || $rating > 5) { $review_error = 'Please select a star rating.'; } elseif (empty($name)) { $review_error = 'Please enter your name.'; } elseif (empty($email_raw) || !filter_var($email_raw, FILTER_VALIDATE_EMAIL)) { $review_error = 'Please enter a valid email address. Your email is required to verify your review.'; } elseif (strlen($feedback) < 20) { $review_error = 'Please write at least 20 characters in your review.'; } else { $email = $conn->real_escape_string(substr($email_raw, 0, 255)); // Handle proof file upload $proof_file = null; $proof_type = null; if (!empty($_FILES['proof_file']['name']) && $_FILES['proof_file']['error'] === UPLOAD_ERR_OK) { $allowed_types = ['image/jpeg','image/jpg','image/png','image/gif','application/pdf']; $file_type = mime_content_type($_FILES['proof_file']['tmp_name']); $file_size = $_FILES['proof_file']['size']; if (!in_array($file_type, $allowed_types)) { $review_error = 'Only JPG, PNG, GIF images or PDF files are allowed as proof.'; } elseif ($file_size > 5 * 1024 * 1024) { $review_error = 'Proof file must be under 5MB.'; } else { $ext = pathinfo($_FILES['proof_file']['name'], PATHINFO_EXTENSION); $proof_file = 'review_proof_' . time() . '_' . rand(1000,9999) . '.' . strtolower($ext); $upload_dir = 'uploads/review_proofs/'; if (!is_dir($upload_dir)) mkdir($upload_dir, 0755, true); if (!move_uploaded_file($_FILES['proof_file']['tmp_name'], $upload_dir . $proof_file)) { $proof_file = null; } else { $proof_type = (strpos($file_type, 'pdf') !== false) ? 'pdf' : 'image'; } } } if (!$review_error) { // Rate limiting — 1 review per IP per survey per day $rate_check = "SELECT COUNT(*) as cnt FROM survey_reviews WHERE survey_id = $survey_id AND ip_address = '$ip' AND created_at > DATE_SUB(NOW(), INTERVAL 24 HOUR)"; $rate_row = $conn->query($rate_check)->fetch_assoc(); // Same email check $email_check = "SELECT COUNT(*) as cnt FROM survey_reviews WHERE survey_id = $survey_id AND reviewer_email = '$email'"; $email_row = $conn->query($email_check)->fetch_assoc(); if ($rate_row['cnt'] > 0) { $review_error = 'You have already submitted a review for this platform today. Please wait 24 hours.'; } elseif ($email_row['cnt'] > 0) { $review_error = 'A review from this email address already exists for this platform.'; } else { $name_val = !empty($name) ? "'$name'" : "'Anonymous'"; $loc_val = !empty($location) ? "'" . $conn->real_escape_string($location) . "'" : "NULL"; $proof_file_val = $proof_file ? "'" . $conn->real_escape_string($proof_file) . "'" : "NULL"; $proof_type_val = $proof_type ? "'" . $conn->real_escape_string($proof_type) . "'" : "NULL"; // Build INSERT — include proof columns only if they exist $proof_col_sql = $proof_cols ? ", proof_file, proof_type" : ""; $proof_val_sql = $proof_cols ? ", {$proof_file_val}, {$proof_type_val}" : ""; $insert = "INSERT INTO survey_reviews (survey_id, member_id, reviewer_name, reviewer_location, reviewer_email, newsletter_consent, rating, feedback, is_approved, ip_address{$proof_col_sql}) VALUES ($survey_id, NULL, $name_val, $loc_val, '$email', $newsletter_consent, $rating, '$feedback', 0, '$ip'{$proof_val_sql})"; if ($conn->query($insert)) { if ($newsletter_consent) { $survey_name_esc = $conn->real_escape_string($survey['title']); $sub_sql = "INSERT INTO newsletter_subscribers (email, name, source, source_survey_id, source_survey_name, ip_address) VALUES ('$email', $name_val, 'review_form', $survey_id, '$survey_name_esc', '$ip') ON DUPLICATE KEY UPDATE is_active=1, unsubscribed_at=NULL, name=COALESCE(name, $name_val)"; $conn->query($sub_sql); } $review_success = true; } else { $review_error = 'Something went wrong. Please try again.'; } } } } } } // Helper: parse contact field → smart display function parse_contact($contact) { $contact = trim($contact); if (empty($contact)) return null; // Check if it contains an email if (filter_var($contact, FILTER_VALIDATE_EMAIL)) { return ['type' => 'email', 'value' => $contact, 'display' => $contact]; } // Check if contains email within text if (preg_match('/[\w.+-]+@[\w-]+\.[\w.]+/', $contact, $m)) { return ['type' => 'email', 'value' => $m[0], 'display' => $m[0]]; } // It's a URL — extract domain for display $url = $contact; if (!preg_match('/^https?:\/\//', $url)) $url = 'https://' . $url; $parsed = parse_url($url); $domain = $parsed['host'] ?? $url; $domain = preg_replace('/^www\./', '', $domain); return ['type' => 'url', 'value' => $url, 'display' => 'Contact Form (' . $domain . ')']; } function mask_email($email) { if (empty($email)) return ''; $parts = explode('@', $email); if (count($parts) !== 2) return '***@***.***'; $name = $parts[0]; $domain = $parts[1]; $masked_name = substr($name, 0, 1) . str_repeat('*', max(2, strlen($name) - 1)); $domain_parts = explode('.', $domain); $masked_domain = substr($domain_parts[0], 0, 1) . str_repeat('*', max(2, strlen($domain_parts[0]) - 1)); $tld = implode('.', array_slice($domain_parts, 1)); return $masked_name . '@' . $masked_domain . '.' . $tld; } function render_stars_html($rating, $size = '1rem') { $full = floor($rating); $empty = 5 - $full; $html = ''; $html .= str_repeat('★', $full) . '' . str_repeat('★', $empty) . ''; $html .= ''; return $html; } $contact_info = parse_contact($survey['support_contact']); $total_reviews = (int)$survey['review_count']; $avg_rating = round($survey['avg_rating'], 1); $page_title = htmlspecialchars($survey['title']) . ' Review 2026 — Is it Legitimate? | PaidSurveyHub India'; $meta_description = 'Read verified member reviews of ' . htmlspecialchars($survey['title']) . '. See star ratings, honest feedback from Indian users, payment details, and whether it\'s worth joining in 2026.'; $canonical = SITE_URL . '/survey-detail.php?id=' . $survey_id; $extra_schema = ''; // Always output Product schema — include offers (required by Google) and aggregateRating when available $schema_data = [ "@context" => "https://schema.org", "@type" => "Product", "name" => $survey['title'], "url" => $survey['website_link'], "image" => SITE_URL . '/uploads/' . $survey['image'], "description" => substr(strip_tags($survey['description']), 0, 300), "offers" => [ "@type" => "Offer", "price" => "0", "priceCurrency" => "INR", "description" => "Free to join — no registration fee", "availability" => "https://schema.org/InStock", ], ]; if ($total_reviews > 0) { $schema_data["aggregateRating"] = [ "@type" => "AggregateRating", "ratingValue" => $avg_rating, "reviewCount" => (int)$total_reviews, "bestRating" => 5, "worstRating" => 1, ]; } $extra_schema = ''; include 'includes/header.php'; ?>
🏆 Rank # in India

0): ?>
/5 review1?'s':''; ?>
✓ Verified 🆓 Free to Join 🇮🇳 India-Based 💳 UPI Payment

About

How to Get Started

  1. Click "Visit " above to go to their website
  2. Click "Sign Up" or "Join Free" on their site — it's always free
  3. Fill in your demographic details honestly — this determines which surveys you receive
  4. Verify your email address by clicking the link they send you
  5. Complete all profile/profiler surveys to unlock more survey invitations
  6. Log in daily, complete surveys, and request a withdrawal when you hit the minimum payout

Member Reviews

0): ?> ✍ Write a Review
0): ?>
review1?'s':''; ?>
0 ? round(($cnt / $total_reviews) * 100) : 0; ?>
fetch_assoc()): ?>
' . str_repeat('★', 5-$full) . ''; ?> /5 ✓ Verified Review
📍

📎 Member Proof
Member proof
Click image to view full size
📄 View PDF Proof ↗

No reviews yet

Be the first to share your experience with this platform.

Write the First Review

Have you used ?

Share your honest experience — help other Indians decide. Proof or screenshot required for approval.

✍ Write a Review
Rate it:
Click a star to begin

Write Your Review

All reviews are verified before publishing. You can upload payment proof or a complaint screenshot to strengthen your review.

✓ Thank you for your review! It has been submitted and will appear here once our team approves it — usually within 24 hours.
📩 You've also been added to our newsletter.
= 1; $i--): ?> >
Click a star to rate
Required to verify your review. Never displayed publicly.
Minimum 20 characters. Maximum 2,000 characters.
📎
Drop your proof here or click to browse
Payment screenshot, reward proof, or complaint — JPG, PNG, GIF or PDF · Max 5MB
This helps other members trust your review. Your proof will be shown alongside your review after approval.
📋 Important — Proof Required for Approval: Regardless of whether your experience is positive or negative, only reviews supported by a screenshot or proof will be approved. Please upload a payment proof, survey completion screenshot, or any relevant evidence using the upload field above. Reviews without proof will not be published. By submitting you agree to our Terms.
⚠️ Disclaimer: PaidSurveyHub India is an independent directory. We are not affiliated with this platform and do not conduct surveys. Earnings are not guaranteed. Always research a platform before providing personal information.

Quick Facts

Verified
✓ Yes
Free to Join
✓ Yes
Payment Method
UPI (PhonePe · GPay · Paytm)
Min. Payout
₹250 (500 pts × ₹0.50)
Based In
India (Tamil Nadu)
Members
50,000+
Founded
2021
Our Rank
# in India
0): ?>
Rating
/5 ( reviews)
Support
🚀

Ready to Join?

It's free. No investment required.

Visit

Tips for Success

  • Complete your profile 100% on day 1
  • Log in daily — surveys close when quotas fill
  • Answer honestly — inconsistencies get flagged
  • Check email promptly for invitations
  • Join 3–5 platforms to maximise earnings
Read all earning tips →

Other Sites to Try

query($other_sql); if ($other_result): while ($other = $other_result->fetch_assoc()): ?> <?php echo htmlspecialchars($other['title']); ?> # View all survey sites →