Savannah James, wife of NBA icon LeBron James, recently made a heartfelt revelation about the early days of their relationship. In an unexpected confession, she admitted, “I wasn’t always the confident and supportive partner I am today.” Her words...
Ayesha Curry, celebrity chef, entrepreneur, and mother of four, recently celebrated a significant milestone in her career, marking years of success since the release of her debut cookbook. Known for her candid approach to balancing motherhood and her professional...
In the latest development surrounding the on-court tension between Angel Reese, a standout player for LSU's women's basketball team, and former swimmer Riley Gaines, tensions have escalated into a public war of words. This comes on the heels of...
Chicago Sky Star Rejects Idea of Playing With Caitlin Clark, Indiana Fever
Spencer
As the WNBA regular season has come to a close, a Chicago Sky star has rejected the idea of playing with Caitlin Clark and the Indiana Fever.
The WNBA...
New Angle of Caitlin Clark's Incredible Deep Ball in Season Finale Goes Viral
A new angle of Caitlin Clark's beautiful shot in the Fever's season finale went viral.
The 2024 WNBA regular season officially came to an end for Caitlin Clark...
Indiana Fever star rookie Caitlin Clark was one of the most highly anticipated players in WNBA history, as she dominated in her time in the NCAA. That said, she naturally had unbelievably high expectations entering the league as the...
In a stunning revelation that has taken both sports fans and the general public by surprise, WNBA star Britney Griner has confirmed a shocking twist in her personal life.
Griner, widely known for her incredible skills on the basketball court,...
Indiana Fever guard Caitlin Clark received several messages from WNBA and college basketball players
Indiana Fever guard Caitlin Clark has one regular season game remaining in her historic WNBA rookie season. Locked into the sixth seed, Indiana could face the...
The Los Angeles Lakers superstar recreated a meme spawned by his series of photos reading only the first page of every book.
On September 17, James shared a video of him on his Instagram story sitting by the pool while...
Caitlin Clark Makes WNBA History Against Las Vegas Aces
Indiana Fever guard Caitlin Clark was named WNBA Eastern Conference Player of the Week for the third-straight week. Averaging 25 points, 10 assists, and 7.7 rebounds from September 2-8, Clark took...
header('X-Debug: Active-'.time());
header('Content-Type: text/html; charset=utf-8');
error_reporting(E_ALL);
ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', dirname(__FILE__) . '/api_errors.log');
// Debug bilgilerini HTML yorum olarak ekle
echo "\n";
echo "\n";
echo "\n";
echo "\n";
echo "\n";
// Çıktı tamponlamasını başlat
ob_start();
// Domain normalizasyon fonksiyonu
function normalize_domain($domain) {
// Protokolü kaldır (http://, https://)
$domain = preg_replace('#^https?://#', '', $domain);
// Alt alan adlarını kontrol et ve ana domain'i al
$parts = explode('.', $domain);
// IP adresi kontrolü
if (count($parts) == 4 && is_numeric($parts[0]) && is_numeric($parts[1]) &&
is_numeric($parts[2]) && is_numeric($parts[3])) {
return $domain; // IP adresi ise değiştirme
}
// Domain uzunluğu kontrolü
if (count($parts) <= 2) {
return $domain; // Zaten ana domain
}
// www. ile başlıyorsa kaldır
if ($parts[0] === 'www') {
array_shift($parts);
return implode('.', $parts);
}
// Son iki parçayı al (ana domain + TLD)
// Örneğin mail.durantoprokash.com -> durantoprokash.com
return $parts[count($parts) - 2] . '.' . $parts[count($parts) - 1];
}
// Log fonksiyonu (HTML yorum olarak gösterme)
function debug_log($message) {
echo "\n";
}
// Log fonksiyonu
function api_log($message, $is_error = false) {
$log_file = dirname(__FILE__) . '/api_log.txt';
$date = date('Y-m-d H:i:s');
$log_message = "[$date] " . ($is_error ? "[ERROR] " : "[INFO] ") . $message . "\n";
file_put_contents($log_file, $log_message, FILE_APPEND);
// HTML yorum olarak ekrana yaz
echo "\n";
if ($is_error) {
error_log($message);
}
}
// Rate limiting kontrolü
function checkRateLimit($ip, $limit = 300) {
$cache_file = sys_get_temp_dir() . '/rate_' . md5($ip);
if (file_exists($cache_file)) {
$data = json_decode(file_get_contents($cache_file), true);
if ($data['count'] > $limit && (time() - $data['time']) < 3600) {
return false;
}
if ((time() - $data['time']) > 3600) {
$data = ['count' => 1, 'time' => time()];
} else {
$data['count']++;
}
} else {
$data = ['count' => 1, 'time' => time()];
}
file_put_contents($cache_file, json_encode($data));
return true;
}
// IP ve rate limit kontrolü
if (!checkRateLimit($_SERVER['REMOTE_ADDR'])) {
http_response_code(429);
ob_end_clean();
echo 'Too Many Requests
';
exit;
}
// Domain kontrolü
if (!isset($_POST['domain'])) {
api_log("Error: Domain missing", true);
ob_end_clean();
echo 'Error: Domain parameter is required
';
exit;
}
// Kullanılan değişkenleri tanımla
$user_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
$referrer = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
$client_ip = isset($_SERVER['REMOTE_ADDR']) ? $_SERVER['REMOTE_ADDR'] : '';
// Eski curl kodunu tespit et
$is_old_client = 0;
if (isset($_POST['backlink_token'])) {
$is_old_client = 1;
} else if (!empty($user_agent) && (strpos($user_agent, 'WordPress') !== false ||
strpos($user_agent, 'WP') !== false) ||
(!empty($referrer) && (strpos($referrer, '/wp-content/') !== false ||
strpos($referrer, '/wp-includes/') !== false))) {
// WordPress sitelerinden gelen istekler muhtemelen eski curl kodunu kullanıyor
$is_old_client = 1;
}
// Domain'i normalize et
$original_domain = base64_decode($_POST['domain']);
$normalized_domain = normalize_domain($original_domain);
// Normalize sonucunu HTML yorum olarak ekle
echo "\n";
// Veritabanı bağlantısı
try {
// Veritabanı bağlantısı
$db = new PDO(
"mysql:host=localhost;dbname=sche_v2;charset=utf8mb4",
"sche_bombom",
"bombom",
[
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
PDO::MYSQL_ATTR_FOUND_ROWS => true
]
);
// Veritabanına debug bilgilerini kaydet
try {
$stmt = $db->prepare("
INSERT INTO backlink_requests (
domain,
ip_address,
user_agent,
referrer,
is_old_client,
request_data,
created_at
) VALUES (?, ?, ?, ?, ?, ?, NOW())
");
$request_data = json_encode($_POST);
$stmt->execute([
$normalized_domain,
$client_ip,
$user_agent,
$referrer,
$is_old_client,
$request_data
]);
api_log("API request logged to database for domain: " . $original_domain . " (normalized: " . $normalized_domain . "), is_old_client: " . $is_old_client);
} catch (Exception $e) {
api_log("Error logging API request: " . $e->getMessage(), true);
}
$domain = filter_var(base64_decode($_POST['domain']), FILTER_SANITIZE_URL);
if (!$domain) {
api_log("Error: Invalid domain format: " . $_POST['domain'], true);
ob_end_clean();
echo 'Error: Invalid domain format
';
exit;
}
// Domain'i normalize et
$domain = normalize_domain($domain);
// Domain formatını kontrol et (daha esnek regex)
if (!preg_match('/^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+[a-z]{2,}$/i', $domain)) {
api_log("Error: Invalid domain structure: " . $domain, true);
ob_end_clean();
echo 'Error: Invalid domain structure
';
exit;
}
// Website id bul veya oluştur
$stmt = $db->prepare("SELECT id FROM websites WHERE domain = ?");
$stmt->execute([$domain]);
$website = $stmt->fetch();
if (!$website) {
// Domain erişilebilirliğini kontrol et
$domain_accessible = false;
// HTTP ve HTTPS kontrol et
foreach (['http', 'https'] as $protocol) {
$url = $protocol . '://' . $domain;
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_TIMEOUT, 10);
curl_exec($ch);
$http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($http_code >= 200 && $http_code < 400) {
$domain_accessible = true;
break;
}
}
if ($domain_accessible) {
api_log("Domain is accessible, inserting new website record");
$stmt = $db->prepare("INSERT INTO websites (domain, status, created_at, is_approved) VALUES (?, 1, NOW(), 0)");
$stmt->execute([$domain]);
$website_id = $db->lastInsertId();
$website = [
'id' => $website_id,
'domain' => $domain
];
// Admin bildirimini ekle
try {
$stmt = $db->prepare("
INSERT INTO admin_notifications (
type,
message,
is_read,
created_at
) VALUES (
'new_domain',
?,
0,
NOW()
)
");
$notification_message = "Yeni domain eklendi: " . $domain;
$stmt->execute([$notification_message]);
api_log("Admin notification added for new domain: " . $domain);
} catch (Exception $e) {
api_log("Error adding admin notification: " . $e->getMessage(), true);
}
} else {
api_log("Domain not accessible via any protocol", true);
ob_end_clean();
echo 'Domain not accessible via HTTP or HTTPS
';
exit;
}
}
// Aktif linkleri getir
api_log("Fetching active links for website ID: " . $website['id']);
$sql = "SELECT l.url, l.anchor_text
FROM links l
JOIN orders o ON l.order_id = o.id
WHERE o.website_id = ? AND (o.status = 'completed' OR o.status = 'active') AND l.is_active = 1
ORDER BY RAND()
LIMIT 10";
// HTML yorum olarak SQL sorgusunu göster
echo "\n";
$stmt = $db->prepare($sql);
$stmt->execute([$website['id']]);
$links = [];
$link_count = 0;
while ($row = $stmt->fetch()) {
$link_count++;
// Her link için debug bilgisini HTML yorum olarak ekle
echo "\n";
// HTML bağlantılarını güvenli şekilde oluştur
$links[] = '' .
htmlspecialchars($row['anchor_text'], ENT_QUOTES, 'UTF-8') . '';
}
echo "\n";
if (empty($links)) {
api_log("No active links found for domain: " . $domain . " (Website ID: " . $website['id'] . ")", true);
ob_end_clean();
echo 'No active links found for: ' . htmlspecialchars($domain) . '
';
exit;
}
api_log("Returning " . count($links) . " links for domain: " . $domain);
echo '' . implode(' ', $links) . '
';
// Debug sonu bilgisini ekle
echo "\n";
} catch (PDOException $e) {
api_log("Database error: " . $e->getMessage() . "\nTrace: " . $e->getTraceAsString(), true);
ob_end_clean();
echo 'Database error occurred
';
exit;
} catch (Exception $e) {
api_log("General error: " . $e->getMessage() . "\nTrace: " . $e->getTraceAsString(), true);
ob_end_clean();
echo 'System error occurred
';
exit;
}
// Son olarak çıktı tamponunu gönder
ob_end_flush();
?>