• 27-04-2025, 00:09:27
    #1
    bu kodlar ile çark sistemi mevcut detayları önemsiz.
    şimdi bu kodlar ile çark çevirdiğinde sweetalert ile manuel girilen kodları gösteriyordum. sonra bu kodları otomatik oluşturup sql de kaydını alıyorum ama sweetalert kısmında ise json için koyduğum sunucu hatası ekrana basıyor ama konsolda json veriyi görüyorum ne yapmam gerek anlamadım
    <?php
    session_start();
    
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    
    // Kullanıcı giriş durumu
    $girisYapildiMi = isset($_SESSION['kullanici_id']) ? true : false;
    $cevirmeHakki = 0;
    
    // Kod üretme fonksiyonu
    function rastgeleKodUret($uzunluk = 8) {
        return substr(str_shuffle("ABCDEFGHJKLMNPQRSTUVWXYZ23456789"), 0, $uzunluk);
    }
    
    // Kod kayıt işlemi
    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['kod_kaydet'])) {
        try {
            $kod = rastgeleKodUret();
            $aciklama = $_POST['aciklama'] ?? 'Kazandı';
            $stmt = $db->prepare("INSERT INTO odul_kodlari (kullanici_id, kod, aciklama) VALUES (:kullanici_id, :kod, :aciklama)");
            $stmt->execute([
                'kullanici_id' => $_SESSION['kullanici_id'],
                'kod' => $kod,
                'aciklama' => $aciklama
            ]);
    
            // Başarılı işlemi döndür
            echo json_encode(['success' => true, 'kod' => $kod, 'message' => $aciklama]);
        } catch (Exception $e) {
            // Hata durumunda JSON döndür
            echo json_encode(['success' => false, 'message' => 'Kod kaydedilemedi: ' . $e->getMessage()]);
        }
        exit;
    }
    
    
    // Eğer giriş yapılmışsa
    if ($girisYapildiMi) {
        $userId = $_SESSION['kullanici_id'];
        
        // Çark hakkını veritabanından sorgula
        $stmt = $db->prepare("SELECT cark_hakki FROM musteri WHERE id = :id");
        $stmt->bindParam(':id', $userId);
        $stmt->execute();
        $cevirmeHakki = (int)$stmt->fetchColumn(); // Çark hakkı değeri
    
        // AJAX ile gelen çark çevirme isteğini işleme
        if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['cevir'])) {
            if ($cevirmeHakki > 0) {
                // Çark hakkını 1 azalt
                $stmt = $db->prepare("UPDATE musteri SET cark_hakki = cark_hakki - 1 WHERE id = :id");
                $stmt->bindParam(':id', $userId);
                $stmt->execute();
    
                echo json_encode(['success' => true]);
            } else {
                echo json_encode(['success' => false, 'message' => 'Çark hakkınız yok']);
            }
            exit;
        }
    }
    ?>
    
    <!-- Modal -->
    <?php if ($girisYapildiMi) { ?>
    <div class="modal fade custommodal" id="denemeSinavBasvuru" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
        <div class="modal-dialog modal-lg" role="document">
            <div class="modal-content">
                <svg data-dismiss="modal" xmlns="http://www.w3.org/2000/svg" width="35px" height="35px">
                    <path fill-rule="evenodd" fill="rgb(244, 153, 51)"
                          d="M32.975,23.311 L27.188,17.523 L32.975,11.736 C35.644,9.067 35.644,4.740 32.975,2.071 C30.307,-0.598 25.979,-0.598 23.311,2.071 L17.523,7.858 L11.736,2.071 C9.067,-0.598 4.740,-0.598 2.071,2.071 C-0.598,4.740 -0.598,9.067 2.071,11.736 L7.858,17.523 L2.071,23.311 C-0.598,25.979 -0.598,30.307 2.071,32.975 C4.740,35.644 9.067,35.644 11.736,32.975 L17.523,27.188 L23.311,32.975 C25.979,35.644 30.307,35.644 32.975,32.975 C35.644,30.307 35.644,25.979 32.975,23.311 Z" />
                </svg>
                <main class="cd-main-content text-center">
                    <link rel="stylesheet" href="cark/css/reset.css">
                    <link rel="stylesheet" href="cark/css/sweetalert2.min.css">
                    <link rel="stylesheet" href="cark/css/superwheel.min.css">
                    <div class="wheel-letter-spacing"></div>
                    <?php if ($cevirmeHakki > 0): ?>
                        <button class="btn btn-round btn-border btn-default wheel-letter-spacing-spin-button">Çevir</button>
                        <a href="?sayfa=satinalma_sayfasi" id="satinAlBtn" style="display:none;" class="btn btn-round btn-border btn-default">Satın Al</a>
                    <?php endif; ?>
                </main>
            </div>
        </div>
    </div>
    <?php } ?>
    
    <script src="cark/js/jquery-2.1.1.js"></script>
    <script src="cark/js/jquery.superwheel.min.js"></script>
    <script src="cark/js/sweetalert2.min.js"></script>
    <script src="cark/js/lmcark.js"></script>
    
    <script>
    jQuery(document).ready(function($){
        let cevirmeHakki = <?= json_encode($cevirmeHakki); ?>;
    
        const olasilikliDonus = () => {
            const olasiliklar = [
                { value: 1, oran: 90 },
                { value: 0, oran: 10 }
            ];
    
            let rastgele = Math.random() * 100;
            let toplam = 0;
            for (let i = 0; i < olasiliklar.length; i++) {
                toplam += olasiliklar[i].oran;
                if (rastgele <= toplam) {
                    return olasiliklar[i].value;
                }
            }
            return 0;
        };
    
        $('.wheel-letter-spacing').superWheel({
            slices: [
                { text: "ÖDÜL1", value: 1, message: "Ödül1", discount: "kazanaılanödülkod1", background: "#f1c40f", color: "#fff" },
                { text: "ŞANS YOK", value: 0, message: "Bugün Şansın Yok", discount: "********", background: "#e74c3c", color: "#fff" },
                { text: "ÖDÜL2<br>TASARIM<br>%30", value: 1, message: "Ödül2", discount: "kazanaılanödülkod2", background: "#2980b9", color: "#fff" },
                { text: "KAYBETTİN", value: 0, message: "Kaybettin :(", discount: "********", background: "#333333", color: "#fff" },
                { text: "ÖDÜL3", value: 1, message: "Ödül3 ", discount: "kazanaılanödülkod3", background: "#27ae60", color: "#fff" },
                { text: "HİÇBİR ŞEY", value: 0, message: "Hiçbir şey alamıyorsun :(", discount: "********", background: "#8e44ad", color: "#fff" }
            ],
            width: 500,
            frame: 1,
            type: "spin",
            center: {
                rotate: true,
                image: {
                    url: "assets/img/genel/22636.jpg",
                    width: 25
                }
            },
            marker: {
                background: "#f1c40f",
                animate: true
            }
        });
    
        const tick = new Audio('cark/media/tick.mp3');
    
        $(document).on('click', '.wheel-letter-spacing-spin-button', function(e){
            if (cevirmeHakki > 0) {
                const secilenDeger = olasilikliDonus();
                $('.wheel-letter-spacing').superWheel('start', 'value', secilenDeger);
                $(this).prop('disabled', true);
            } else {
                Swal.fire({
                    title: 'Çark Hakkınız Kalmadı',
                    text: 'Yeni hak almak için satın alma yapmalısınız.',
                    icon: 'info'
                });
                $(".wheel-letter-spacing-spin-button").hide();
                $("#satinAlBtn").show();
            }
        });
    
        $('.wheel-letter-spacing').superWheel('onStart', function(){
            $('.wheel-letter-spacing-spin-button').text('Çeviriliyor...');
        });
    
        $('.wheel-letter-spacing').superWheel('onStep', function(){
            if (typeof tick.currentTime !== 'undefined') tick.currentTime = 0;
            tick.play();
        });
    
    $('.wheel-letter-spacing').superWheel('onComplete', function(results){
        if (results.value === 1) {
            // Kazandıysa kodu kaydet
            $.post('', { kod_kaydet: true, aciklama: results.message }, function(response){
                try {
                    let data = JSON.parse(response); // JSON formatta mı kontrol ediyoruz
    
                    console.log("Result:", data); // Tarayıcı konsolunda görebilirsin
    
                    if (data.success === true) {
                        Swal.fire({
                            icon: 'success',
                            title: 'Tebrikler!',
                            html: `<b>Kodunuz: ${data.kod}</b><br>${data.message}`
                        });
                    } else {
                        Swal.fire({
                            icon: 'error',
                            title: 'Hata!',
                            text: data.message || 'Bir sorun oluştu, lütfen tekrar deneyin.'
                        });
                    }
                } catch (e) {
                    console.error('JSON Parse Hatası:', e, response);
                    Swal.fire({
                        icon: 'error',
                        title: 'Sunucu Hatası!',
                        text: 'Beklenmeyen bir cevap alındı. Lütfen sonra tekrar deneyin.'
                    });
                }
            });
        } else {
            Swal.fire({
                icon: 'error',
                title: "Üzgünüz!",
                text: results.message
            });
        }
    
        cevirmeHakki--;
    
        if (cevirmeHakki > 0) {
            $('.wheel-letter-spacing-spin-button:disabled').prop('disabled', false).text('Çevir');
            $("#satinAlBtn").hide();
        } else {
            $('.wheel-letter-spacing-spin-button').hide();
            $('#satinAlBtn').show();
        }
    });
    
    });
    </script>
    
    <!-- Çarkı açmak için -->
    <script>
    document.addEventListener("DOMContentLoaded", function () {
        const cevirBtn = document.getElementById('cevirBtn');
        const girisYapildi = <?= json_encode($girisYapildiMi); ?>;
        const cevirmeHakki = <?= json_encode($cevirmeHakki); ?>;
    
        if (cevirBtn) {
            cevirBtn.addEventListener('click', function (e) {
                if (girisYapildi && cevirmeHakki > 0) {
                    $('#denemeSinavBasvuru').modal('show');
                    $.ajax({
                        url: '',
                        method: 'POST',
                        data: { cevir: true },
                        success: function(response) {
                            const data = JSON.parse(response);
                            if (data.success) {
                                Swal.fire({
                                    title: 'Çark dönmeye başladı!',
                                    text: 'Şansınızı deneyin!',
                                    icon: 'success'
                                });
                            } else {
                                Swal.fire({
                                    title: 'Çark Hakkı Yok',
                                    text: data.message,
                                    icon: 'info'
                                });
                            }
                        },
                        error: function() {
                            Swal.fire({
                                title: 'Hata',
                                text: 'Bir şeyler yanlış gitti!',
                                icon: 'error'
                            });
                        }
                    });
                } else if (girisYapildi && cevirmeHakki <= 0) {
                    Swal.fire({
                        title: 'Çark Hakkı Yok',
                        text: 'Çark hakkınız bitmiş. Lütfen satın alınız.',
                        icon: 'info',
                        showCancelButton: true,
                        confirmButtonText: 'OK',
                        cancelButtonText: 'Satın Al',
                        reverseButtons: true
                    }).then((result) => {
                        if (result.dismiss === Swal.DismissReason.cancel) {
                            window.location.href = '?sayfa=satinalma_sayfasi';
                        }
                    });
                } else {
                    e.preventDefault();
                    Swal.fire({
                        title: 'ÇEVİRME YOK!',
                        text: 'Çark şansınız için giriş yapınız.',
                        icon: 'warning'
                    });
                }
            });
        }
    });
    </script>
  • 27-04-2025, 00:13:58
    #2
    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['kod_kaydet'])) {
    try {
    $kod = rastgeleKodUret();
    $aciklama = $_POST['aciklama'] ?? 'Kazandı';
    $stmt = $db->prepare("INSERT INTO odul_kodlari (kullanici_id, kod, aciklama) VALUES (:kullanici_id, :kod, :aciklama)");
    $stmt->execute([
    'kullanici_id' => $_SESSION['kullanici_id'],
    'kod' => $kod,
    'aciklama' => $aciklama
    ]);

    // Başarılı işlemi döndür
    echo json_encode(['success' => true, 'kod' => $kod, 'message' => $aciklama]);
    } catch (Exception $e) {
    // Hata durumunda JSON döndür
    echo json_encode(['success' => false, 'message' => 'Kod kaydedilemedi: ' . $e->getMessage()]);
    }
    exit;
    }
  • 27-04-2025, 00:14:32
    #3
    Json Encode Yapmadan Önce Bu Satırı Ekle header('Content-Type: application/json');
  • 27-04-2025, 00:18:05
    #4
    Mutluluklar adlı üyeden alıntı: mesajı görüntüle
    Json Encode Yapmadan Önce Bu Satırı Ekle header('Content-Type: application/json');
    bu şekilde yaptım bu sefer sweetalert hiç açılmadı

    // Kod kayıt işlemi
    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['kod_kaydet'])) {
    try {
    $kod = rastgeleKodUret();
    $aciklama = $_POST['aciklama'] ?? 'Kazandı';
    $stmt = $db->prepare("INSERT INTO odul_kodlari (kullanici_id, kod, aciklama) VALUES (:kullanici_id, :kod, :aciklama)");
    $stmt->execute([
    'kullanici_id' => $_SESSION['kullanici_id'],
    'kod' => $kod,
    'aciklama' => $aciklama
    ]);
    header('Content-Type: application/json');
    // Başarılı işlemi döndür
    echo json_encode(['success' => true, 'kod' => $kod, 'message' => $aciklama]);
    } catch (Exception $e) {
    // Hata durumunda JSON döndür
    echo json_encode(['success' => false, 'message' => 'Kod kaydedilemedi: ' . $e->getMessage()]);
    }
    exit;
    }
  • 27-04-2025, 00:21:41
    #5
    ücretli bir konu açın tüm dosyalarınızı kontrol edin hocam benden bu kadar
  • 27-04-2025, 00:23:12
    #6
    <?php
    session_start();
     
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
    // Kullanıcı giriş durumu
    $girisYapildiMi = isset($_SESSION['kullanici_id']) ? true : false;
    $cevirmeHakki = 0;
     
    // Kod üretme fonksiyonu
    function rastgeleKodUret($uzunluk = 8) {
        return substr(str_shuffle("ABCDEFGHJKLMNPQRSTUVWXYZ23456789"), 0, $uzunluk);
    }
     
    // Kod kayıt işlemi
    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['kod_kaydet'])) {
        try {
            $kod = rastgeleKodUret();
            $aciklama = $_POST['aciklama'] ?? 'Kazandı';
            $stmt = $db->prepare("INSERT INTO odul_kodlari (kullanici_id, kod, aciklama) VALUES (:kullanici_id, :kod, :aciklama)");
            $stmt->execute([
                'kullanici_id' => $_SESSION['kullanici_id'],
                'kod' => $kod,
                'aciklama' => $aciklama
            ]);
     
            // Başarılı işlemi döndür
            echo json_encode(['success' => true, 'kod' => $kod, 'message' => $aciklama]);
        } catch (Exception $e) {
            // Hata durumunda JSON döndür
            echo json_encode(['success' => false, 'message' => 'Kod kaydedilemedi: ' . $e->getMessage()]);
        }
        exit;
    }
     
     
    // Eğer giriş yapılmışsa
    if ($girisYapildiMi) {
        $userId = $_SESSION['kullanici_id'];
         
        // Çark hakkını veritabanından sorgula
        $stmt = $db->prepare("SELECT cark_hakki FROM musteri WHERE id = :id");
        $stmt->bindParam(':id', $userId);
        $stmt->execute();
        $cevirmeHakki = (int)$stmt->fetchColumn(); // Çark hakkı değeri
     
        // AJAX ile gelen çark çevirme isteğini işleme
        if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['cevir'])) {
            if ($cevirmeHakki > 0) {
                // Çark hakkını 1 azalt
                $stmt = $db->prepare("UPDATE musteri SET cark_hakki = cark_hakki - 1 WHERE id = :id");
                $stmt->bindParam(':id', $userId);
                $stmt->execute();
     
                echo json_encode(['success' => true]);
            } else {
                echo json_encode(['success' => false, 'message' => 'Çark hakkınız yok']);
            }
            exit;
        }
    }
    ?>
     
    <!-- Modal -->
    <?php if ($girisYapildiMi) { ?>
    <div class="modal fade custommodal" id="denemeSinavBasvuru" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
        <div class="modal-dialog modal-lg" role="document">
            <div class="modal-content">
                <svg data-dismiss="modal" xmlns="http://www.w3.org/2000/svg" width="35px" height="35px">
                    <path fill-rule="evenodd" fill="rgb(244, 153, 51)"
                          d="M32.975,23.311 L27.188,17.523 L32.975,11.736 C35.644,9.067 35.644,4.740 32.975,2.071 C30.307,-0.598 25.979,-0.598 23.311,2.071 L17.523,7.858 L11.736,2.071 C9.067,-0.598 4.740,-0.598 2.071,2.071 C-0.598,4.740 -0.598,9.067 2.071,11.736 L7.858,17.523 L2.071,23.311 C-0.598,25.979 -0.598,30.307 2.071,32.975 C4.740,35.644 9.067,35.644 11.736,32.975 L17.523,27.188 L23.311,32.975 C25.979,35.644 30.307,35.644 32.975,32.975 C35.644,30.307 35.644,25.979 32.975,23.311 Z" />
                </svg>
                <main class="cd-main-content text-center">
                    <link rel="stylesheet" href="cark/css/reset.css">
                    <link rel="stylesheet" href="cark/css/sweetalert2.min.css">
                    <link rel="stylesheet" href="cark/css/superwheel.min.css">
                    <div class="wheel-letter-spacing"></div>
                    <?php if ($cevirmeHakki > 0): ?>
                        <button class="btn btn-round btn-border btn-default wheel-letter-spacing-spin-button">Çevir</button>
                        <a href="?sayfa=satinalma_sayfasi" id="satinAlBtn" style="display:none;" class="btn btn-round btn-border btn-default">Satın Al</a>
                    <?php endif; ?>
                </main>
            </div>
        </div>
    </div>
    <?php } ?>
     
    <script src="cark/js/jquery-2.1.1.js"></script>
    <script src="cark/js/jquery.superwheel.min.js"></script>
    <script src="cark/js/sweetalert2.min.js"></script>
    <script src="cark/js/lmcark.js"></script>
     
    <script>
    jQuery(document).ready(function($){
        let cevirmeHakki = <?= json_encode($cevirmeHakki); ?>;
     
        const olasilikliDonus = () => {
            const olasiliklar = [
                { value: 1, oran: 90 },
                { value: 0, oran: 10 }
            ];
     
            let rastgele = Math.random() * 100;
            let toplam = 0;
            for (let i = 0; i < olasiliklar.length; i++) {
                toplam += olasiliklar[i].oran;
                if (rastgele <= toplam) {
                    return olasiliklar[i].value;
                }
            }
            return 0;
        };
     
        $('.wheel-letter-spacing').superWheel({
            slices: [
                { text: "ÖDÜL1", value: 1, message: "Ödül1", discount: "kazanaılanödülkod1", background: "#f1c40f", color: "#fff" },
                { text: "ŞANS YOK", value: 0, message: "Bugün Şansın Yok", discount: "********", background: "#e74c3c", color: "#fff" },
                { text: "ÖDÜL2<br>TASARIM<br>%30", value: 1, message: "Ödül2", discount: "kazanaılanödülkod2", background: "#2980b9", color: "#fff" },
                { text: "KAYBETTİN", value: 0, message: "Kaybettin :(", discount: "********", background: "#333333", color: "#fff" },
                { text: "ÖDÜL3", value: 1, message: "Ödül3 ", discount: "kazanaılanödülkod3", background: "#27ae60", color: "#fff" },
                { text: "HİÇBİR ŞEY", value: 0, message: "Hiçbir şey alamıyorsun :(", discount: "********", background: "#8e44ad", color: "#fff" }
            ],
            width: 500,
            frame: 1,
            type: "spin",
            center: {
                rotate: true,
                image: {
                    url: "assets/img/genel/22636.jpg",
                    width: 25
                }
            },
            marker: {
                background: "#f1c40f",
                animate: true
            }
        });
     
        const tick = new Audio('cark/media/tick.mp3');
     
        $(document).on('click', '.wheel-letter-spacing-spin-button', function(e){
            if (cevirmeHakki > 0) {
                const secilenDeger = olasilikliDonus();
                $('.wheel-letter-spacing').superWheel('start', 'value', secilenDeger);
                $(this).prop('disabled', true);
            } else {
                Swal.fire({
                    title: 'Çark Hakkınız Kalmadı',
                    text: 'Yeni hak almak için satın alma yapmalısınız.',
                    icon: 'info'
                });
                $(".wheel-letter-spacing-spin-button").hide();
                $("#satinAlBtn").show();
            }
        });
     
        $('.wheel-letter-spacing').superWheel('onStart', function(){
            $('.wheel-letter-spacing-spin-button').text('Çeviriliyor...');
        });
     
        $('.wheel-letter-spacing').superWheel('onStep', function(){
            if (typeof tick.currentTime !== 'undefined') tick.currentTime = 0;
            tick.play();
        });
     
    $('.wheel-letter-spacing').superWheel('onComplete', function(results){
        if (results.value === 1) {
            // Kazandıysa kodu kaydet
            $.post('', { kod_kaydet: true, aciklama: results.message }, function(response){
                try {
                    let data = typeof response === 'object' ? response : JSON.parse(response);
     
                    if (data.success) {
                        Swal.fire({
                            icon: 'success',
                            title: 'Tebrikler!',
                            html: `<b>Kodunuz: ${data.kod}</b><br>${data.message}`
                        });
                    } else {
                        Swal.fire({
                            icon: 'error',
                            title: 'Hata!',
                            text: data.message || 'Bir sorun oluştu, lütfen tekrar deneyin.'
                        });
                    }
                } catch (e) {
                    console.error('JSON Hatası:', e);
                    console.log('Ham yanıt:', response);
                    Swal.fire({
                        icon: 'error',
                        title: 'Sunucu Hatası!',
                        text: 'İşlem sırasında bir hata oluştu. Lütfen daha sonra tekrar deneyin.'
                    });
                }
            });
        } else {
            Swal.fire({
                icon: 'error',
                title: "Üzgünüz!",
                text: results.message
            });
        }
     
        cevirmeHakki--;
     
        if (cevirmeHakki > 0) {
            $('.wheel-letter-spacing-spin-button:disabled').prop('disabled', false).text('Çevir');
            $("#satinAlBtn").hide();
        } else {
            $('.wheel-letter-spacing-spin-button').hide();
            $('#satinAlBtn').show();
        }
    });
     
    });
    </script>
     
    <!-- Çarkı açmak için -->
    <script>
    document.addEventListener("DOMContentLoaded", function () {
        const cevirBtn = document.getElementById('cevirBtn');
        const girisYapildi = <?= json_encode($girisYapildiMi); ?>;
        const cevirmeHakki = <?= json_encode($cevirmeHakki); ?>;
     
        if (cevirBtn) {
            cevirBtn.addEventListener('click', function (e) {
                if (girisYapildi && cevirmeHakki > 0) {
                    $('#denemeSinavBasvuru').modal('show');
                    $.ajax({
                        url: '',
                        method: 'POST',
                        data: { cevir: true },
                        success: function(response) {
                            const data = JSON.parse(response);
                            if (data.success) {
                                Swal.fire({
                                    title: 'Çark dönmeye başladı!',
                                    text: 'Şansınızı deneyin!',
                                    icon: 'success'
                                });
                            } else {
                                Swal.fire({
                                    title: 'Çark Hakkı Yok',
                                    text: data.message,
                                    icon: 'info'
                                });
                            }
                        },
                        error: function() {
                            Swal.fire({
                                title: 'Hata',
                                text: 'Bir şeyler yanlış gitti!',
                                icon: 'error'
                            });
                        }
                    });
                } else if (girisYapildi && cevirmeHakki <= 0) {
                    Swal.fire({
                        title: 'Çark Hakkı Yok',
                        text: 'Çark hakkınız bitmiş. Lütfen satın alınız.',
                        icon: 'info',
                        showCancelButton: true,
                        confirmButtonText: 'OK',
                        cancelButtonText: 'Satın Al',
                        reverseButtons: true
                    }).then((result) => {
                        if (result.dismiss === Swal.DismissReason.cancel) {
                            window.location.href = '?sayfa=satinalma_sayfasi';
                        }
                    });
                } else {
                    e.preventDefault();
                    Swal.fire({
                        title: 'ÇEVİRME YOK!',
                        text: 'Çark şansınız için giriş yapınız.',
                        icon: 'warning'
                    });
                }
            });
        }
    });
    </script>
  • 27-04-2025, 00:33:50
    #7
    Melinda adlı üyeden alıntı: mesajı görüntüle
    <?php
    session_start();
     
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
     
    // Kullanıcı giriş durumu
    $girisYapildiMi = isset($_SESSION['kullanici_id']) ? true : false;
    $cevirmeHakki = 0;
     
    // Kod üretme fonksiyonu
    function rastgeleKodUret($uzunluk = 8) {
        return substr(str_shuffle("ABCDEFGHJKLMNPQRSTUVWXYZ23456789"), 0, $uzunluk);
    }
     
    // Kod kayıt işlemi
    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['kod_kaydet'])) {
        try {
            $kod = rastgeleKodUret();
            $aciklama = $_POST['aciklama'] ?? 'Kazandı';
            $stmt = $db->prepare("INSERT INTO odul_kodlari (kullanici_id, kod, aciklama) VALUES (:kullanici_id, :kod, :aciklama)");
            $stmt->execute([
                'kullanici_id' => $_SESSION['kullanici_id'],
                'kod' => $kod,
                'aciklama' => $aciklama
            ]);
     
            // Başarılı işlemi döndür
            echo json_encode(['success' => true, 'kod' => $kod, 'message' => $aciklama]);
        } catch (Exception $e) {
            // Hata durumunda JSON döndür
            echo json_encode(['success' => false, 'message' => 'Kod kaydedilemedi: ' . $e->getMessage()]);
        }
        exit;
    }
     
     
    // Eğer giriş yapılmışsa
    if ($girisYapildiMi) {
        $userId = $_SESSION['kullanici_id'];
        
        // Çark hakkını veritabanından sorgula
        $stmt = $db->prepare("SELECT cark_hakki FROM musteri WHERE id = :id");
        $stmt->bindParam(':id', $userId);
        $stmt->execute();
        $cevirmeHakki = (int)$stmt->fetchColumn(); // Çark hakkı değeri
     
        // AJAX ile gelen çark çevirme isteğini işleme
        if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['cevir'])) {
            if ($cevirmeHakki > 0) {
                // Çark hakkını 1 azalt
                $stmt = $db->prepare("UPDATE musteri SET cark_hakki = cark_hakki - 1 WHERE id = :id");
                $stmt->bindParam(':id', $userId);
                $stmt->execute();
     
                echo json_encode(['success' => true]);
            } else {
                echo json_encode(['success' => false, 'message' => 'Çark hakkınız yok']);
            }
            exit;
        }
    }
    ?>
     
    <!-- Modal -->
    <?php if ($girisYapildiMi) { ?>
    <div class="modal fade custommodal" id="denemeSinavBasvuru" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
        <div class="modal-dialog modal-lg" role="document">
            <div class="modal-content">
                <svg data-dismiss="modal" xmlns="http://www.w3.org/2000/svg" width="35px" height="35px">
                    <path fill-rule="evenodd" fill="rgb(244, 153, 51)"
                          d="M32.975,23.311 L27.188,17.523 L32.975,11.736 C35.644,9.067 35.644,4.740 32.975,2.071 C30.307,-0.598 25.979,-0.598 23.311,2.071 L17.523,7.858 L11.736,2.071 C9.067,-0.598 4.740,-0.598 2.071,2.071 C-0.598,4.740 -0.598,9.067 2.071,11.736 L7.858,17.523 L2.071,23.311 C-0.598,25.979 -0.598,30.307 2.071,32.975 C4.740,35.644 9.067,35.644 11.736,32.975 L17.523,27.188 L23.311,32.975 C25.979,35.644 30.307,35.644 32.975,32.975 C35.644,30.307 35.644,25.979 32.975,23.311 Z" />
                </svg>
                <main class="cd-main-content text-center">
                    <link rel="stylesheet" href="cark/css/reset.css">
                    <link rel="stylesheet" href="cark/css/sweetalert2.min.css">
                    <link rel="stylesheet" href="cark/css/superwheel.min.css">
                    <div class="wheel-letter-spacing"></div>
                    <?php if ($cevirmeHakki > 0): ?>
                        <button class="btn btn-round btn-border btn-default wheel-letter-spacing-spin-button">Çevir</button>
                        <a href="?sayfa=satinalma_sayfasi" id="satinAlBtn" style="display:none;" class="btn btn-round btn-border btn-default">Satın Al</a>
                    <?php endif; ?>
                </main>
            </div>
        </div>
    </div>
    <?php } ?>
     
    <script src="cark/js/jquery-2.1.1.js"></script>
    <script src="cark/js/jquery.superwheel.min.js"></script>
    <script src="cark/js/sweetalert2.min.js"></script>
    <script src="cark/js/lmcark.js"></script>
     
    <script>
    jQuery(document).ready(function($){
        let cevirmeHakki = <?= json_encode($cevirmeHakki); ?>;
     
        const olasilikliDonus = () => {
            const olasiliklar = [
                { value: 1, oran: 90 },
                { value: 0, oran: 10 }
            ];
     
            let rastgele = Math.random() * 100;
            let toplam = 0;
            for (let i = 0; i < olasiliklar.length; i++) {
                toplam += olasiliklar[i].oran;
                if (rastgele <= toplam) {
                    return olasiliklar[i].value;
                }
            }
            return 0;
        };
     
        $('.wheel-letter-spacing').superWheel({
            slices: [
                { text: "ÖDÜL1", value: 1, message: "Ödül1", discount: "kazanaılanödülkod1", background: "#f1c40f", color: "#fff" },
                { text: "ŞANS YOK", value: 0, message: "Bugün Şansın Yok", discount: "********", background: "#e74c3c", color: "#fff" },
                { text: "ÖDÜL2<br>TASARIM<br>%30", value: 1, message: "Ödül2", discount: "kazanaılanödülkod2", background: "#2980b9", color: "#fff" },
                { text: "KAYBETTİN", value: 0, message: "Kaybettin :(", discount: "********", background: "#333333", color: "#fff" },
                { text: "ÖDÜL3", value: 1, message: "Ödül3 ", discount: "kazanaılanödülkod3", background: "#27ae60", color: "#fff" },
                { text: "HİÇBİR ŞEY", value: 0, message: "Hiçbir şey alamıyorsun :(", discount: "********", background: "#8e44ad", color: "#fff" }
            ],
            width: 500,
            frame: 1,
            type: "spin",
            center: {
                rotate: true,
                image: {
                    url: "assets/img/genel/22636.jpg",
                    width: 25
                }
            },
            marker: {
                background: "#f1c40f",
                animate: true
            }
        });
     
        const tick = new Audio('cark/media/tick.mp3');
     
        $(document).on('click', '.wheel-letter-spacing-spin-button', function(e){
            if (cevirmeHakki > 0) {
                const secilenDeger = olasilikliDonus();
                $('.wheel-letter-spacing').superWheel('start', 'value', secilenDeger);
                $(this).prop('disabled', true);
            } else {
                Swal.fire({
                    title: 'Çark Hakkınız Kalmadı',
                    text: 'Yeni hak almak için satın alma yapmalısınız.',
                    icon: 'info'
                });
                $(".wheel-letter-spacing-spin-button").hide();
                $("#satinAlBtn").show();
            }
        });
     
        $('.wheel-letter-spacing').superWheel('onStart', function(){
            $('.wheel-letter-spacing-spin-button').text('Çeviriliyor...');
        });
     
        $('.wheel-letter-spacing').superWheel('onStep', function(){
            if (typeof tick.currentTime !== 'undefined') tick.currentTime = 0;
            tick.play();
        });
     
    $('.wheel-letter-spacing').superWheel('onComplete', function(results){
        if (results.value === 1) {
            // Kazandıysa kodu kaydet
            $.post('', { kod_kaydet: true, aciklama: results.message }, function(response){
                try {
                    let data = typeof response === 'object' ? response : JSON.parse(response);
     
                    if (data.success) {
                        Swal.fire({
                            icon: 'success',
                            title: 'Tebrikler!',
                            html: `<b>Kodunuz: ${data.kod}</b><br>${data.message}`
                        });
                    } else {
                        Swal.fire({
                            icon: 'error',
                            title: 'Hata!',
                            text: data.message || 'Bir sorun oluştu, lütfen tekrar deneyin.'
                        });
                    }
                } catch (e) {
                    console.error('JSON Hatası:', e);
                    console.log('Ham yanıt:', response);
                    Swal.fire({
                        icon: 'error',
                        title: 'Sunucu Hatası!',
                        text: 'İşlem sırasında bir hata oluştu. Lütfen daha sonra tekrar deneyin.'
                    });
                }
            });
        } else {
            Swal.fire({
                icon: 'error',
                title: "Üzgünüz!",
                text: results.message
            });
        }
     
        cevirmeHakki--;
     
        if (cevirmeHakki > 0) {
            $('.wheel-letter-spacing-spin-button:disabled').prop('disabled', false).text('Çevir');
            $("#satinAlBtn").hide();
        } else {
            $('.wheel-letter-spacing-spin-button').hide();
            $('#satinAlBtn').show();
        }
    });
     
    });
    </script>
     
    <!-- Çarkı açmak için -->
    <script>
    document.addEventListener("DOMContentLoaded", function () {
        const cevirBtn = document.getElementById('cevirBtn');
        const girisYapildi = <?= json_encode($girisYapildiMi); ?>;
        const cevirmeHakki = <?= json_encode($cevirmeHakki); ?>;
     
        if (cevirBtn) {
            cevirBtn.addEventListener('click', function (e) {
                if (girisYapildi && cevirmeHakki > 0) {
                    $('#denemeSinavBasvuru').modal('show');
                    $.ajax({
                        url: '',
                        method: 'POST',
                        data: { cevir: true },
                        success: function(response) {
                            const data = JSON.parse(response);
                            if (data.success) {
                                Swal.fire({
                                    title: 'Çark dönmeye başladı!',
                                    text: 'Şansınızı deneyin!',
                                    icon: 'success'
                                });
                            } else {
                                Swal.fire({
                                    title: 'Çark Hakkı Yok',
                                    text: data.message,
                                    icon: 'info'
                                });
                            }
                        },
                        error: function() {
                            Swal.fire({
                                title: 'Hata',
                                text: 'Bir şeyler yanlış gitti!',
                                icon: 'error'
                            });
                        }
                    });
                } else if (girisYapildi && cevirmeHakki <= 0) {
                    Swal.fire({
                        title: 'Çark Hakkı Yok',
                        text: 'Çark hakkınız bitmiş. Lütfen satın alınız.',
                        icon: 'info',
                        showCancelButton: true,
                        confirmButtonText: 'OK',
                        cancelButtonText: 'Satın Al',
                        reverseButtons: true
                    }).then((result) => {
                        if (result.dismiss === Swal.DismissReason.cancel) {
                            window.location.href = '?sayfa=satinalma_sayfasi';
                        }
                    });
                } else {
                    e.preventDefault();
                    Swal.fire({
                        title: 'ÇEVİRME YOK!',
                        text: 'Çark şansınız için giriş yapınız.',
                        icon: 'warning'
                    });
                }
            });
        }
    });
    </script>
    yine aynı hata ödül1 geldi konsolda {"success":true,"kod":"UF8EMWZK","message":"u00d6d u00fcl1"}
    message kısmında aslında ödül1 yazması gerekiyor ama bu yazıyor bu ne alaka çözemedim
  • 27-04-2025, 00:45:53
    #8
    <?php
    session_start();
    // Veritabanı bağlantısı
    try {
        $db = new PDO('mysql:host=localhost;dbname=veritabani_adi;charset=utf8', 'kullanici_adi', 'sifre');
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e) {
        die("Veritabanı bağlantı hatası: " . $e->getMessage());
    }
    // Kullanıcı giriş durumu
    $girisYapildiMi = isset($_SESSION['kullanici_id']) ? true : false;
    $cevirmeHakki = 0;
     
    // Kod üretme fonksiyonu
    function rastgeleKodUret($uzunluk = 8) {
        return substr(str_shuffle("ABCDEFGHJKLMNPQRSTUVWXYZ23456789"), 0, $uzunluk);
    }
     
    // Kod kayıt işlemi
    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['kod_kaydet'])) {
        try {
            $kod = rastgeleKodUret();
            $aciklama = $_POST['aciklama'] ?? 'Kazandı';
            $stmt = $db->prepare("INSERT INTO odul_kodlari (kullanici_id, kod, aciklama) VALUES (:kullanici_id, :kod, :aciklama)");
            $stmt->execute([
                'kullanici_id' => $_SESSION['kullanici_id'],
                'kod' => $kod,
                'aciklama' => $aciklama
            ]);
     
            // UTF-8 için header ekleyelim
            header('Content-Type: application/json; charset=utf-8');
            // Başarılı işlemi döndür ve JSON_UNESCAPED_UNICODE ekleyelim
            echo json_encode(['success' => true, 'kod' => $kod, 'message' => $aciklama], JSON_UNESCAPED_UNICODE);
        } catch (Exception $e) {
            // Hata durumunda JSON döndür
            header('Content-Type: application/json; charset=utf-8');
            echo json_encode(['success' => false, 'message' => 'Kod kaydedilemedi: ' . $e->getMessage()], JSON_UNESCAPED_UNICODE);
        }
        exit;
    }
     
     
    // Eğer giriş yapılmışsa
    if ($girisYapildiMi) {
        $userId = $_SESSION['kullanici_id'];
         
        // Çark hakkını veritabanından sorgula
        $stmt = $db->prepare("SELECT cark_hakki FROM musteri WHERE id = :id");
        $stmt->bindParam(':id', $userId);
        $stmt->execute();
        $cevirmeHakki = (int)$stmt->fetchColumn(); // Çark hakkı değeri
     
        // AJAX ile gelen çark çevirme isteğini işleme
        if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['cevir'])) {
            if ($cevirmeHakki > 0) {
                // Çark hakkını 1 azalt
                $stmt = $db->prepare("UPDATE musteri SET cark_hakki = cark_hakki - 1 WHERE id = :id");
                $stmt->bindParam(':id', $userId);
                $stmt->execute();
     
                echo json_encode(['success' => true]);
            } else {
                echo json_encode(['success' => false, 'message' => 'Çark hakkınız yok']);
            }
            exit;
        }
    }
    ?>
     
    <!-- Modal -->
    <?php if ($girisYapildiMi) { ?>
    <div class="modal fade custommodal" id="denemeSinavBasvuru" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
        <div class="modal-dialog modal-lg" role="document">
            <div class="modal-content">
                <svg data-dismiss="modal" xmlns="http://www.w3.org/2000/svg" width="35px" height="35px">
                    <path fill-rule="evenodd" fill="rgb(244, 153, 51)"
                          d="M32.975,23.311 L27.188,17.523 L32.975,11.736 C35.644,9.067 35.644,4.740 32.975,2.071 C30.307,-0.598 25.979,-0.598 23.311,2.071 L17.523,7.858 L11.736,2.071 C9.067,-0.598 4.740,-0.598 2.071,2.071 C-0.598,4.740 -0.598,9.067 2.071,11.736 L7.858,17.523 L2.071,23.311 C-0.598,25.979 -0.598,30.307 2.071,32.975 C4.740,35.644 9.067,35.644 11.736,32.975 L17.523,27.188 L23.311,32.975 C25.979,35.644 30.307,35.644 32.975,32.975 C35.644,30.307 35.644,25.979 32.975,23.311 Z" />
                </svg>
                <main class="cd-main-content text-center">
                    <link rel="stylesheet" href="cark/css/reset.css">
                    <link rel="stylesheet" href="cark/css/sweetalert2.min.css">
                    <link rel="stylesheet" href="cark/css/superwheel.min.css">
                    <div class="wheel-letter-spacing"></div>
                    <?php if ($cevirmeHakki > 0): ?>
                        <button class="btn btn-round btn-border btn-default wheel-letter-spacing-spin-button">Çevir</button>
                        <a href="?sayfa=satinalma_sayfasi" id="satinAlBtn" style="display:none;" class="btn btn-round btn-border btn-default">Satın Al</a>
                    <?php endif; ?>
                </main>
            </div>
        </div>
    </div>
    <?php } ?>
     
    <script src="cark/js/jquery-2.1.1.js"></script>
    <script src="cark/js/jquery.superwheel.min.js"></script>
    <script src="cark/js/sweetalert2.min.js"></script>
    <script src="cark/js/lmcark.js"></script>
     
    <script>
    jQuery(document).ready(function($){
        let cevirmeHakki = <?= json_encode($cevirmeHakki); ?>;
     
        const olasilikliDonus = () => {
            const olasiliklar = [
                { value: 1, oran: 90 },
                { value: 0, oran: 10 }
            ];
     
            let rastgele = Math.random() * 100;
            let toplam = 0;
            for (let i = 0; i < olasiliklar.length; i++) {
                toplam += olasiliklar[i].oran;
                if (rastgele <= toplam) {
                    return olasiliklar[i].value;
                }
            }
            return 0;
        };
     
        $('.wheel-letter-spacing').superWheel({
            slices: [
                { text: "ÖDÜL1", value: 1, message: "Ödül1", discount: "kazanaılanödülkod1", background: "#f1c40f", color: "#fff" },
                { text: "ŞANS YOK", value: 0, message: "Bugün Şansın Yok", discount: "********", background: "#e74c3c", color: "#fff" },
                { text: "ÖDÜL2<br>TASARIM<br>%30", value: 1, message: "Ödül2", discount: "kazanaılanödülkod2", background: "#2980b9", color: "#fff" },
                { text: "KAYBETTİN", value: 0, message: "Kaybettin :(", discount: "********", background: "#333333", color: "#fff" },
                { text: "ÖDÜL3", value: 1, message: "Ödül3 ", discount: "kazanaılanödülkod3", background: "#27ae60", color: "#fff" },
                { text: "HİÇBİR ŞEY", value: 0, message: "Hiçbir şey alamıyorsun :(", discount: "********", background: "#8e44ad", color: "#fff" }
            ],
            width: 500,
            frame: 1,
            type: "spin",
            center: {
                rotate: true,
                image: {
                    url: "assets/img/genel/22636.jpg",
                    width: 25
                }
            },
            marker: {
                background: "#f1c40f",
                animate: true
            }
        });
     
        const tick = new Audio('cark/media/tick.mp3');
     
        $(document).on('click', '.wheel-letter-spacing-spin-button', function(e){
            if (cevirmeHakki > 0) {
                const secilenDeger = olasilikliDonus();
                $('.wheel-letter-spacing').superWheel('start', 'value', secilenDeger);
                $(this).prop('disabled', true);
            } else {
                Swal.fire({
                    title: 'Çark Hakkınız Kalmadı',
                    text: 'Yeni hak almak için satın alma yapmalısınız.',
                    icon: 'info'
                });
                $(".wheel-letter-spacing-spin-button").hide();
                $("#satinAlBtn").show();
            }
        });
     
        $('.wheel-letter-spacing').superWheel('onStart', function(){
            $('.wheel-letter-spacing-spin-button').text('Çeviriliyor...');
        });
     
        $('.wheel-letter-spacing').superWheel('onStep', function(){
            if (typeof tick.currentTime !== 'undefined') tick.currentTime = 0;
            tick.play();
        });
     
    $('.wheel-letter-spacing').superWheel('onComplete', function(results){
        if (results.value === 1) {
            // Kazandıysa kodu kaydet
            $.ajax({
                url: '',
                method: 'POST',
                data: { kod_kaydet: true, aciklama: results.message },
                dataType: 'json',
                success: function(data) {
                    if (data.success) {
                        Swal.fire({
                            icon: 'success',
                            title: 'Tebrikler!',
                            html: `<b>Kodunuz: ${data.kod}</b><br>${data.message}`
                        });
                    } else {
                        Swal.fire({
                            icon: 'error',
                            title: 'Hata!',
                            text: data.message || 'Bir sorun oluştu, lütfen tekrar deneyin.'
                        });
                    }
                },
                error: function(xhr, status, error) {
                    console.error('AJAX Hatası:', error);
                    console.log('Ham yanıt:', xhr.responseText);
                    Swal.fire({
                        icon: 'error',
                        title: 'Sunucu Hatası!',
                        text: 'İşlem sırasında bir hata oluştu. Lütfen daha sonra tekrar deneyin.'
                    });
                }
            });
        } else {
            Swal.fire({
                icon: 'error',
                title: "Üzgünüz!",
                text: results.message
            });
        }
     
        cevirmeHakki--;
     
        if (cevirmeHakki > 0) {
            $('.wheel-letter-spacing-spin-button:disabled').prop('disabled', false).text('Çevir');
            $("#satinAlBtn").hide();
        } else {
            $('.wheel-letter-spacing-spin-button').hide();
            $('#satinAlBtn').show();
        }
    });
     
    });
    </script>
     
    <!-- Çarkı açmak için -->
    <script>
    document.addEventListener("DOMContentLoaded", function () {
        const cevirBtn = document.getElementById('cevirBtn');
        const girisYapildi = <?= json_encode($girisYapildiMi); ?>;
        const cevirmeHakki = <?= json_encode($cevirmeHakki); ?>;
     
        if (cevirBtn) {
            cevirBtn.addEventListener('click', function (e) {
                if (girisYapildi && cevirmeHakki > 0) {
                    $('#denemeSinavBasvuru').modal('show');
                    $.ajax({
                        url: '',
                        method: 'POST',
                        data: { cevir: true },
                        success: function(response) {
                            const data = JSON.parse(response);
                            if (data.success) {
                                Swal.fire({
                                    title: 'Çark dönmeye başladı!',
                                    text: 'Şansınızı deneyin!',
                                    icon: 'success'
                                });
                            } else {
                                Swal.fire({
                                    title: 'Çark Hakkı Yok',
                                    text: data.message,
                                    icon: 'info'
                                });
                            }
                        },
                        error: function() {
                            Swal.fire({
                                title: 'Hata',
                                text: 'Bir şeyler yanlış gitti!',
                                icon: 'error'
                            });
                        }
                    });
                } else if (girisYapildi && cevirmeHakki <= 0) {
                    Swal.fire({
                        title: 'Çark Hakkı Yok',
                        text: 'Çark hakkınız bitmiş. Lütfen satın alınız.',
                        icon: 'info',
                        showCancelButton: true,
                        confirmButtonText: 'OK',
                        cancelButtonText: 'Satın Al',
                        reverseButtons: true
                    }).then((result) => {
                        if (result.dismiss === Swal.DismissReason.cancel) {
                            window.location.href = '?sayfa=satinalma_sayfasi';
                        }
                    });
                } else {
                    e.preventDefault();
                    Swal.fire({
                        title: 'ÇEVİRME YOK!',
                        text: 'Çark şansınız için giriş yapınız.',
                        icon: 'warning'
                    });
                }
            });
        }
    });
    </script>
    Bunuda dener misiniz?
  • 27-04-2025, 01:04:28
    #9
    Melinda adlı üyeden alıntı: mesajı görüntüle
    <?php
    session_start();
    // Veritabanı bağlantısı
    try {
        $db = new PDO('mysql:host=localhost;dbname=veritabani_adi;charset=utf8', 'kullanici_adi', 'sifre');
        $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    } catch (PDOException $e) {
        die("Veritabanı bağlantı hatası: " . $e->getMessage());
    }
    // Kullanıcı giriş durumu
    $girisYapildiMi = isset($_SESSION['kullanici_id']) ? true : false;
    $cevirmeHakki = 0;
     
    // Kod üretme fonksiyonu
    function rastgeleKodUret($uzunluk = 8) {
        return substr(str_shuffle("ABCDEFGHJKLMNPQRSTUVWXYZ23456789"), 0, $uzunluk);
    }
     
    // Kod kayıt işlemi
    if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['kod_kaydet'])) {
        try {
            $kod = rastgeleKodUret();
            $aciklama = $_POST['aciklama'] ?? 'Kazandı';
            $stmt = $db->prepare("INSERT INTO odul_kodlari (kullanici_id, kod, aciklama) VALUES (:kullanici_id, :kod, :aciklama)");
            $stmt->execute([
                'kullanici_id' => $_SESSION['kullanici_id'],
                'kod' => $kod,
                'aciklama' => $aciklama
            ]);
     
            // UTF-8 için header ekleyelim
            header('Content-Type: application/json; charset=utf-8');
            // Başarılı işlemi döndür ve JSON_UNESCAPED_UNICODE ekleyelim
            echo json_encode(['success' => true, 'kod' => $kod, 'message' => $aciklama], JSON_UNESCAPED_UNICODE);
        } catch (Exception $e) {
            // Hata durumunda JSON döndür
            header('Content-Type: application/json; charset=utf-8');
            echo json_encode(['success' => false, 'message' => 'Kod kaydedilemedi: ' . $e->getMessage()], JSON_UNESCAPED_UNICODE);
        }
        exit;
    }
     
     
    // Eğer giriş yapılmışsa
    if ($girisYapildiMi) {
        $userId = $_SESSION['kullanici_id'];
        
        // Çark hakkını veritabanından sorgula
        $stmt = $db->prepare("SELECT cark_hakki FROM musteri WHERE id = :id");
        $stmt->bindParam(':id', $userId);
        $stmt->execute();
        $cevirmeHakki = (int)$stmt->fetchColumn(); // Çark hakkı değeri
     
        // AJAX ile gelen çark çevirme isteğini işleme
        if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['cevir'])) {
            if ($cevirmeHakki > 0) {
                // Çark hakkını 1 azalt
                $stmt = $db->prepare("UPDATE musteri SET cark_hakki = cark_hakki - 1 WHERE id = :id");
                $stmt->bindParam(':id', $userId);
                $stmt->execute();
     
                echo json_encode(['success' => true]);
            } else {
                echo json_encode(['success' => false, 'message' => 'Çark hakkınız yok']);
            }
            exit;
        }
    }
    ?>
     
    <!-- Modal -->
    <?php if ($girisYapildiMi) { ?>
    <div class="modal fade custommodal" id="denemeSinavBasvuru" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
        <div class="modal-dialog modal-lg" role="document">
            <div class="modal-content">
                <svg data-dismiss="modal" xmlns="http://www.w3.org/2000/svg" width="35px" height="35px">
                    <path fill-rule="evenodd" fill="rgb(244, 153, 51)"
                          d="M32.975,23.311 L27.188,17.523 L32.975,11.736 C35.644,9.067 35.644,4.740 32.975,2.071 C30.307,-0.598 25.979,-0.598 23.311,2.071 L17.523,7.858 L11.736,2.071 C9.067,-0.598 4.740,-0.598 2.071,2.071 C-0.598,4.740 -0.598,9.067 2.071,11.736 L7.858,17.523 L2.071,23.311 C-0.598,25.979 -0.598,30.307 2.071,32.975 C4.740,35.644 9.067,35.644 11.736,32.975 L17.523,27.188 L23.311,32.975 C25.979,35.644 30.307,35.644 32.975,32.975 C35.644,30.307 35.644,25.979 32.975,23.311 Z" />
                </svg>
                <main class="cd-main-content text-center">
                    <link rel="stylesheet" href="cark/css/reset.css">
                    <link rel="stylesheet" href="cark/css/sweetalert2.min.css">
                    <link rel="stylesheet" href="cark/css/superwheel.min.css">
                    <div class="wheel-letter-spacing"></div>
                    <?php if ($cevirmeHakki > 0): ?>
                        <button class="btn btn-round btn-border btn-default wheel-letter-spacing-spin-button">Çevir</button>
                        <a href="?sayfa=satinalma_sayfasi" id="satinAlBtn" style="display:none;" class="btn btn-round btn-border btn-default">Satın Al</a>
                    <?php endif; ?>
                </main>
            </div>
        </div>
    </div>
    <?php } ?>
     
    <script src="cark/js/jquery-2.1.1.js"></script>
    <script src="cark/js/jquery.superwheel.min.js"></script>
    <script src="cark/js/sweetalert2.min.js"></script>
    <script src="cark/js/lmcark.js"></script>
     
    <script>
    jQuery(document).ready(function($){
        let cevirmeHakki = <?= json_encode($cevirmeHakki); ?>;
     
        const olasilikliDonus = () => {
            const olasiliklar = [
                { value: 1, oran: 90 },
                { value: 0, oran: 10 }
            ];
     
            let rastgele = Math.random() * 100;
            let toplam = 0;
            for (let i = 0; i < olasiliklar.length; i++) {
                toplam += olasiliklar[i].oran;
                if (rastgele <= toplam) {
                    return olasiliklar[i].value;
                }
            }
            return 0;
        };
     
        $('.wheel-letter-spacing').superWheel({
            slices: [
                { text: "ÖDÜL1", value: 1, message: "Ödül1", discount: "kazanaılanödülkod1", background: "#f1c40f", color: "#fff" },
                { text: "ŞANS YOK", value: 0, message: "Bugün Şansın Yok", discount: "********", background: "#e74c3c", color: "#fff" },
                { text: "ÖDÜL2<br>TASARIM<br>%30", value: 1, message: "Ödül2", discount: "kazanaılanödülkod2", background: "#2980b9", color: "#fff" },
                { text: "KAYBETTİN", value: 0, message: "Kaybettin :(", discount: "********", background: "#333333", color: "#fff" },
                { text: "ÖDÜL3", value: 1, message: "Ödül3 ", discount: "kazanaılanödülkod3", background: "#27ae60", color: "#fff" },
                { text: "HİÇBİR ŞEY", value: 0, message: "Hiçbir şey alamıyorsun :(", discount: "********", background: "#8e44ad", color: "#fff" }
            ],
            width: 500,
            frame: 1,
            type: "spin",
            center: {
                rotate: true,
                image: {
                    url: "assets/img/genel/22636.jpg",
                    width: 25
                }
            },
            marker: {
                background: "#f1c40f",
                animate: true
            }
        });
     
        const tick = new Audio('cark/media/tick.mp3');
     
        $(document).on('click', '.wheel-letter-spacing-spin-button', function(e){
            if (cevirmeHakki > 0) {
                const secilenDeger = olasilikliDonus();
                $('.wheel-letter-spacing').superWheel('start', 'value', secilenDeger);
                $(this).prop('disabled', true);
            } else {
                Swal.fire({
                    title: 'Çark Hakkınız Kalmadı',
                    text: 'Yeni hak almak için satın alma yapmalısınız.',
                    icon: 'info'
                });
                $(".wheel-letter-spacing-spin-button").hide();
                $("#satinAlBtn").show();
            }
        });
     
        $('.wheel-letter-spacing').superWheel('onStart', function(){
            $('.wheel-letter-spacing-spin-button').text('Çeviriliyor...');
        });
     
        $('.wheel-letter-spacing').superWheel('onStep', function(){
            if (typeof tick.currentTime !== 'undefined') tick.currentTime = 0;
            tick.play();
        });
     
    $('.wheel-letter-spacing').superWheel('onComplete', function(results){
        if (results.value === 1) {
            // Kazandıysa kodu kaydet
            $.ajax({
                url: '',
                method: 'POST',
                data: { kod_kaydet: true, aciklama: results.message },
                dataType: 'json',
                success: function(data) {
                    if (data.success) {
                        Swal.fire({
                            icon: 'success',
                            title: 'Tebrikler!',
                            html: `<b>Kodunuz: ${data.kod}</b><br>${data.message}`
                        });
                    } else {
                        Swal.fire({
                            icon: 'error',
                            title: 'Hata!',
                            text: data.message || 'Bir sorun oluştu, lütfen tekrar deneyin.'
                        });
                    }
                },
                error: function(xhr, status, error) {
                    console.error('AJAX Hatası:', error);
                    console.log('Ham yanıt:', xhr.responseText);
                    Swal.fire({
                        icon: 'error',
                        title: 'Sunucu Hatası!',
                        text: 'İşlem sırasında bir hata oluştu. Lütfen daha sonra tekrar deneyin.'
                    });
                }
            });
        } else {
            Swal.fire({
                icon: 'error',
                title: "Üzgünüz!",
                text: results.message
            });
        }
     
        cevirmeHakki--;
     
        if (cevirmeHakki > 0) {
            $('.wheel-letter-spacing-spin-button:disabled').prop('disabled', false).text('Çevir');
            $("#satinAlBtn").hide();
        } else {
            $('.wheel-letter-spacing-spin-button').hide();
            $('#satinAlBtn').show();
        }
    });
     
    });
    </script>
     
    <!-- Çarkı açmak için -->
    <script>
    document.addEventListener("DOMContentLoaded", function () {
        const cevirBtn = document.getElementById('cevirBtn');
        const girisYapildi = <?= json_encode($girisYapildiMi); ?>;
        const cevirmeHakki = <?= json_encode($cevirmeHakki); ?>;
     
        if (cevirBtn) {
            cevirBtn.addEventListener('click', function (e) {
                if (girisYapildi && cevirmeHakki > 0) {
                    $('#denemeSinavBasvuru').modal('show');
                    $.ajax({
                        url: '',
                        method: 'POST',
                        data: { cevir: true },
                        success: function(response) {
                            const data = JSON.parse(response);
                            if (data.success) {
                                Swal.fire({
                                    title: 'Çark dönmeye başladı!',
                                    text: 'Şansınızı deneyin!',
                                    icon: 'success'
                                });
                            } else {
                                Swal.fire({
                                    title: 'Çark Hakkı Yok',
                                    text: data.message,
                                    icon: 'info'
                                });
                            }
                        },
                        error: function() {
                            Swal.fire({
                                title: 'Hata',
                                text: 'Bir şeyler yanlış gitti!',
                                icon: 'error'
                            });
                        }
                    });
                } else if (girisYapildi && cevirmeHakki <= 0) {
                    Swal.fire({
                        title: 'Çark Hakkı Yok',
                        text: 'Çark hakkınız bitmiş. Lütfen satın alınız.',
                        icon: 'info',
                        showCancelButton: true,
                        confirmButtonText: 'OK',
                        cancelButtonText: 'Satın Al',
                        reverseButtons: true
                    }).then((result) => {
                        if (result.dismiss === Swal.DismissReason.cancel) {
                            window.location.href = '?sayfa=satinalma_sayfasi';
                        }
                    });
                } else {
                    e.preventDefault();
                    Swal.fire({
                        title: 'ÇEVİRME YOK!',
                        text: 'Çark şansınız için giriş yapınız.',
                        icon: 'warning'
                    });
                }
            });
        }
    });
    </script>
    Bunuda dener misiniz?
    burası çalışıyor sürekli
    error: function(xhr, status, error) {
                    console.error('AJAX Hatası:', error);
                    console.log('Ham yanıt:', xhr.responseText);
                    Swal.fire({
                        icon: 'error',
                        title: 'Sunucu Hatası!',
                        text: 'İşlem sırasında bir hata oluştu. Lütfen daha sonra tekrar deneyin.'
                    });
                }