PDO::ERRMODE_EXCEPTION, PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, PDO::ATTR_EMULATE_PREPARES => false, ]); } catch (PDOException $e) { // Veritabanı bağlantısı yoksa hata döner $db_connection_error = "Veritabanı bağlantısı kurulamadı: " . $e->getMessage(); } // CSRF Token Oluşturma if (empty($_SESSION['csrf_token'])) { $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); } // --- 2. AJAX POST İSTEĞİ İŞLEME (BACKEND API) --- if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') { header('Content-Type: application/json; charset=utf-8'); if (isset($db_connection_error)) { echo json_encode(['success' => false, 'message' => 'Veritabanı sunucusuna bağlanılamadı. Lütfen veritabanı ayarlarını kontrol edin.']); exit; } // CSRF Doğrulaması $csrfToken = $_POST['csrf_token'] ?? ''; if (!hash_equals($_SESSION['csrf_token'], $csrfToken)) { echo json_encode(['success' => false, 'message' => 'Güvenlik doğrulaması başarısız oldu (CSRF Mismatch). Lütfen sayfayı yenileyin.']); exit; } // Gelen Verileri Temizleme & Doğrulama $fullName = trim(strip_tags($_POST['fullName'] ?? '')); $siteUsername = strtolower(trim(strip_tags($_POST['siteUsername'] ?? ''))); $email = filter_var(trim($_POST['email'] ?? ''), FILTER_VALIDATE_EMAIL); $whatsapp = trim(strip_tags($_POST['whatsapp'] ?? '')); $gender = trim(strip_tags($_POST['gender'] ?? '')); $password = $_POST['password'] ?? ''; $kvkkApproved = isset($_POST['kvkkConsent']) && $_POST['kvkkConsent'] === '1'; $accountsJSON = $_POST['accountsJSON'] ?? '[]'; $accounts = json_decode($accountsJSON, true); // Kullanıcı Adı Temizliği (@ işareti ile başlar) if (!str_starts_with($siteUsername, '@')) { $siteUsername = '@' . ltrim($siteUsername, '@'); } // Temel Doğrulamalar if (empty($fullName) || empty($siteUsername) || !$email || empty($whatsapp) || empty($gender) || empty($password)) { echo json_encode(['success' => false, 'message' => 'Lütfen kişisel bilgilerinizi eksiksiz doldurun.']); exit; } if (strlen($password) < 8) { echo json_encode(['success' => false, 'message' => 'Şifreniz en az 8 karakter uzunluğunda olmalıdır.']); exit; } if (!$kvkkApproved) { echo json_encode(['success' => false, 'message' => 'Başvuru yapabilmek için KVKK Aydınlatma Metni\'ni onaylamanız gerekmektedir.']); exit; } if (!is_array($accounts) || count($accounts) === 0) { echo json_encode(['success' => false, 'message' => 'Başvuruyu tamamlamak için en az 1 adet sosyal medya hesabı eklemelisiniz.']); exit; } try { // SQL TRANSACTION Başlat $pdo->beginTransaction(); // A) Sistem Kullanıcı Adı Kontrolü (Unique site_username) $stmt = $pdo->prepare("SELECT id FROM influencers WHERE site_username = ?"); $stmt->execute([$siteUsername]); if ($stmt->fetch()) { $pdo->rollBack(); echo json_encode(['success' => false, 'message' => "Seçtiğiniz \"{$siteUsername}\" Graftic Media kullanıcı adı zaten kullanılmaktadır. Lütfen farklı bir kullanıcı adı seçin."]); exit; } // B) E-Posta Adresi Kontrolü $stmt = $pdo->prepare("SELECT id FROM influencers WHERE email = ?"); $stmt->execute([$email]); if ($stmt->fetch()) { $pdo->rollBack(); echo json_encode(['success' => false, 'message' => "{$email} e-posta adresi ile daha önce başvuru yapılmış."]); exit; } // C) Sosyal Medya Hesapları Benzersizlik Kontrolü (Aynı TikTok/IG hesabı 2. defa eklenemez) foreach ($accounts as $acc) { $platform = trim($acc['platform'] ?? ''); $identifier = trim($acc['accountIdentifier'] ?? ''); if ($platform !== 'YouTube' && !str_starts_with($identifier, '@')) { $identifier = '@' . ltrim($identifier, '@'); } $stmt = $pdo->prepare("SELECT id FROM social_accounts WHERE platform = ? AND account_identifier = ?"); $stmt->execute([$platform, $identifier]); if ($stmt->fetch()) { $pdo->rollBack(); echo json_encode([ 'success' => false, 'message' => "Eklemeye çalıştığınız {$platform} hesabı ({$identifier}) daha önce sistemdeki başka bir başvuruya kaydedilmiş! Aynı sosyal medya hesabı birden fazla başvuruya eklenemez." ]); exit; } } // D) Influencer Ana Kaydını Ekletme $passwordHash = password_hash($password, PASSWORD_BCRYPT, ['cost' => 12]); $ipAddress = $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0'; $now = date('Y-m-d H:i:s'); $insertUserStmt = $pdo->prepare(" INSERT INTO influencers (site_username, full_name, email, whatsapp, gender, password_hash, ip_address, kvkk_approved_at) VALUES (?, ?, ?, ?, ?, ?, ?, ?) "); $insertUserStmt->execute([$siteUsername, $fullName, $email, $whatsapp, $gender, $passwordHash, $ipAddress, $now]); $influencerId = $pdo->lastInsertId(); // E) Sosyal Medya Hesaplarını Kaydetme (Her hesabın kendine özel ID'si olur) $insertAccountStmt = $pdo->prepare(" INSERT INTO social_accounts (influencer_id, platform, account_identifier, content_type, followers_count, price_per_video) VALUES (?, ?, ?, ?, ?, ?) "); $addedAccountsInfo = []; foreach ($accounts as $acc) { $platform = trim($acc['platform'] ?? ''); $identifier = trim($acc['accountIdentifier'] ?? ''); $contentType = trim($acc['contentType'] ?? 'Diğer'); $followers = (int)($acc['followers'] ?? 0); $price = (float)($acc['pricePerVideo'] ?? 0); if ($platform !== 'YouTube' && !str_starts_with($identifier, '@')) { $identifier = '@' . ltrim($identifier, '@'); } $insertAccountStmt->execute([$influencerId, $platform, $identifier, $contentType, $followers,$price]); $accountId =$pdo->lastInsertId(); $addedAccountsInfo[] = [ 'accountId' => $accountId, 'platform' => $platform, 'identifier' => $identifier, 'contentType' => $contentType ]; } // İşlemleri Onayla $pdo->commit(); echo json_encode([ 'success' => true, 'message' => 'Başvurunuz başarıyla veritabanımıza kaydedildi.', 'data' => [ 'influencerId' => $influencerId, 'fullName' => $fullName, 'siteUsername' => $siteUsername, 'email' => $email, 'accountsCount' => count($addedAccountsInfo), 'accounts' => $addedAccountsInfo ] ]); exit; } catch (Exception $e) { if ($pdo->inTransaction()) {$pdo->rollBack(); } echo json_encode(['success' => false, 'message' => 'Kayıt sırasında bir veritabanı hatası oluştu: ' . $e->getMessage()]); exit; } } ?> Graftic Media - Influencer Başvuru Portalı
GRAFTIC MEDIA
Ana Sayfaya Dön

1 Kişisel Bilgiler & Hesap Kimliği

Sistemimizdeki size özel kullanıcı adınızdır (Benzersizdir).

Reklam ve iş birliği teklifleri için ulaşacağız.


2 Giriş Şifresi Oluşturun

Şifre Gücü: Girilmedi

3 Sosyal Medya Hesapları *

Eklenen her hesap ayrı ID ile sistemimize tanımlanır.

Henüz hiç hesap eklenmedi

Yukarıdaki "Hesap Ekle" butonuna basarak hesaplarınızı ekleyin.