Avatar billede googolplex Novice
27. september 2003 - 11:12 Der er 12 kommentarer og
1 løsning

Register globals - funktion

Det har længe irriteret mig, at alle webhoteller jeg har undersøgt kører med register_globals 'on' (ellers virker folks scripts jo ikke som de siger...). Nu har jeg fundet følgende funktion, der i teorien gør det samme.

Men er den holdbar ?

function unregister_globals()
{
    $COOKIE = $_COOKIE;
    $ENV = $_ENV;
    $FILES = $_FILES;
    $GET = $_GET;
    $POST = $_POST;
    $REQUEST = $_REQUEST;
    $SERVER = $_SERVER;
   
    if (isset($_SESSION))
    {
        $SESSION = $_SESSION;
    }
   
    foreach ($GLOBALS as $key => $value)
    {
        if ($key != 'GLOBALS')
        {
            unset($GLOBALS[$key]);
        }
    }

    $_COOKIE = $COOKIE;
    $_ENV = $ENV;
    $_FILES = $FILES;
    $_GET = $GET;
    $_POST = $POST;
    $_REQUEST = $REQUEST;
    $_SERVER = $SERVER;
   
    if (isset($SESSION))
    {
        $_SESSION = $SESSION;
    }
}
Avatar billede erikjacobsen Ekspert
27. september 2003 - 11:22 #1
Behøver du lave de arraykopieringer? Umiddelbart ville jeg tro

unset($$key);

var nok - MEN: ikke inde i en funktion
Avatar billede erikjacobsen Ekspert
27. september 2003 - 11:22 #2
(+ selvfølgelig din foreach-løkke)
Avatar billede googolplex Novice
27. september 2003 - 11:25 #3
Jeg vel helst have det i en funktion (eller klasse), fordi det er nemmere at arbejde med :)

Men den burde virke efter hensigten uden nogen smuthuller ?
Avatar billede erikjacobsen Ekspert
27. september 2003 - 11:30 #4
Ja, ok, så bruger du bare $GLOBALS. Det er ok ;)

Men så vidt jeg kan se behøver du ikke kopiere de arrays. Kan du ikke
springe navne over, der begynder med _ (for at få _GET med).
Avatar billede erikjacobsen Ekspert
27. september 2003 - 11:33 #5
Eller sådan her (skitse, utestet):

function unregister_globals()
{
  $a['GLOBALS']=1;
  $a['_GET']=1;
  ////....osv

 
    foreach ($GLOBALS as $key => $value)
    {
        if (!isset($a[$key]))
        {
            unset($GLOBALS[$key]);
        }
    }

}
Avatar billede googolplex Novice
27. september 2003 - 23:50 #6
Svar?
Avatar billede erikjacobsen Ekspert
27. september 2003 - 23:52 #7
Så syn's jeg da lige du skal sige om det ku' bruges - og hvad *g*
Avatar billede googolplex Novice
28. september 2003 - 00:03 #8
Ja, så vidt jeg kan se, virker din ligeså godt - har dog ikke testet den :P

Jeg var mest interesseret i at vide om funktionen virkede efter hensigten og/eller om noget skulle rettes :)
Avatar billede erikjacobsen Ekspert
28. september 2003 - 00:07 #9
Test den - så kan du vende tilbage. Rækker din tålmodighed ikke så langt
er du velkommen til at lukke spørgsmålet *g* Point er rimeligt ligegyldige!
Avatar billede googolplex Novice
28. september 2003 - 00:12 #10
Jeg har skam testet den, den virker fint, ville bare høre om der var nogen kloge hoveder, der kunne se nogen åbenlyse fejl/mangler.
Avatar billede erikjacobsen Ekspert
28. september 2003 - 00:15 #11
"har dog ikke testet den"  /  "Jeg har skam testet den"

...jeg forstår ingenting. Jeg hopper ud af spørgsmålet. Do as you please.
Avatar billede googolplex Novice
28. september 2003 - 00:21 #12
Jeg har testen den funktion jeg selv leverede i toppen, men jeg har ikke testet den udgave du gav.
Avatar billede googolplex Novice
28. september 2003 - 00:41 #13
Nå, du er åbenbart hoppet videre, så tror jeg bare jeg lukker...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester