• 27-04-2025, 01:08:37
    #10
    <?php
    session_start();
    // Hata ayıklama için
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    // 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) {
        header('Content-Type: application/json; charset=utf-8');
        echo json_encode(['success' => false, 'message' => 'Veritabanı bağlantı hatası: ' . $e->getMessage()], JSON_UNESCAPED_UNICODE);
        exit;
    }
    // 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);
    }
     
    // AJAX isteklerini kontrol et
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        header('Content-Type: application/json; charset=utf-8');
        
        // POST verilerini kontrol et
        $post_data = file_get_contents('php://input');
        if (empty($_POST) && $post_data) {
            $_POST = json_decode($post_data, true);
        }
        
        // Kod kayıt işlemi
        if (isset($_POST['kod_kaydet'])) {
            try {
                // Kullanıcı girişi kontrol et
                if (!$girisYapildiMi || !isset($_SESSION['kullanici_id'])) {
                    echo json_encode([
                        'success' => false, 
                        'message' => 'Oturum açmanız gerekiyor'
                    ], JSON_UNESCAPED_UNICODE);
                    exit;
                }
                
                $kod = rastgeleKodUret();
                $aciklama = isset($_POST['aciklama']) ? $_POST['aciklama'] : 'Kazandı';
                
                $stmt = $db->prepare("INSERT INTO odul_kodlari (kullanici_id, kod, aciklama) VALUES (:kullanici_id, :kod, :aciklama)");
                $result = $stmt->execute([
                    'kullanici_id' => $_SESSION['kullanici_id'],
                    'kod' => $kod,
                    'aciklama' => $aciklama
                ]);
                
                if ($result) {
                    echo json_encode([
                        'success' => true, 
                        'kod' => $kod, 
                        'message' => $aciklama
                    ], JSON_UNESCAPED_UNICODE);
                } else {
                    echo json_encode([
                        'success' => false, 
                        'message' => 'Kod kaydedilemedi: Veritabanı hatası'
                    ], JSON_UNESCAPED_UNICODE);
                }
            } catch (Exception $e) {
                echo json_encode([
                    'success' => false, 
                    'message' => 'Kod kaydedilemedi: ' . $e->getMessage()
                ], JSON_UNESCAPED_UNICODE);
            }
            exit;
        }
        
        // Çark hakkını veritabanından sorgula
        if (isset($_POST['cevir'])) {
            if ($girisYapildiMi) {
                $userId = $_SESSION['kullanici_id'];
                $stmt = $db->prepare("SELECT cark_hakki FROM musteri WHERE id = :id");
                $stmt->bindParam(':id', $userId);
                $stmt->execute();
                $cevirmeHakki = (int)$stmt->fetchColumn();
                
                if ($cevirmeHakki > 0) {
                    $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']);
                }
            } else {
                echo json_encode(['success' => false, 'message' => 'Giriş yapmanız gerekiyor']);
            }
            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) {
            // Hata ayıklama için isteği görüntüleyelim
            console.log("Gönderilecek veriler:", { kod_kaydet: true, aciklama: results.message });
            
            // Kazandıysa kodu kaydet
            $.ajax({
                url: window.location.href, // Tam URL kullan
                method: 'POST',
                data: { kod_kaydet: true, aciklama: results.message },
                dataType: 'json',
                beforeSend: function() {
                    console.log("AJAX isteği gönderiliyor...");
                },
                success: function(data) {
                    console.log("Başarılı yanıt:", 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.error('Durum kodu:', xhr.status);
                    console.log('Ham yanıt:', xhr.responseText);
                    
                    // Hata detayını görelim
                    let errorMsg = 'İşlem sırasında bir hata oluştu.';
                    try {
                        if (xhr.responseText) {
                            const errResp = JSON.parse(xhr.responseText);
                            if (errResp && errResp.message) {
                                errorMsg = errResp.message;
                            }
                        }
                    } catch(e) {
                        console.error('Yanıt JSON değil:', e);
                    }
                    
                    Swal.fire({
                        icon: 'error',
                        title: 'Sunucu Hatası!',
                        text: errorMsg + ' 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, 01:27:53
    #11
    Melinda adlı üyeden alıntı: mesajı görüntüle
    <?php
    session_start();
    // Hata ayıklama için
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    // 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) {
        header('Content-Type: application/json; charset=utf-8');
        echo json_encode(['success' => false, 'message' => 'Veritabanı bağlantı hatası: ' . $e->getMessage()], JSON_UNESCAPED_UNICODE);
        exit;
    }
    // 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);
    }
     
    // AJAX isteklerini kontrol et
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        header('Content-Type: application/json; charset=utf-8');
        
        // POST verilerini kontrol et
        $post_data = file_get_contents('php://input');
        if (empty($_POST) && $post_data) {
            $_POST = json_decode($post_data, true);
        }
        
        // Kod kayıt işlemi
        if (isset($_POST['kod_kaydet'])) {
            try {
                // Kullanıcı girişi kontrol et
                if (!$girisYapildiMi || !isset($_SESSION['kullanici_id'])) {
                    echo json_encode([
                        'success' => false,
                        'message' => 'Oturum açmanız gerekiyor'
                    ], JSON_UNESCAPED_UNICODE);
                    exit;
                }
                
                $kod = rastgeleKodUret();
                $aciklama = isset($_POST['aciklama']) ? $_POST['aciklama'] : 'Kazandı';
                
                $stmt = $db->prepare("INSERT INTO odul_kodlari (kullanici_id, kod, aciklama) VALUES (:kullanici_id, :kod, :aciklama)");
                $result = $stmt->execute([
                    'kullanici_id' => $_SESSION['kullanici_id'],
                    'kod' => $kod,
                    'aciklama' => $aciklama
                ]);
                
                if ($result) {
                    echo json_encode([
                        'success' => true,
                        'kod' => $kod,
                        'message' => $aciklama
                    ], JSON_UNESCAPED_UNICODE);
                } else {
                    echo json_encode([
                        'success' => false,
                        'message' => 'Kod kaydedilemedi: Veritabanı hatası'
                    ], JSON_UNESCAPED_UNICODE);
                }
            } catch (Exception $e) {
                echo json_encode([
                    'success' => false,
                    'message' => 'Kod kaydedilemedi: ' . $e->getMessage()
                ], JSON_UNESCAPED_UNICODE);
            }
            exit;
        }
        
        // Çark hakkını veritabanından sorgula
        if (isset($_POST['cevir'])) {
            if ($girisYapildiMi) {
                $userId = $_SESSION['kullanici_id'];
                $stmt = $db->prepare("SELECT cark_hakki FROM musteri WHERE id = :id");
                $stmt->bindParam(':id', $userId);
                $stmt->execute();
                $cevirmeHakki = (int)$stmt->fetchColumn();
                
                if ($cevirmeHakki > 0) {
                    $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']);
                }
            } else {
                echo json_encode(['success' => false, 'message' => 'Giriş yapmanız gerekiyor']);
            }
            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) {
            // Hata ayıklama için isteği görüntüleyelim
            console.log("Gönderilecek veriler:", { kod_kaydet: true, aciklama: results.message });
            
            // Kazandıysa kodu kaydet
            $.ajax({
                url: window.location.href, // Tam URL kullan
                method: 'POST',
                data: { kod_kaydet: true, aciklama: results.message },
                dataType: 'json',
                beforeSend: function() {
                    console.log("AJAX isteği gönderiliyor...");
                },
                success: function(data) {
                    console.log("Başarılı yanıt:", 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.error('Durum kodu:', xhr.status);
                    console.log('Ham yanıt:', xhr.responseText);
                    
                    // Hata detayını görelim
                    let errorMsg = 'İşlem sırasında bir hata oluştu.';
                    try {
                        if (xhr.responseText) {
                            const errResp = JSON.parse(xhr.responseText);
                            if (errResp && errResp.message) {
                                errorMsg = errResp.message;
                            }
                        }
                    } catch(e) {
                        console.error('Yanıt JSON değil:', e);
                    }
                    
                    Swal.fire({
                        icon: 'error',
                        title: 'Sunucu Hatası!',
                        text: errorMsg + ' 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>
    bundada çevirme hakkı olsada yok diyip satınal butonu çıkıyor
  • 27-04-2025, 02:22:09
    #12
    logomerkezi adlı üyeden alıntı: mesajı görüntüle
    bundada çevirme hakkı olsada yok diyip satınal butonu çıkıyor
    <?php
    session_start();
    // Hata ayıklama için
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    
    // -------------------------------------------------
    // 1. VERİTABANI BAĞLANTISI
    // -------------------------------------------------
    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) {
        header('Content-Type: application/json; charset=utf-8');
        echo json_encode(['success' => false, 'message' => 'Veritabanı bağlantı hatası: ' . $e->getMessage()], JSON_UNESCAPED_UNICODE);
        exit;
    }
    
    // -------------------------------------------------
    // 2. KULLANICI BİLGİLERİ + ÇARK HAKKI OKUMA
    // -------------------------------------------------
    $girisYapildiMi = isset($_SESSION['kullanici_id']);
    $cevirmeHakki   = 0; // varsayılan
    
    if ($girisYapildiMi) {
        $stmt = $db->prepare("SELECT cark_hakki FROM musteri WHERE id = :id");
        $stmt->execute(['id' => $_SESSION['kullanici_id']]);
        $cevirmeHakki = (int) $stmt->fetchColumn();
    }
    
    // -------------------------------------------------
    // 3. AJAX İSTEKLERİ
    // -------------------------------------------------
    if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        header('Content-Type: application/json; charset=utf-8');
    
        // Ham JSON gelmişse dönüştür
        $raw = file_get_contents('php://input');
        if (empty($_POST) && $raw) {
            $_POST = json_decode($raw, true);
        }
    
        /* ------------------------------------------------
         * 3‑a  KOD KAYIT
         * ------------------------------------------------ */
        if (isset($_POST['kod_kaydet'])) {
            if (!$girisYapildiMi) {
                echo json_encode(['success' => false, 'message' => 'Oturum açmanız gerekiyor'], JSON_UNESCAPED_UNICODE);
                exit;
            }
    
            try {
                $kod       = substr(str_shuffle('ABCDEFGHJKLMNPQRSTUVWXYZ23456789'), 0, 8);
                $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
                ]);
    
                echo json_encode(['success' => true, 'kod' => $kod, 'message' => $aciklama], JSON_UNESCAPED_UNICODE);
            } catch (Exception $e) {
                echo json_encode(['success' => false, 'message' => 'Kod kaydedilemedi: ' . $e->getMessage()], JSON_UNESCAPED_UNICODE);
            }
            exit;
        }
    
        /* ------------------------------------------------
         * 3‑b  ÇEVİRME HAKKI TÜKET
         * ------------------------------------------------ */
        if (isset($_POST['cevir'])) {
            if (!$girisYapildiMi) {
                echo json_encode(['success' => false, 'message' => 'Giriş yapmanız gerekiyor']);
                exit;
            }
    
            if ($cevirmeHakki > 0) {
                // Hakkı 1 azalt
                $stmt = $db->prepare("UPDATE musteri SET cark_hakki = cark_hakki - 1 WHERE id = :id");
                $stmt->execute(['id' => $_SESSION['kullanici_id']]);
                $cevirmeHakki--; // PHP tarafında da azalt
                echo json_encode(['success' => true, 'kalan_hak' => $cevirmeHakki]);
            } else {
                echo json_encode(['success' => false, 'message' => 'Çark hakkınız yok']);
            }
            exit;
        }
    }
    ?>
    
    <!-- --------------------------------------------------
     4. MODAL + ÖN YÜZ (yalnızca oturum açanlar görür)        
    -------------------------------------------------- -->
    <?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="35" height="35"><path fill-rule="evenodd" fill="#f49933" d="M32.975 23.311l-5.787-5.788 5.787-5.787a8 8 0 10-11.314-11.314L17.523 7.858 11.736 2.07A8 8 0 002.07 13.384l5.787 5.787-5.787 5.788a8 8 0 1011.314 11.313l5.787-5.787 5.788 5.787a8 8 0 0011.313-11.313z"/></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 endif; ?>
    
    <!-- --------------------------------------------------
     5. SCRIPT DOSYALARI
    -------------------------------------------------- -->
    <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(function ($) {
        // Hak bilgisini PHP'den al – let olarak
        let cevirmeHakki = parseInt(<?= $cevirmeHakki ?>, 10);
    
        /* ------------------------------------------------
           ŞANS OLUŞTURMA FONKSİYONU
        ------------------------------------------------ */
        function olasilikliDonus() {
            const olasiliklar = [
                { value: 1, oran: 90 },
                { value: 0, oran: 10 }
            ];
            let r = Math.random() * 100, toplam = 0;
            for (const o of olasiliklar) {
                toplam += o.oran;
                if (r <= toplam) return o.value;
            }
            return 0;
        }
    
        /* ------------------------------------------------
           SUPERWHEEL KURULUMU
        ------------------------------------------------ */
        $('.wheel-letter-spacing').superWheel({
            slices: [
                { text: 'ÖDÜL1', value: 1, message: 'Ödül1', discount: 'kod1', background: '#f1c40f', color: '#fff' },
                { text: 'ŞANS YOK', value: 0, message: 'Bugün Şansın Yok', discount: '********', background: '#e74c3c', color: '#fff' },
                { text: 'ÖDÜL2', value: 1, message: 'Ödül2', discount: 'kod2', background: '#2980b9', color: '#fff' },
                { text: 'KAYBETTİN', value: 0, message: 'Kaybettin :(', discount: '********', background: '#333', color: '#fff' },
                { text: 'ÖDÜL3', value: 1, message: 'Ödül3', discount: 'kod3', 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');
    
        /* ------------------------------------------------
           ÇEVİR BUTONU
        ------------------------------------------------ */
        $(document).on('click', '.wheel-letter-spacing-spin-button', function () {
            if (cevirmeHakki > 0) {
                $('.wheel-letter-spacing').superWheel('start', 'value', olasilikliDonus());
                $(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'
                });
                $(this).hide();
                $('#satinAlBtn').show();
            }
        });
    
        $('.wheel-letter-spacing').superWheel('onStart', function () {
            $('.wheel-letter-spacing-spin-button').text('Çeviriliyor...');
        });
    
        $('.wheel-letter-spacing').superWheel('onStep', function () {
            tick.currentTime = 0; tick.play();
        });
    
        /* ------------------------------------------------
           DÖNÜŞ TAMAMLANINCA
        ------------------------------------------------ */
        $('.wheel-letter-spacing').superWheel('onComplete', function (results) {
            if (results.value === 1) {
                // Kazanırsa kod kaydet
                $.post(window.location.href, { kod_kaydet: true, aciklama: results.message }, 'json')
                    .done(function (d) {
                        Swal.fire({ icon: 'success', title: 'Tebrikler!', html: '<b>Kodunuz: ' + d.kod + '</b><br>' + d.message });
                    })
                    .fail(function (xhr) {
                        let msg = 'Bir hata oluştu';
                        try { msg = JSON.parse(xhr.responseText).message; } catch (_) {}
                        Swal.fire({ icon: 'error', title: 'Hata!', text: msg });
                    });
            } else {
                Swal.fire({ icon: 'error', title: 'Üzgünüz!', text: results.message });
            }
    
            // Hakkı azalt ve arayüzü güncelle
            cevirmeHakki--;
            if (cevirmeHakki > 0) {
                $('.wheel-letter-spacing-spin-button').prop('disabled', false).text('Çevir');
                $('#satinAlBtn').hide();
            } else {
                $('.wheel-letter-spacing-spin-button').hide();
                $('#satinAlBtn').show();
            }
        });
    
        /* ------------------------------------------------
           ÇARKI AÇAN DIŞ BUTON (ör. cevirBtn)
        ------------------------------------------------ */
        const cevirBtn = document.getElementById('cevirBtn');
        if (cevirBtn) {
            cevirBtn.addEventListener('click', function (e) {
                if (!<?= json_encode($girisYapildiMi) ?>) {
                    Swal.fire({ title: 'ÇEVİRME YOK!', text: 'Çark şansınız için giriş yapınız.', icon: 'warning' });
                    e.preventDefault();
                    return;
                }
    
                if (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: 'Tamam',
                        cancelButtonText: 'Satın Al'
                    }).then(r => { if (r.dismiss === Swal.DismissReason.cancel) location.href = '?sayfa=satinalma_sayfasi';});
                    return;
                }
    
                // Sunucuya hak düşür isteği gönder ve modalı aç
                $.post('', { cevir: true }, 'json')
                    .done(function (d) {
                        if (d.success) {
                            cevirmeHakki = d.kalan_hak; // güncelle
                            $('#denemeSinavBasvuru').modal('show');
                        } else {
                            Swal.fire({ title: 'Çark Hakkı Yok', text: d.message, icon: 'info' });
                        }
                    })
                    .fail(() => Swal.fire({ title: 'Hata', text: 'Bir şeyler yanlış gitti!', icon: 'error' }));
            });
        }
    });
    </script>
    Bunu dener misin?
  • 27-04-2025, 02:44:12
    #13
    WhatsApp yolu ile ulaşın AnyDesk üzerinden hızlı bir şekilde çözüme kavuşturalım.