Şimdi Ara

php cookie ile sayaç yapma

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir - 2 Masaüstü
5 sn
5
Cevap
0
Favori
317
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar, cookie kullanarak bir sayaç yaptım ancak çerezleri silip php sayfasını ilk açtığımda hata veriyor daha sonra düzgün bir şekilde çalışıyor.Acaba hata neden kaynaklanıyor ?

     

    <?php

    if(isset($_COOKIE['sayac'])){

    $artan_sayi=$_COOKIE['sayac']+1;
    setcookie("sayac",$artan_sayi,time()+(60*60*24*30));
    echo $_COOKIE['sayac'];

    }else {

    setcookie("sayac",0,time()+(60*60*24*30));
    echo $_COOKIE['sayac'];

    }
    ?>




    Hata mesajı : Notice: Undefined index: sayac in C:\wamp\www\sayac\sayac2.php on line 12

    Yani else içerisindeki echo komutundan dolayı bir hata veriyor ancak neden hata verdiğini anlayamadım
    Teşekkürler,







  •  
    <?php
    if(isset($_COOKIE['sayac'])){
    setcookie("sayac", intval($_COOKIE['sayac'])+1, time()+(86400*30));
    echo $_COOKIE['sayac'];}
    else{
    setcookie("sayac", "1", time()+(86400*30));
    echo "0";}
    ?>
  • oKsyqeN kullanıcısına yanıt
    Teşekkür ederim ancak intval fonksiyonunun bu kodda ne işe yaradığını anlayamadım.
  • aMACHİNE kullanıcısına yanıt
    intval() değişkeni integer'a çeviriyor. Burada %100 gerekli olmayabilir, zaten + yazdığınızda php bu işi yapıyor ve string için hata vermiyor. Fakat her şeyi olması gerektiği gibi yapmakta fayda var (mesela ya önceden hata verebilecek bir değer yüklenmiş sonra da unutulmuş olsa çerez olarak?), arkadaş da o yüzden yazmıştır.

    Aslında sizin hatanız en sondaki bölümde "echo $_COOKIE['sayac'];"
    Tekrar bakınca göreceksiniz:

    quote:

    if(isset($_COOKIE['sayac'])){
    ..
    ..
    }else{
    ..
    echo $_COOKIE['sayac'];
    }


    Tanımsız olan bir indexe refere ediyorsunuz.

    Peki hata neden çerezleri silip ilk kez çalıştırdığınızda meydana geliyor?
    Bu da http protokolü ve $_COOKIE php autoglobalinin çalışma şekliyle ilgili.
    Siz ilk kez setcookie() dediğinizde, php $_COOKIE autoglobalinin içeriğini değiştirmez. Dolayısıyla ilk seferinde bu hala tanımsızdır. Tekrar yüklediğinizde artık çerez tarayıcı tarafından gönderilmiştir ve $_COOKIE['sayac'] tanımlıdır.

    O yüzden "echo "0";" olarak düzeltmiş arkadaşımız.

    Kolay gelsin...




  • voenetto kullanıcısına yanıt
    Hocam çok teşekkür ederim çok açıklayıcı bir yazı olmuş.
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.