Bizi Takip Edin:
Blog

whatsapp.com

Açıklama

<?php
// process_add_domain_v2.php — Yeni 5 Adımlı Sihirbaz için Güncellenmiş İşlemci

ini_set('display_errors', 1);
error_reporting(E_ALL);
header('Content-Type: application/json; charset=utf-8');

if (session_status() === PHP_SESSION_NONE) session_start();
require_once __DIR__ . '/db.php';

// --- JSON Yanıt Fonksiyonu ---
function send_json_response(bool $success, string $message, int $http_code = 200) {
http_response_code($http_code);
echo json_encode(['success' => $success, 'message' => $message]);
exit();
}

// --- Kur Fonksiyonu (TCMB, Önbellekli) ---
function get_tcmb_rates(): array {
$default = ['USD' => 33.50, 'EUR' => 36.50];
$cache = __DIR__ . '/tcmb_cache.json';
if (file_exists($cache) && (time() - filemtime($cache) < 3600)) {
$data = @json_decode(file_get_contents($cache), true);
if ($data && isset($data['USD'])) return $data;
}
$xml = @simplexml_load_file('https://www.tcmb.gov.tr/kurlar/today.xml');
if (!$xml) return $default;

$usd = (float)($xml->xpath("//Currency[@CurrencyCode='USD']/ForexSelling")[0] ?? $default['USD']);
$eur = (float)($xml->xpath("//Currency[@CurrencyCode='EUR']/ForexSelling")[0] ?? $default['EUR']);
$rates = ['USD' => $usd, 'EUR' => $eur];
file_put_contents($cache, json_encode($rates));
return $rates;
}

// --- 1. Güvenlik Kontrolleri ---
if ($_SERVER['REQUEST_METHOD'] !== 'POST') send_json_response(false, 'Geçersiz istek metodu.', 405);
if (!isset($_SESSION['user_id'])) send_json_response(false, 'Oturum açmanız gerekiyor.', 403);

$user_id = (int)$_SESSION['user_id'];

// --- 2. Form Verilerini Al ---
$domain_name = trim(strtolower($_POST['domain_name'] ?? ''));
$price = (float)($_POST['price'] ?? 0);
$currency = strtoupper(trim($_POST['currency'] ?? 'TRY'));
$category = trim($_POST['category'] ?? '');
$tags = trim($_POST['tags'] ?? '');
$description = trim($_POST['description'] ?? '');
$creation_date_str = trim($_POST['creation_date'] ?? '');
$expiry_date_str = trim($_POST['expiry_date'] ?? '');
$whois_registrar = trim($_POST['whois_registrar'] ?? '');
$whois_status = trim($_POST['whois_status'] ?? '');
$whois_raw = $_POST['whois_raw'] ?? '';
$user_registrar_confirm = trim($_POST['user_registrar_confirm'] ?? ''); // ✅ Yeni alan

// --- 3. Sunucu Taraflı Doğrulama ---
if (empty($domain_name) || !preg_match('/^[a-z0-9.-]+\.[a-z]{2,}$/i', $domain_name))
send_json_response(false, 'Lütfen geçerli bir domain adı girin.');

if ($price <= 0) send_json_response(false, 'Geçerli bir fiyat girin.');
if (!in_array($currency, ['TRY', 'USD', 'EUR'])) send_json_response(false, 'Geçersiz para birimi.');
if (empty($category)) send_json_response(false, 'Bir kategori seçin.');
if (empty($description) || mb_strlen($description) < 20)
send_json_response(false, 'Açıklama en az 20 karakter olmalı.');
if (empty($user_registrar_confirm))
send_json_response(false, 'Lütfen domainin kayıtlı olduğu firmayı belirtin.');

// --- 4. Domain Tekrar Kontrolü ---
try {
$stmt = $pdo->prepare("SELECT 1 FROM domains WHERE domain_name = ?");
$stmt->execute([$domain_name]);
if ($stmt->fetch()) {
send_json_response(false, "Bu domain zaten listede: {$domain_name}");
}
} catch (PDOException $e) {
error_log("Domain kontrol hatası: " . $e->getMessage());
send_json_response(false, 'Veritabanı hatası (kontrol).', 500);
}

// --- 5. Fiyat Dönüşümü ---
$rates = get_tcmb_rates();
$price_try = $price;
if ($currency === 'USD') $price_try = $price * $rates['USD'];
if ($currency === 'EUR') $price_try = $price * $rates['EUR'];

