🖥️ Server: LiteSpeed
💻 System: Linux in-mum-web1643.main-hosting.eu 5.14.0-687.46.1.el9_8.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Sep 11 09:03:19 EDT 2026 x86_64
👤 User: u621169360 (621169360)
🐘 PHP: 8.2.33
🚫 Disabled: system, exec, shell_exec, passthru, mysql_list_dbs, ini_alter, dl, link, chgrp, leak, popen, apache_child_terminate, virtual, mb_send_mail
📄 question_add.php
📁 Path: /home/u621169360/domains/agriexpertt.com/public_html/mobile/Flutter/question_add.php
📊 Size: 4.75 KB
🔒 Perm: 0644
📝 MIME: text/x-php
<?php
// Enable error reporting for debugging
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
// Enable CORS headers
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST");
header("Access-Control-Allow-Headers: Content-Type");
require_once 'db.php';
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Start a database transaction
$pdo->beginTransaction();
try {
$baseUploadDir = "assets/uploads/photos/";
function uploadPhoto($fieldName, $baseUploadDir) {
if(isset($_FILES[$fieldName]) && $_FILES[$fieldName]['error'] == UPLOAD_ERR_OK) {
$tmpName = $_FILES[$fieldName]['tmp_name'];
$originalFileName = basename($_FILES[$fieldName]['name']);
// Generate MD5 hash using the original file name and current date-time
$encryptedFileName = md5($originalFileName . date('Y-m-d H:i:s')) . "." . pathinfo($originalFileName, PATHINFO_EXTENSION);
// Create year, month, and date directories
$targetDir = $baseUploadDir . date('Y/m/d/');
if (!is_dir($targetDir)) {
mkdir($targetDir, 0777, true);
}
$targetFilePath = $targetDir . $encryptedFileName;
if(move_uploaded_file($tmpName, $targetFilePath)) {
return $targetFilePath; // Return the full path for storage in the database
} else {
throw new Exception("Error uploading file: " . $fieldName);
}
}
return null;
}
// Create an array for uploaded photos
$photos = [];
for ($i = 0; $i < 5; $i++) {
$photos["question_photo_" . ($i + 1)] = uploadPhoto('image' . $i, $baseUploadDir);
}
$data = [
'question_cat' => $_POST['question_cat'],
'question_subcat' => $_POST['question_subcat'],
'question_cus_name' => $_POST['question_cus_name'],
'question_cus_mobile' => $_POST['question_cus_mobile'],
'question_cus_id' => $_POST['question_cus_id'],
'question_age_no' => $_POST['question_age_no'],
'question_age_period' => $_POST['question_age_period'],
'question_question_description' => $_POST['question_question_description'],
'status' => 'Pending'
];
$data = array_merge($data, $photos); // Add the photo data to the main data array
// First, check and decrement questions left
$mobileNumber = $_POST['question_cus_mobile'];
$checkMembershipStmt = $pdo->prepare("
SELECT id, mem_question_left
FROM membership
WHERE mem_mobile = :mobile
AND mem_end_date >= CURDATE()
AND mem_question_left > 0
");
$checkMembershipStmt->execute(['mobile' => $mobileNumber]);
$membership = $checkMembershipStmt->fetch(PDO::FETCH_ASSOC);
if (!$membership) {
throw new Exception("No active membership or no questions left");
}
// Decrement questions left
$updateQuestionsStmt = $pdo->prepare("
UPDATE membership
SET mem_question_left = mem_question_left - 1
WHERE id = :id
");
$updateQuestionsStmt->execute(['id' => $membership['id']]);
// Insert the question
$sql = "INSERT INTO questions (question_cat, question_subcat, question_cus_name, question_cus_mobile, question_cus_id, question_age_no, question_age_period, question_question_description, question_photo_1, question_photo_2, question_photo_3, question_photo_4, question_photo_5, status)
VALUES (:question_cat, :question_subcat, :question_cus_name, :question_cus_mobile, :question_cus_id, :question_age_no, :question_age_period, :question_question_description, :question_photo_1, :question_photo_2, :question_photo_3, :question_photo_4, :question_photo_5, :status)";
$stmt = $pdo->prepare($sql);
$stmt->execute($data);
// Commit the transaction
$pdo->commit();
// Prepare response with remaining questions
$response = [
'status' => 'success',
'message' => 'Question added successfully',
'questionsLeft' => $membership['mem_question_left'] - 1
];
echo json_encode($response);
} catch(Exception $e) {
// Rollback the transaction in case of error
$pdo->rollBack();
// Prepare error response
$response = [
'status' => 'error',
'message' => $e->getMessage()
];
echo json_encode($response);
exit;
}
}
?>
✨ File Manager Magic ✨