Avatar billede dennism Nybegynder
03. februar 2004 - 15:25 Der er 8 kommentarer og
3 løsninger

PHP: register_globals

Jeg er ejer af et b-one webhotel. Deres servere kører med "register_globals", og derfor laver det rod i mine koder, når jeg er vant til at køre med "register_globals" slået fra.

Jeg oprettede dette spm.:
http://www.eksperten.dk/spm/457677

Der fik jeg udleveret en kode, som burde kunne løse mit problem.
Men det gør koden desværre ikke. Koden er:

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

Når jeg kører funktionen på en side som har sessions registreret, eller når jeg forsøger at fjerne sessions, så går siden ned.

Hvad er der galt med koden? Hvordan får jeg løst mit problem?
Avatar billede voirsous Nybegynder
03. februar 2004 - 15:31 #1
ville det ikke være nememre at omskrive din egen kode?
Avatar billede avminarm Juniormester
03. februar 2004 - 15:31 #2
jeg ved godt det ikke virker særlig brugbart, men hvad ned at skifte hotel?

alternativ kan du prøve med INI_SET noget i den her stil:

ini_set('register_globals' ,'0') //jeg mener 0 sætter til OFF ellers prøv med 1
Avatar billede dennism Nybegynder
03. februar 2004 - 15:34 #3
avminarm >>

Skal den indsættet øverst i koden?
Avatar billede detox Nybegynder
03. februar 2004 - 15:36 #4
Det dur ikke med ini_set(), men hvis du har mulighed for det, kan du prøve i en .htaccess fil med denne linie:

php_flag register_globals off
Avatar billede detox Nybegynder
03. februar 2004 - 15:37 #5
Som det fremgår af manualen her:

Please note that register_globals  cannot be set at runtime (ini_set()). Although, you can use .htaccess if your host allows it as described above. An example .htaccess entry: php_flag register_globals on.
Avatar billede dennism Nybegynder
03. februar 2004 - 15:40 #6
Jeg har netop testen den løsning med ini_set, og det ser ud til at virke optimalt på både min og b-one's server. Så hvorfor kan jeg ik bruge den?
Avatar billede detox Nybegynder
03. februar 2004 - 15:44 #7
Jeg henviser bare til manualen: Please note that register_globals  cannot be set at runtime (ini_set()).
Jeg har heller ikke haft held til at bruge den metode på mit webhotel, hvorimod jeg kan ændre det i .htaccess. Men hvis det andet virker på B-one er det jo fint ;o)
Avatar billede dennism Nybegynder
03. februar 2004 - 15:53 #8
Mange tak for hjælpen. venter dog lige med at lukke, indtil jeg er helt sikker på at dette ikke giver problemer!
Avatar billede googolplex Novice
03. februar 2004 - 19:24 #9
Jeg har lige testet på mit B-one hotel.

Hverken ini_set() eller .htaccess ser ud til ar virke, så er der ikke rigtig nogen løsning tilbage :(
Avatar billede avminarm Juniormester
09. februar 2004 - 10:59 #10
detox>> hmm jeg synes nu jeg har set det virke - iøvrigt dennism kan få det til at virke på B-one - kan det være noget windows/linus problematik??
Avatar billede dennism Nybegynder
16. februar 2004 - 12:09 #11
Det virker ikke alligvel. Må ha' lavet en fejl da jeg testede :(
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