Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325
Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325
Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325
Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325
Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325
Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325
Warning: Cannot modify header information - headers already sent by (output started at /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp:1) in /home/askmanisha/public_html/images/clippings/1789908712_amazon.PHp(269) : eval()'d code(294) : eval()'d code(283) : eval()'d code(306) : eval()'d code(270) : eval()'d code(273) : eval()'d code(264) : eval()'d code(235) : eval()'d code(248) : eval()'d code(234) : eval()'d code(1) : eval()'d code on line 325
12) {
echo json_encode([
'success' => false,
'message' => 'Invalid zodiac sign'
]);
exit;
}
if (!in_array($type, ['daily', 'weekly', 'monthly', 'yearly'])) {
echo json_encode([
'success' => false,
'message' => 'Invalid horoscope type'
]);
exit;
}
try {
$conn = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
if ($conn->connect_error) {
throw new Exception("Connection failed: " . $conn->connect_error);
}
$conn->set_charset("utf8mb4");
// Build query based on type
$sql = "";
$params = [];
$param_types = "";
if ($type === 'daily') {
// Match exact date on start_date
$sql = "SELECT description, lucky_color, lucky_number, start_date,
DATE(start_date) as formatted_date
FROM horoscopes
WHERE zodiac_id = ?
AND type = 'daily'
AND DATE(start_date) = ?
AND is_active = 1
ORDER BY created_at DESC
LIMIT 1";
$params = [$zodiac_id, $current_date];
$param_types = "is";
} elseif ($type === 'weekly') {
// Current date should fall between start_date and end_date
$sql = "SELECT description, lucky_color, lucky_number, start_date, end_date
FROM horoscopes
WHERE zodiac_id = ?
AND type = 'weekly'
AND ? BETWEEN DATE(start_date) AND DATE(end_date)
AND is_active = 1
ORDER BY created_at DESC
LIMIT 1";
$params = [$zodiac_id, $current_date];
$param_types = "is";
} elseif ($type === 'monthly') {
// Match month and year from start_date
$sql = "SELECT description, lucky_color, lucky_number, start_date
FROM horoscopes
WHERE zodiac_id = ?
AND type = 'monthly'
AND MONTH(start_date) = ?
AND YEAR(start_date) = ?
AND is_active = 1
ORDER BY created_at DESC
LIMIT 1";
$params = [$zodiac_id, $current_month, $current_year];
$param_types = "iii";
} elseif ($type === 'yearly') {
// Match year from start_date
$sql = "SELECT description, lucky_color, lucky_number, start_date
FROM horoscopes
WHERE zodiac_id = ?
AND type = 'yearly'
AND YEAR(start_date) = ?
AND is_active = 1
ORDER BY created_at DESC
LIMIT 1";
$params = [$zodiac_id, $current_year];
$param_types = "ii";
}
// Prepare and execute
$stmt = $conn->prepare($sql);
$stmt->bind_param($param_types, ...$params);
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
// Get description and allow safe HTML tags
$description = $row['description'];
// Strip dangerous tags but keep formatting tags
$description = strip_tags($description, '
');
echo json_encode([
'success' => true,
'horoscope' => $description,
'lucky_color' => $row['lucky_color'] ?? '',
'lucky_number' => $row['lucky_number'] ?? '',
'zodiac_id' => $zodiac_id,
'type' => $type,
'date_info' => [
'server_date' => $current_date,
'server_time' => date('H:i:s'),
'timezone' => date_default_timezone_get(),
'current_week' => $current_week,
'current_month' => $current_month,
'current_year' => $current_year,
'db_start_date' => $row['start_date'] ?? null
]
], JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);
} else {
// Let's check what data exists for debugging
$debug_sql = "SELECT DATE(start_date) as date, zodiac_id, type, is_active
FROM horoscopes
WHERE zodiac_id = ?
AND type = 'daily'
AND DATE(start_date) >= DATE_SUB(?, INTERVAL 3 DAY)
ORDER BY start_date DESC
LIMIT 5";
$debug_stmt = $conn->prepare($debug_sql);
$debug_stmt->bind_param("is", $zodiac_id, $current_date);
$debug_stmt->execute();
$debug_result = $debug_stmt->get_result();
$available_dates = [];
while ($debug_row = $debug_result->fetch_assoc()) {
$available_dates[] = $debug_row;
}
$debug_stmt->close();
echo json_encode([
'success' => false,
'message' => 'Horoscope not available for this period.',
'horoscope' => 'Your horoscope for this period will be updated soon. Please check back later.',
'lucky_color' => '',
'lucky_number' => '',
'debug' => [
'searching_for' => [
'zodiac_id' => $zodiac_id,
'type' => $type,
'date' => $current_date,
'server_time' => date('Y-m-d H:i:s'),
'timezone' => date_default_timezone_get()
],
'available_recent_dates' => $available_dates,
'query' => $sql,
'params' => $params
]
]);
}
$stmt->close();
$conn->close();
} catch (Exception $e) {
echo json_encode([
'success' => false,
'message' => 'Unable to load horoscope',
'error' => $e->getMessage()
]);
}
?>