• 29-05-2024, 15:22:52
    #1
    merhaba oyun sitemiz var bu sitede günlük ödül verilen bir sistem var.

    <?php
    session_start();
    if (!class_exists('Yetki')) {
    die("YETKISIZ ERISIM ISTEGI ENGELLENDI");
    }
    ?>
    <!DOCTYPE html>
    <html lang="tr">
    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <!-- Fancybox CSS ve jQuery -->
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.css" />
    <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.0/dist/jquery.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/@fancyapps/ui/dist/fancybox.umd.js"></script>
    </head>
    <body>
    <div style="display: none;" id="reward-popup">
    <div class="reward-content">
    <h2>Günlük Ödülünüz!</h2>
    <p>Eğer şanslıysanız Elit İtem kazanabilirsiniz!</p>
    <div class="rewards">
    <div class="reward-slot"></div>
    <div class="reward-slot1"></div>
    </div>
    <button onclick="kazan()"><h1>KAZAN!</h1></button>
    </div>
    </div>
    
    <div class="calendar-container">
    <h1 style="color: white;">Günlük Ödüller</h1>
    <div class="login-calendar" id="calendar">
    </div>
    <button class="collect-button" id="reward-button">Bugünün Ödülünü Al</button>
    </div>
    
    <script>
    function collectReward() {
    Fancybox.show([{ src: '#reward-popup', type: 'inline' }]);
    }
    function kazan() {
    $.ajax({
    type: "POST",
    url: "kazan.php",
    success: function(response) {
    alert(response); // Kullanıcıya geri dönüşü bildir
    Fancybox.close(); // Popup'ı kapat
    },
    error: function(xhr, status, error) {
    alert("Bir hata oluştu, lütfen tekrar deneyin.");
    }
    });
    }
    function setDayStates() {
    const currentDate = new Date();
    const currentDay = currentDate.getDate();
    const currentMonth = currentDate.getMonth();
    const currentYear = currentDate.getFullYear();
    const daysInMonth = new Date(currentYear, currentMonth + 1, 0).getDate();
    const dayNames = ['Pazar', 'Pazartesi', 'Salı', 'Çarşamba', 'Perşembe', 'Cuma', 'Cumartesi'];
    const monthNames = ['Ocak', 'Şubat', 'Mart', 'Nisan', 'Mayıs', 'Haziran', 'Temmuz', 'Ağustos', 'Eylül', 'Ekim', 'Kasım', 'Aralık'];
    const calendar = document.getElementById('calendar');
    for (let i = currentDay - 1; i <= currentDay + 1; i++) {
    const dayElement = document.createElement('div');
    dayElement.classList.add('day');
    dayElement.id = `day${i}`;
    let imagePath = "/web/ss/Tasarim/img/reward/sandik.png";
    const dayIndex = i < 1 ? daysInMonth + i : (i > daysInMonth ? i - daysInMonth : i); // Tarih döngüsü
    const dayDate = new Date(currentYear, currentMonth, dayIndex);
    const dayName = dayNames[dayDate.getDay()];
    const monthName = monthNames[dayDate.getMonth()];
    dayElement.innerHTML = `<div class="day-number">${dayIndex} ${monthName} ${dayName}</div><a href="${imagePath}" data-fancybox data-caption="Reward ${dayIndex}"><img src="${imagePath}" alt="Reward ${dayIndex}"></a>`;
    if (i === currentDay) {
    dayElement.classList.add('active');
    } else if (i > currentDay) {
    dayElement.classList.add('future');
    }
    calendar.appendChild(dayElement);
    }
    }
    document.addEventListener('DOMContentLoaded', function() {
    setDayStates();
    document.getElementById('reward-button').addEventListener('click', function() {
    collectReward();
    });
    document.querySelectorAll('.day img').forEach(function(img) {
    img.addEventListener('click', function(event) {
    event.preventDefault();
    });
    });
    });
    </script>
    </body>
    </html>
    Bugünün ödülü al denildiği zaman rastgele item seç olayı var.
    bu sayfa rasgeleitemsec.php
    function rastgeleItemSec($elitMi, $limit) {
    $elitKosulu = $elitMi ? "1" : "0";
    $query = mysql_query("SELECT itemadi, adet, itemvnum, resim FROM ishop.gunlukhediye WHERE elit = $elitKosulu ORDER BY RAND() LIMIT $limit");
    $itemler = [];
    while ($row = mysql_fetch_assoc($query)) {
    $itemler[] = $row;
    }
    return $itemler;
    }
    
    $bugununTarihi = date('Y-m-d');
    $kontrolSorgu = mysql_query("SELECT * FROM ishop.gunlukhediye_alanlar WHERE kullaniciadi = '$kullaniciAdi' AND alinan_tarih = '$bugununTarihi'");
    $hediyeAlmisMi = mysql_num_rows($kontrolSorgu);
    if ($hediyeAlmisMi) {
    echo "Bugün zaten hediye almışsınız.";
    } else {
    // Şans belirle
    $rasgeleSayi = mt_rand(1, 100);
    
    if ($rasgeleSayi <= 80) {
    $normalItemler = rastgeleItemSec(false, 2);
    $verilecekItemler = $normalItemler;
    } else {
    // Bir elit, bir normal item ver
    $elitItemler = rastgeleItemSec(true, 1);
    $normalItemler = rastgeleItemSec(false, 1);
    $verilecekItemler = array_merge($elitItemler, $normalItemler);
    }
    
    
    echo json_encode($verilecekItemler);
    }
    ?>
    o kadar kurcaladım ki çalıştıramadım bir türlü yardımcı olabilecek biri var mı acaba. birde kazan tuşuna basınca oyuncuya aktaran kazan.php dosyası var.
    <?php
    session_start();
    
    
    function oyuncuyaItemEkle($kullaniciAdi, $itemAdi, $adet, $itemVnum) {
    
    mysql_query("INSERT INTO oyun_envanteri (kullaniciadi, itemvnum, adet) VALUES ('$kullaniciAdi', '$itemVnum', '$adet')");
    }
    
    $kullaniciAdi = $_SESSION['username'];
    
    
    $verilecekItemler = json_decode(file_get_contents('rasgele_item_sec.php'), true);
    
    
    foreach ($verilecekItemler as $item) {
    $itemAdi = $item['itemadi'];
    $adet = $item['adet'];
    $itemVnum = $item['itemvnum'];
    
    
    oyuncuyaItemEkle($kullaniciAdi, $itemAdi, $adet, $itemVnum);
    }
    
    
    $alinanHediyeler = json_encode($verilecekItemler);
    mysql_query("INSERT INTO ishop.gunlukhediye_alanlar (kullaniciadi, alinan_tarih, alinan_hediyeler) VALUES ('$kullaniciAdi', NOW(), '$alinanHediyeler')");
    
    echo "Hediyeniz başarıyla verildi.";
    ?>
    çok karıştı farkındayımm fakat çıkamadım bende işin içinden fonksiyonların isimleri filan değişti artık çok yoruldum bu sistem basit ama hata veriyor sürekli.
  • 29-05-2024, 15:33:09
    #2
    Hmmm bu hatayı vermemesi lazım...
  • 01-06-2024, 13:17:55
    #3
    AzveNET adlı üyeden alıntı: mesajı görüntüle
    Hmmm bu hatayı vermemesi lazım...
    arkadaşın da söylediği gibi hatayı söylemelisin. Yorulduğun kısmı bu işi çözemez.
  • 01-06-2024, 14:24:03
    #4
    ChatGPT
    ilk kodunuzda hata yok.


    Bu kod bloğunda birkaç hata ve güncellenmesi gereken birkaç nokta var. İşte düzeltme ve güncelleme önerilerim:
    1. MySQL Bağlantısı ve Güvenlik Uyarısı: Kodunuzda direkt MySQL fonksiyonlarını kullanıyorsunuz, ancak modern PHP uygulamalarında PDO veya MySQLi gibi güncel ve güvenli bir bağlantı yöntemi kullanmak daha iyi olur. Ayrıca, bu kod SQL enjeksiyonlarına açık, bu nedenle kullanıcı girdilerini güvenli hale getirmek önemlidir.
    2. MySQL Fonksiyonları: mysql_query ve mysql_fetch_assoc fonksiyonları artık PHP'de önerilmeyen ve kullanımdan kaldırılan fonksiyonlardır. Bunların yerine PDO veya MySQLi kullanmalısınız.
    3. Doğru Fonksiyon Adları: Fonksiyon adları yanlış yazılmış. rastgeleItemSecfonksiyonu çağrılırken rastgeleItemSec olarak yazılmış. Bu, fonksiyonun bulunamamasına neden olacaktır.
    4. Kod Karmaşıklığı: Kodunuz oldukça karmaşık ve bakımı zor olabilir. Bir işi yapmak için birçok yerde aynı kod parçacıklarını tekrar etmek yerine, bu parçacıkları fonksiyonlara veya yöntemlere dönüştürmek daha iyi olabilir.
    İşte düzeltilmiş ve güncellenmiş bir versiyon:

    <?php
    
    function rastgeleItemSec($elitMi, $limit) {
        $elitKosulu = $elitMi ? "1" : "0";
        // MySQL bağlantısı sağlanmalıdır.
        $query = "SELECT itemadi, adet, itemvnum, resim FROM ishop.gunlukhediye WHERE elit = $elitKosulu ORDER BY RAND() LIMIT $limit";
        // MySQL sorgusunu çalıştırma
        // $query_result = mysqli_query($connection, $query); // MySQLi kullanarak
        // $query_result = $pdo->query($query); // PDO kullanarak
        $itemler = [];
        // Sonuçları işleme
        // while ($row = mysqli_fetch_assoc($query_result)) { // MySQLi kullanarak
        // while ($row = $query_result->fetch(PDO::FETCH_ASSOC)) { // PDO kullanarak
        //     $itemler[] = $row;
        // }
        return $itemler;
    }
    
    $bugununTarihi = date('Y-m-d');
    // MySQL bağlantısı sağlanmalıdır.
    $kontrolSorgu = "SELECT * FROM ishop.gunlukhediye_alanlar WHERE kullaniciadi = '$kullaniciAdi' AND alinan_tarih = '$bugununTarihi'";
    // MySQL sorgusunu çalıştırma
    // $query_result = mysqli_query($connection, $kontrolSorgu); // MySQLi kullanarak
    // $query_result = $pdo->query($kontrolSorgu); // PDO kullanarak
    $hediyeAlmisMi = 0; // mysqli_num_rows($query_result); // MySQLi kullanarak
    if ($hediyeAlmisMi) {
        echo "Bugün zaten hediye almışsınız.";
    } else {
        // Şans belirle
        $rasgeleSayi = mt_rand(1, 100);
        if ($rasgeleSayi <= 80) {
            $normalItemler = rastgeleItemSec(false, 2);
            $verilecekItemler = $normalItemler;
        } else {
            // Bir elit, bir normal item ver
            $elitItemler = rastgeleItemSec(true, 1);
            $normalItemler = rastgeleItemSec(false, 1);
            $verilecekItemler = array_merge($elitItemler, $normalItemler);
        }
        echo json_encode($verilecekItemler);
    }
    ?>
    1. MySQL Bağlantısı ve Güvenlik Uyarısı: Kodunuzda doğrudan MySQL fonksiyonlarını kullanıyorsunuz. Bunun yerine PDO veya MySQLi gibi güncel ve güvenli bir bağlantı yöntemi kullanmak daha iyidir. Ayrıca, bu kod SQL enjeksiyonlarına açık olduğu için kullanıcı girişlerini güvenli hale getirmek önemlidir.
    2. MySQL Fonksiyonları: mysql_query, mysql_fetch_assoc gibi fonksiyonlar artık PHP'de önerilmeyen ve kullanımdan kaldırılan fonksiyonlardır. Bunların yerine PDO veya MySQLi kullanmalısınız.
    3. Session Kontrolü: $kullaniciAdi = $_SESSION['username']; satırında session_start(); fonksiyonunun çağrılmamış olması dikkat çekiyor. session_start(); fonksiyonu oturumları başlatmak için gereklidir. Bu nedenle, kodun başında session_start(); eklemelisiniz.
    4. JSON Verisi ve Kod Akışı: Kodunuzda file_get_contents ile rasgele_item_sec.php dosyasından veri alıp sonra JSON olarak decode ediyorsunuz. Bu dosyanın gerçekten istediğiniz veriyi döndürdüğünden ve güvenli olduğundan emin olmalısınız.
    5. MySQL INSERT Komutu: MySQL INSERT komutunu kullanırken, değerlerin doğru bir şekilde işlenmesi önemlidir. Örneğin, tarih alanı için NOW() fonksiyonunu kullanarak dinamik bir tarih ekleyebilirsiniz.
    İşte düzeltilmiş ve güncellenmiş bir versiyon:

    <?php
    session_start(); // Oturumu başlat
    
    function oyuncuyaItemEkle($kullaniciAdi, $itemAdi, $adet, $itemVnum) {
        // MySQL bağlantısı sağlanmalıdır.
        mysql_query("INSERT INTO oyun_envanteri (kullaniciadi, itemvnum, adet) VALUES ('$kullaniciAdi', '$itemVnum', '$adet')");
    }
    
    $kullaniciAdi = $_SESSION['username'];
    
    // JSON verilerini alma
    $verilecekItemler = json_decode(file_get_contents('rasgele_item_sec.php'), true);
    
    // Verilen her öğe için işlem yapma
    foreach ($verilecekItemler as $item) {
        $itemAdi = $item['itemadi'];
        $adet = $item['adet'];
        $itemVnum = $item['itemvnum'];
    
        // Öğeyi oyuncuya ekleme işlemi
        oyuncuyaItemEkle($kullaniciAdi, $itemAdi, $adet, $itemVnum);
    }
    
    // Alınan hediyeleri JSON formatında saklama
    $alinanHediyeler = json_encode($verilecekItemler);
    
    // MySQL INSERT sorgusu
    mysql_query("INSERT INTO ishop.gunlukhediye_alanlar (kullaniciadi, alinan_tarih, alinan_hediyeler) VALUES ('$kullaniciAdi', NOW(), '$alinanHediyeler')");
    
    echo "Hediyeniz başarıyla verildi.";
    ?>
  • 01-06-2024, 17:40:35
    #5
    Merhaba çözemediyseniz https://wa.me/905541913810