PHP - foreach session değerini etkiler

1 Cevap php

Nasıl döngü oturum değişkeni etkileyebilir foreach olabilir?

session_start();
$_SESSION[test] = "Session content";
echo $_SESSION[test].'<br />';

$test_array = array("test", "array", "something", "array end");

foreach($test_array as $test){
    echo $test.'<br />';
}

echo '<br />Session content after foreach: '.$_SESSION[test].'<br />';

Ben bazı web Hostings bu kodu çalıştırdığınızda, çıkış Tamam.

Session content
test
array
something
array end

Session content after foreach: Session content

Ama sadece ilk yürütme (oturum oluşturulduğunda) değiştirilmiştir. Bu kodu ikinci defa (seans zaten oluşturulur) çalıştırdığınızda çıkış bu gibi görünüyor:

Session content 
test 
array 
something
array end

Session content after foreach: array end

Ben nasıl değişken $ test $ _SESSION [test] etkileyebilir bilmiyorum.

1 Cevap

Ben küresellerle kayıt kullanıyorsanız bahis ediyorum ve size adlı bir oturum değişkeni varsa çalıştırdığınızda test o $test adında bir global değişken olacağı anlamına geliyor {[(2) }]. Sizin döngü sonra oturum değişkeni global bir referans olan, $test değerini değiştirir.

Using Register Globals ve register_globals directive bakın.

Temelde bu kayıt küresellerle kullanmak neden iyi bir derstir. Bu durumda adı çatışma muhtemelen zararsız ama potansiyel, büyük sorunlarını bile açıklarını bu şekilde saldırılara oluşturabilirsiniz.