PropJoe adlı üyeden alıntı: mesajı görüntüle
<?php
session_start();

error_reporting(E_ALL);
ini_set('display_errors', 1);

// JSON yanıt türünü en başta belirt
header('Content-Type: application/json');
ob_start();

// Eğer kullanıcı zaten giriş yapmışsa yönlendir
if (isset($_SESSION['isLogged']) && $_SESSION['isLogged'] === true) {
    echo json_encode(['status' => 'redirect', 'url' => BASE_URL . '/Home']);
    ob_end_flush();
    exit;
}

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;
require '/xampp/htdocs/PHPMailer/src/Exception.php';
require '/xampp/htdocs/PHPMailer/src/PHPMailer.php';
require '/xampp/htdocs/PHPMailer/src/SMTP.php';

try {
    // PDO bağlantısı
    global $DBSettings;
    $pdo = new PDO(
        "odbc:DRIVER={$DBSettings['driver']};SERVER={$DBSettings['server']};DATABASE={$DBSettings['game_db']};charset=UTF-8",
        $DBSettings['uid'],
        $DBSettings['pass']
    );
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    // Kullanıcı kaydı işlemi
    if (isset($_POST['strUserID'])) {
        $strUserID = trim($_POST['strUserID']);
        $Mail = trim($_POST['Mail']);
        $Password = trim($_POST['Password']);
        $RePassword = trim($_POST['RePassword']);
        $PhoneNumber = trim($_POST['PhoneNumber']);

        // Form doğrulama
        if (empty($strUserID) || empty($Mail) || empty($Password) || empty($RePassword) || empty($PhoneNumber)) {
            throw new Exception('Lütfen tüm alanları doldurunuz.');
        }

        if ($Password !== $RePassword) {
            throw new Exception('Lütfen iki şifrenizi de aynı giriniz.');
        }

        // Kullanıcı, telefon ve mail kontrolü
        $checks = [
            ['field' => 'strUserID', 'value' => $strUserID, 'message' => 'Bu kullanıcı adı zaten kullanılıyor.'],
            ['field' => 'PhoneNumber', 'value' => $PhoneNumber, 'message' => 'Bu telefon numarası zaten kayıtlı.'],
            ['field' => 'Mail', 'value' => $Mail, 'message' => 'Bu e-posta adresi zaten kayıtlı.']
        ];

        foreach ($checks as $check) {
            $stmt = $pdo->prepare("SELECT COUNT(*) FROM DATA WHERE {$check['field']} = :value");
            $stmt->execute([':value' => $check['value']]);
            if ($stmt->fetchColumn() > 0) {
                throw new Exception($check['message']);
            }
        }

        // Doğrulama kodu oluştur
        $verificationCode = rand(100000, 999999);

        // E-posta gönderimi
        $mail = new PHPMailer(true);
        $mail->isSMTP();
        $mail->Host = 'SMTP';
        $mail->SMTPAuth = true;
        $mail->Username = 'USER';
        $mail->Password = 'PASS';
        $mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;
        $mail->Port = 465;
        $mail->setFrom('MAİL', 'Kayıt Onayı');
        $mail->addAddress($Mail);
        $mail->isHTML(true);
        $mail->Subject = 'Kayıt Onayı';
        $mail->Body = "Kayıt işleminizi tamamlamak için doğrulama kodunuz: {$verificationCode}";
        $mail->send();

        // Kullanıcı kaydı
        $stmt = $pdo->prepare("INSERT INTO DATA (strUserID, Mail, Password, PhoneNumber, VerificationCode, isVerified) VALUES (:strUserID, :Mail, :Password, :PhoneNumber, :VerificationCode, 0)");
        $stmt->execute([
            ':strUserID' => $strUserID,
            ':Mail' => $Mail,
            ':Password' => password_hash($Password, PASSWORD_BCRYPT),
            ':PhoneNumber' => $PhoneNumber,
            ':VerificationCode' => $verificationCode
        ]);

        $_SESSION['strAccountID'] = $strUserID; // Doğrulama için kullanıcı ID'sini sakla
        
        echo json_encode(['status' => 'success', 'message' => 'Kayıt başarılı! E-postanıza gönderilen doğrulama kodunu giriniz.']);
    }
    // Doğrulama kodu kontrolü
    elseif (isset($_POST['verificationCode'])) {
        if (!isset($_SESSION['strAccountID'])) {
            throw new Exception('Oturum zaman aşımına uğradı. Lütfen tekrar kayıt olun.');
        }

        $inputCode = trim($_POST['verificationCode']);
        $strUserID = $_SESSION['strAccountID'];

        $stmt = $pdo->prepare("SELECT VerificationCode, isVerified FROM DATA WHERE strUserID = :strUserID");
        $stmt->execute([':strUserID' => $strUserID]);
        $checkCode = $stmt->fetch(PDO::FETCH_ASSOC);

        if (!$checkCode) {
            throw new Exception('Kullanıcı bulunamadı.');
        }

        if ($checkCode['isVerified'] == 1) {
            throw new Exception('Bu hesap zaten doğrulanmış.');
        }

        if ($checkCode['VerificationCode'] != $inputCode) {
            throw new Exception('Geçersiz doğrulama kodu.');
        }

        // Kullanıcıyı doğrula
        $stmt = $pdo->prepare("UPDATE DATA SET isVerified = 1 WHERE strUserID = :strUserID");
        $stmt->execute([':strUserID' => $strUserID]);

        // Oyun veritabanına kullanıcı ekleme
        $GetHash = $pdo->query("SELECT dbo.HashPasswordString('{$Password}') as HashPW")->fetch(PDO::FETCH_OBJ);
        $stmt = $pdo->prepare("INSERT INTO USER (strAccountID, strPasswd) VALUES (:strUserID, :strPasswd)");
        $stmt->execute([
            ':strUserID' => $strUserID,
            ':strPasswd' => $GetHash->HashPW
        ]);

        $_SESSION['isLogged'] = true;
        $_SESSION['strUserID'] = $strUserID;

        echo json_encode(['status' => 'success', 'message' => 'Hesabınız başarıyla doğrulandı.']);
    }

} catch (Exception $e) {
    echo json_encode(['status' => 'error', 'message' => $e->getMessage()]);
}

ob_end_flush();
Bu şekilde denermisin?
malesef sayfayı açar açmaz submit yapmadan
SyntaxError: JSON.parse: unexpected character at line 1 column 1 of the JSON data