// --- 6. Tarihleri ve Kalan Günleri Hesapla ---
$creation_date_db = $expiry_date_db = null;
$days_left = null;
try {
if ($creation_date_str) $creation_date_db = (new DateTime($creation_date_str))->format('Y-m-d');
if ($expiry_date_str) {
$expiry = new DateTime($expiry_date_str);
$expiry_date_db = $expiry->format('Y-m-d');
$today = new DateTime('today');
$days_left = ($expiry >= $today) ? $today->diff($expiry)->days : 0;
}
} catch (Exception $e) {
error_log("Tarih parse hatası: " . $e->getMessage());
}

// --- 7. Veritabanına Kaydet ---
try {
$sql = "INSERT INTO domains
(user_id, domain_name, price, currency, price_try, category, tags, description,
creation_date, expiry_date, days_left, registrar, registrar_user, whois_status, whois_raw, status, created_at)
VALUES
(:user_id, :domain_name, :price, :currency, :price_try, :category, :tags, :description,
:creation_date, :expiry_date, :days_left, :registrar, :registrar_user, :whois_status, :whois_raw, 'available', NOW())";

$stmt = $pdo->prepare($sql);
$ok = $stmt->execute([
':user_id' => $user_id,
':domain_name' => $domain_name,
':price' => $price,
':currency' => $currency,
':price_try' => $price_try,
':category' => $category,
':tags' => $tags,
':description' => $description,
':creation_date' => $creation_date_db,
':expiry_date' => $expiry_date_db,
':days_left' => $days_left,
':registrar' => $whois_registrar,
':registrar_user' => $user_registrar_confirm, // ✅ Yeni kullanıcı girişi
':whois_status' => $whois_status,
':whois_raw' => $whois_raw
]);

if ($ok) {
send_json_response(true, ucfirst($domain_name) . ' başarıyla eklendi ve listelendi!');
} else {
$err = $stmt->errorInfo();
error_log("Domain ekleme SQL hatası: " . ($err[2] ?? 'Bilinmiyor'));
send_json_response(false, 'Veritabanı kaydı başarısız.', 500);
}

} catch (PDOException $e) {
error_log("Domain kayıt hatası: " . $e->getMessage());
send_json_response(false, 'Sunucu hatası: Kayıt işlemi tamamlanamadı.', 500);
}
?>
<?php
// process_add_domain_v2.php — Yeni 5 Adımlı Sihirbaz için Güncellenmiş İşlemci

ini_set('display_errors', 1);
error_reporting(E_ALL);
header('Content-Type: application/json; charset=utf-8');

if (session_status() === PHP_SESSION_NONE) session_start();
require_once __DIR__ . '/db.php';

// --- JSON Yanıt Fonksiyonu ---
function send_json_response(bool $success, string $message, int $http_code = 200) {
http_response_code($http_code);
echo json_encode(['success' => $success, 'message' => $message]);
exit();
}

// --- Kur Fonksiyonu (TCMB, Önbellekli) ---
function get_tcmb_rates(): array {
$default = ['USD' => 33.50, 'EUR' => 36.50];
$cache = __DIR__ . '/tcmb_cache.json';
if (file_exists($cache) && (time() - filemtime($cache) < 3600)) {
$data = @json_decode(file_get_contents($cache), true);
if ($data && isset($data['USD'])) return $data;
}
$xml = @simplexml_load_file('https://www.tcmb.gov.tr/kurlar/today.xml');
if (!$xml) return $default;

$usd = (float)($xml->xpath("//Currency[@CurrencyCode='USD']/ForexSelling")[0] ?? $default['USD']);
$eur = (float)($xml->xpath("//Currency[@CurrencyCode='EUR']/ForexSelling")[0] ?? $default['EUR']);
$rates = ['USD' => $usd, 'EUR' => $eur];
file_put_contents($cache, json_encode($rates));
return $rates;
}

// --- 1. Güvenlik Kontrolleri ---
if ($_SERVER['REQUEST_METHOD'] !== 'POST') send_json_response(false, 'Geçersiz istek metodu.', 405);
if (!isset($_SESSION['user_id'])) send_json_response(false, 'Oturum açmanız gerekiyor.', 403);

$user_id = (int)$_SESSION['user_id'];

// --- 2. Form Verilerini Al ---
$domain_name = trim(strtolower($_POST['domain_name'] ?? ''));
$price = (float)($_POST['price'] ?? 0);
$currency = strtoupper(trim($_POST['currency'] ?? 'TRY'));
$category = trim($_POST['category'] ?? '');
$tags = trim($_POST['tags'] ?? '');
$description = trim($_POST['description'] ?? '');
$creation_date_str = trim($_POST['creation_date'] ?? '');
$expiry_date_str = trim($_POST['expiry_date'] ?? '');
$whois_registrar = trim($_POST['whois_registrar'] ?? '');
$whois_status = trim($_POST['whois_status'] ?? '');
$whois_raw = $_POST['whois_raw'] ?? '';
$user_registrar_confirm = trim($_POST['user_registrar_confirm'] ?? ''); // ✅ Yeni alan

