PHP Session Değişken kısayolları?

2 Cevap php

Yani $_SESSION değişkenleri kullanan bir PHP sitede bazı bakım yapıyorum. Ben bazı çok çok garip davranışları görmeye başladı ve hata ayıklama saat sonra ben sadece bu anladım. Örnek olarak, ben böyle bir oturum değişkeni kurulum var diyelim:

$_SESSION['user']['id'] = 123;
$_SESSION['user']['firstname'] = 'John';
$_SESSION['user']['lastname'] = 'Doe';

Bir komut bir noktada, bir MySQL tablo bir çağrı bazı Zend sınıfları kullanılarak yapılır:

$sql = "SELECT whatever FROM table";
$user = $db->fetchRow($sql);

Bu veritabanı çağrısı yapıldıktan sonra garabeti benim $_SESSION['user'] dizi değeri ani veritabanı arama alınır nesne olarak değişti hepsi bu, başlar ... Şimdi burada olduğunu ...

Temelde: $_SESSION['user'] şimdi $user değişken saklanan gerekiyordu fetchRow DB yöntemi kullanılarak alındığı nesne olarak aynıdır. Ben daha önce hiç görmemiştim.

Değişken adı $user $_SESSION['user'] dizisi anahtar adı, bir kısayol ya da bir şey gibi onun oyunculuk aynıdır çünkü anlamaya tek şey.

Bu daha önce hiç duymamıştım garip PHP Session kısayolları çeşit mi?

Bir yan not olarak, ben $_SESSION doğrudan vars erişen en iyi uygulama olmadığını biliyoruz. Ben bu siteyi inşa etmedi. Benim işim sadece bazı şeyler düzeltmek ve bazı özellikleri eklemektir.

UPDATE: Tabii, register_globals açık. Hızlı yardım çocuklar için teşekkür ederiz. Hiç merak Böyle garip davranışları görüyordum.

2 Cevap

Eğer register_globals PHP.ini Açık ayarında var gibi geliyor. Kapatarak bu düzeltmek gerekir.

Eğer alternatif bir çözüm tartışıldı php.ini değiştirmek için erişim yoksa here

register globals açık olup olmadığını kontrol edin. $_SESSION güvenli oturum verilere erişmek için tek yoldur Erişme.

Küresellerle Ol yerel değişkenlere global değişkenler döndü eski bir özelliktir. Bununla sorunu veri geliyordu güvenle nerede biliyor olamazdı. Bir oturumda beklenen şey bir olsun, yazılan ya da bir tanımlama değişkeni ile ayarlanmış olabilir. Bu yüzden güvenlik atlamak için çok kolay oldu.