PHP: Aşırı-yazma oturum değişkenleri

2 Cevap php

PHP ile ilgili Soru bellek işleme henüz çok PHP deneyimli olmayan birinden:

Ben belirli bir adın bir PHP oturum değişkeni ayarlamak, ve sonra başka bir yerde (aynı seansta) aynı isimde bir oturum değişkeni ayarlarsanız, orijinal değişken üzerine yazılır, ya da abur oturumda birikir ki?

Diğer bir deyişle, ben aynı isimde yeni bir tane oluşturmadan önce bir önceki oturum değişkeni yok edilmelidir?

Teşekkür ederim.

2 Cevap

Eğer her seferinde aynı anahtarı kullanırsanız $ _SESSION tıpkı diğer dizi gibi çalışır, bu yüzden, değeri yazılır.

Tom,

Bu oturum değişkeni nasıl kullandığınıza bağlıdır, ancak genellikle (tam olarak, yeni değeri ile eski değerini değiştirme) bu değişkeni "silme" anlamına gelir.

Bir oturum değişkeni bir dize, bir dizi ya da bir nesneyi saklayabilirsiniz.


<?php
    # file1.php
    session_start();
    $_SESSION['favcolor'] = 'green';
    $_SESSION['favfood'] = array('sushi', 'sashimi');
?>

Bundan sonra, $_SESSION['favcolor'] değişken ve $_SESSION['favfood'] değişken (varsayılan bir dosya olarak) sunucu tarafında saklanır. Aynı kullanıcı başka bir sayfaya ziyaret ederseniz, sayfa dışarı veri almak, ya da aynı depolama yazmak, böylece kullanıcı, sunucu ona / onu "hatırlar" bu bir yanılsama vererek yapabilirsiniz.


<?php
    # file2.php
    session_start();
    echo $_SESSION['favcolor'], '<br />';
    foreach ($_SESSION['favfood'] as $value) {
        echo $value, '<br />';
    }
?>

Tabii ki, istediğiniz şekilde $_SESSION değişkeni değiştirebilir: Eğer unset() herhangi bir değişken, böylece $_SESSION['favfood'][] = 'hamburger'; tarafından örnekte dizi ekler olabilir ve . Tüm oturum dosyasında saklanabilir (varsayılan olarak bir dosya, ancak bir veritabanı olabilir). Ama sitenize her sayfasının başında only after a call to session_start() . That means in general, if you use sessions, you have to call session_start() $_SESSION değişken sihirli hareket ettiğini dikkat edin. Aksi takdirde, $_SESSION sadece normal bir değişkendir ve sihirli :-) olur.

Daha fazla bilgi için PHP reference here bakın.