// --- 3. Sunucu Taraflı Doğrulama ---
if (empty($domain_name) || !preg_match('/^[a-z0-9.-]+\.[a-z]{2,}$/i', $domain_name))
send_json_response(false, 'Lütfen geçerli bir domain adı girin.');

if ($price <= 0) send_json_response(false, 'Geçerli bir fiyat girin.');
if (!in_array($currency, ['TRY', 'USD', 'EUR'])) send_json_response(false, 'Geçersiz para birimi.');
if (empty($category)) send_json_response(false, 'Bir kategori seçin.');
if (empty($description) || mb_strlen($description) < 20)
send_json_response(false, 'Açıklama en az 20 karakter olmalı.');
if (empty($user_registrar_confirm))
send_json_response(false, 'Lütfen domainin kayıtlı olduğu firmayı belirtin.');

// --- 4. Domain Tekrar Kontrolü ---
try {
$stmt = $pdo->prepare("SELECT 1 FROM domains WHERE domain_name = ?");
$stmt->execute([$domain_name]);
if ($stmt->fetch()) {
send_json_response(false, "Bu domain zaten listede: {$domain_name}");
}
} catch (PDOException $e) {
error_log("Domain kontrol hatası: " . $e->getMessage());
send_json_response(false, 'Veritabanı hatası (kontrol).', 500);
}

// --- 5. Fiyat Dönüşümü ---
$rates = get_tcmb_rates();
$price_try = $price;
if ($currency === 'USD') $price_try = $price * $rates['USD'];
if ($currency === 'EUR') $price_try = $price * $rates['EUR'];

// --- 6. Tarihleri ve Kalan Günleri Hesapla ---
$creation_date_db = $expiry_date_db = null;
$days_left = null;
try {
if ($creation_date_str) $creation_date_db = (new DateTime($creation_date_str))->format('Y-m-d');
if ($expiry_date_str) {
$expiry = new DateTime($expiry_date_str);
$expiry_date_db = $expiry->format('Y-m-d');
$today = new DateTime('today');
$days_left = ($expiry >= $today) ? $today->diff($expiry)->days : 0;
}
} catch (Exception $e) {
error_log("Tarih parse hatası: " . $e->getMessage());
}

// --- 7. Veritabanına Kaydet ---
try {
$sql = "INSERT INTO domains
(user_id, domain_name, price, currency, price_try, category, tags, description,
creation_date, expiry_date, days_left, registrar, registrar_user, whois_status, whois_raw, status, created_at)
VALUES
(:user_id, :domain_name, :price, :currency, :price_try, :category, :tags, :description,
:creation_date, :expiry_date, :days_left, :registrar, :registrar_user, :whois_status, :whois_raw, 'available', NOW())";

$stmt = $pdo->prepare($sql);
$ok = $stmt->execute([
':user_id' => $user_id,
':domain_name' => $domain_name,
':price' => $price,
':currency' => $currency,
':price_try' => $price_try,
':category' => $category,
':tags' => $tags,
':description' => $description,
':creation_date' => $creation_date_db,
':expiry_date' => $expiry_date_db,
':days_left' => $days_left,
':registrar' => $whois_registrar,
':registrar_user' => $user_registrar_confirm, // ✅ Yeni kullanıcı girişi
':whois_status' => $whois_status,
':whois_raw' => $whois_raw
]);

if ($ok) {
send_json_response(true, ucfirst($domain_name) . ' başarıyla eklendi ve listelendi!');
} else {
$err = $stmt->errorInfo();
error_log("Domain ekleme SQL hatası: " . ($err[2] ?? 'Bilinmiyor'));
send_json_response(false, 'Veritabanı kaydı başarısız.', 500);
}

} catch (PDOException $e) {
error_log("Domain kayıt hatası: " . $e->getMessage());
send_json_response(false, 'Sunucu hatası: Kayıt işlemi tamamlanamadı.', 500);
}
?>

Whois Detayları
Kayıt Firması (Registrar): 3237
Bitiş Tarihi: 04.09.2034
Satış Fiyatı
2 USD
(~84 TRY)
Satın almak için giriş yapın.
Giriş Yap
Paylaş:
Satıcı
D
domaincanavarı Diğer domainlerini gör
Benzer Domainler