PHP: "tanımsız sabit COOKIE_LOGIN kullanımını alıyorum"

2 Cevap php

Ben COOKIE en etkileyen ve şimdi ben şu olsun kod herhangi bir değişiklik yapılmış değil:

Tanımsız sabit COOKIE_LOGIN Kullanımı - 'COOKIE_LOGIN' üstlendi

//Destroy Cookie
if (isset($_COOKIE[COOKIE_LOGIN]) && !empty($_COOKIE[COOKIE_LOGIN]))
    setcookie(COOKIE_LOGIN,$objUserSerialized,time() - 86400 );

Ben ile başlayan ve bu yüzden sorunu izleyemez chnaged ne bilmiyorum çünkü ben aslında bunu değiştirmek için ne yapmak gerekir emin değilim.

Teşekkürler.

2 Cevap

Sen tırnak dizi anahtarı çevreleyen gerekir:

if (isset($_COOKIE['COOKIE_LOGIN']) && !empty($_COOKIE['COOKIE_LOGIN']))
    setcookie('COOKIE_LOGIN',$objUserSerialized,time() - 86400 );

PHP dizeleri bilinmeyen değişmezleri dönüştürür ve bir uyarı atar. Php.ini muhtemelen uyarıları görüntülemek değil hata raporlama düzeyi vardı ama birisi ya da bir şey güncellenmiş olabilir. Her iki durumda da, bu durumda PHP'nin davranış advantange almak kötü bir uygulamadır.

Daha fazla bilgi için, check out the php documentation:

Her zaman bir dize sayıllı indis tırnak kullanabilirsiniz. $ Foo [bar] değildir Örneğin, foo ['bar'] $, doğrudur.

Bu yanlıştır, ama çalışıyor. Nedeni, bu kod tanımlanmamış bir sabit (bar) yerine bir dize (- tırnak fark 'bar') sahip olmasıdır. PHP gelecekte ne yazık ki böyle bir kod için, aynı ada sahip, sabit tanımlayabilir. PHP otomatik çıplak dize içeren bir dize içine bir çıplak dize (bilinen herhangi bir sembole karşılık gelmez bir tırnaksız dize) dönüştürür çünkü çalışır. Tanımlanmış bir sabit adında bir bar var Örneğin, daha sonra PHP 'bar' dizgesini yerleştirecek ve bunu kullanacaktır.

Sen $_COOKIE[COOKIE_LOGIN] hata olmadan COOKIE_LOGIN tanımladığınız gerçek bir sabit, örneğin sürece diyemeyiz:

define("COOKIE_LOGIN", 5);

Bazı insanlar gibi kod yazacak alışkanlıkları var:

$ary[example] = 5;
echo $ary[example];

(Dize olarak) bu "örnek" varsayarak dizi anahtarı olacaktır. Hata bildirimini devre dışı bırakırsanız PHP geçmişte, bu davranışı mazur gelmiştir. Yine yanlış. Açıkça COOKIE_LOGIN bir sabit olarak tanımlanmış sürece $_COOKIE["COOKIE_LOGIN"] kullanıyor olmalıdır.