Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: O co chodzi?
Forum PHP.pl > Forum > PHP
e11
Coś co z register_global = On u mnie działa (php 4.1.2 Windows, php 4.0.6 Linux)

Kod
function licz()

{

    global $a;

    $a++;

}



    

session_start();

session_register("a");



$x=$_SESSION;

licz();



print_r($x);

Z register_global = Off i w postaci jak niżej nie chce działać
Kod
function licz()

{

    global $_SESSION;

    $_SESSION["a"]++;

}



    

session_start();

session_register("a");



$x=$_SESSION;

licz();



print_r($x);

$a ma się zwiększać za każdym razem i to znaczy działać.

Dodatkowo zauważyłem, że przy register_global = On (i Off też), nie mogę zmienić wartości zmiennej sesji w taki sposób:

$_SESSION["a"]='costam';
ani
$HTTP_SESSION_VARS["a"]='costam';
a nawet nie tyle nie mogę zmienić, co nie mogę zainicjować, jeśli wpiszę
$a='';
$HTTP_SESSION_VARS["a"]='costam';
to zmienna sesji, będzie miała wartość 'costam' (to przy register_global=On)

O co chodzi?
KaMeLeOn
1. Kiedy register_globals = Off to zmiennych sesyjnych nie rejstruje się przez session_register().
2. Proponuję zapoznać się z manualem, tam jest wszystko opisane.
itsme
[quote]1. Kiedy register_globals = Off to zmiennych sesyjnych nie rejstruje się przez session_register().
2. Proponuję zapoznać się z manualem
hmm Do Ciebie KaMeLeOn: jak nie wiesz to sie nie wypowiadaj, jak wiesz a nie chce Cie sie pomoc to tez sie nie wypowiadaj .. zasmiecasz forum zbednymi wypowiedzialmi zas do manuala to kazdy user potrafi odeslac

My tu mamy pomagac .... jak nie wiesz co to jest proponuje zapoznać se a encyklepedią, tam jest wszystko opisane.

Pozdrawiam
KaMeLeOn
Cytat
hmm Do Ciebie KaMeLeOn: jak nie wiesz to sie nie wypowiadaj, jak wiesz a nie chce Cie sie pomoc to tez sie nie wypowiadaj .. zasmiecasz forum zbednymi wypowiedzialmi zas do manuala to kazdy user potrafi odeslac  

My tu mamy pomagac .... jak nie wiesz co to jest proponuje zapoznać se a encyklepedią, tam jest wszystko opisane.

Pozdrawiam


Bardzo śmieszne laugh.gif
dragossani
Sczerze mówiąc ja bym wyłączył w cholerę register_globals, a kod napisał tak:
Kod
function licz()

{

    if (session_is_registered('a'))

    { $_SESSION['a']++; }

    else

    { $_SESSION['a']=0; };

}



session_start();

licz();

print_r($_SESSION);
talee
Cytat
Kod
function licz()

{

    global $_SESSION;

    $_SESSION["a"]++;

}


Kod
global $_SESSION;


Tablica $_SESSION ma status superglobal, więcej w manualu.

Jeżeli chodzi o twój problem to odpowiedź jest prosta. Musisz założyć, że register_globals jest off. I odwoływać się do zmiennych sesyjnych przez $_SESSION, a nie korzystać z session_register(), itp.
e11
Dzięki wszystkim, zwłaszcza tym co nie odsyłają do manuala, ale program dragossoniego u mnie nie działa jako licznik odświe (tu zajrzałem do słownika :wink: ) odświeżeń, ani przy off (kiedy powinien) ani przy on (kiedy nie powinien) - to po pierwsze.

Po drugie z tego co słyszę to nie takie całkiem banalne napisać program działający z sesjami, który działa niezależnie od ustawienia register_globals, a na tym mi tak naprawdę zależy.

Po trzecie to miałem nadzieję, że chodzi po prostu o wersję php, albo o jakieś inne niż register_globals ustawienie w pliku php.ini
Officerrr
[snip]php 4.0.6 Linux[/snip]

a czy przypadkiem globale nie sa od php 4.1.0?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.