Bulduğum bazı garip davranışlar - ilgimi çeker - bu konuda herhangi bir ışık tutabilir mi ..?
boşaltmak için $_SESSION
dizide sonuçlanan bir hatanın nedenini bulmak bu sabah biraz zaman geçirdi
Bakış. Sonunda bunun altına aldık ve $_SESSION
değişkenlerden biri için bir dizin tanımlarken, bir &
yerine .
ait concatination için kullanılan edildiğini gördük. Yalnızca iki özel dizenin &
ed olduğu zaman bozuldu, diğer dizeler anlamsız anahtarlarla sonuçlandı, ancak $_SESSION
boş bırakılmadı.
Bu, PHP5.5.9-1ubuntu4.20 ve yerel olarak PHP5.6.15 üzerinde çalışıyor.
Kendiniz deneyin! Aşağıdaki örnek kodu kullanarak
,
- Run set session.php
- Run check-session.php - tüm iyi
- Run kırılma session.php - tekrar hala iyi şimdiye kadar ...
- Run check-session.php-
$_SESSION
şimdi boş!
örnek kod
ayar session.php
session_start();
$_SESSION = [
'colour' => 'blue',
'shape' => 'round',
'size' => 'medium'
];
ara session.php
session_start();
echo '<pre>';
print_r($_SESSION);
kırılma session.php
session_start();
$killer_string = 'Admin_CH_1_' & '101_';
$_SESSION[$killer_string] = null;
echo '<pre>';
print_r($_SESSION);
Benim tahminim tahmin ediyorum
o $_SESSION
depolamak çalıştığında sinirlenmeye PHP neden bu durumda $killer_string
bir dizesinde bitsel işlem sonuçları, sonucu, sunucudaki dizi. $killer_string
, $_SESSION
içinde bir alt dizi için bir anahtar olarak kullanıldığında artık bir katil değildir.
Fikirler?
PHP ile hiçbir arıza yok yani kod aslında mantıklı değil biliyoruz. Ancak, sahnelerin ardında neler olup bittiğini merak ediyorum ve buna neyin sebep olduğu konusunda endişelerim var ...
Şerefe!
Var_dump ($ killer_string); '? Vermeler '☺! Ben – AbraCadaver
Hangi PHP sürümünü kullanıyorsunuz? Ben sadece 5.6.25 ile test ettim ve $ killer_string, @AbraCadaver –
'a benzer bir dizgiye sahip bir dizi anahtar olarak ayarlandı Ben de php-7 – arkascha