Avatar billede limes_planum Praktikant
14. januar 2005 - 15:43 Der er 10 kommentarer og
1 løsning

Hvordan overkommer jeg lettest en register_globals-ændring

Min udbyder har af sikkerhedsmæssige årsager ændret register_globals til 'off'. På mit hotel har jeg over 100 PHP-scripts, og jeg kan ikke overskue, hvor mange af disse der ikke længere virker pga. ændringen.
Er der mon en let måde at overkomme dette store problem, hvor en kodestump måske kan genbruges i scripts'ene, eller bliver jeg nød til at lære en ny form for PHP fra bunden, som mine værste anelser leder mod???
Avatar billede advancedweb Nybegynder
14. januar 2005 - 16:18 #1
Hvis du har en eller anden form for include() i toppen af hvert dokument kan du skrive $variabel = $_GET[variabel]
Avatar billede advancedweb Nybegynder
14. januar 2005 - 16:20 #2
eller $id = $_GET['id']... fordi når man kører register_globals 'off' skal man bruge $_GET['idellerandetvariabelnavn'] for at få en variabel fra "URL'en"
Avatar billede coderdk Praktikant
14. januar 2005 - 20:39 #3
Hmm, hellere skrive scriptene om, men du kan måske gøre det med noget i stil med:

if ( ini_get( 'register_globals' ) == '1' || strtolower( ini_get( 'register_globals' ) ) == 'on' )
{
  extract( $_FILES );
  extract( $_GET );
  extract( $_POST );
  extract( $_COOKIE );
}

Hver fil skal have denne kode i toppen (ja, eller i en include de bruger)...
Avatar billede coderdk Praktikant
14. januar 2005 - 20:40 #4
Manglede måske også en:

  extract( $_SESSION );
Avatar billede coderdk Praktikant
14. januar 2005 - 20:40 #5
heheh og måske en:

  extract( $_SERVER );
Avatar billede limes_planum Praktikant
20. januar 2005 - 14:34 #6
kigger på forslagene de kommende dage + weekend... vender tilbage i starten af næste uge :-)
Avatar billede limes_planum Praktikant
20. januar 2005 - 17:26 #7
ok har allerede smugkigget lidt på det. Men det her skulle så virke kan jeg forstå?? :

<?php

if ( ini_get( 'register_globals' ) == '1' || strtolower( ini_get( 'register_globals' ) ) == 'on' )
{
  extract( $_FILES );
  extract( $_GET );
  extract( $_POST );
  extract( $_COOKIE ); 
  extract( $_SESSION );
  extract( $_SERVER );
}

$link=mysql_connect("localhost", "xxx", "xxx") or die ("Could not connect to MySQL");
mysql_select_db("xxx",$link) or die ("Could not select $db database");

$query = "update kurser set nav = '$nav1', spe = '$spe1', sta ='$sta1', tid = '$tid1', ste ='$ste1', pri = '$pri1' where idx = '1'";
mysql_query("$query");

$query2 = "update kurser set nav = '$nav2', spe = '$spe2', sta ='$sta2', tid = '$tid2', ste ='$ste2', pri ='$pri2' where idx = '2'";
mysql_query("$query2");

$query3 = "update kurser set nav = '$nav3', spe = '$spe3', sta ='$sta3', tid = '$tid3', ste ='$ste3', pri ='$pri3' where idx = '3'";
mysql_query("$query3");

$query4 = "update kurser set nav = '$nav4', spe = '$spe4', sta ='$sta4', tid = '$tid4', ste ='$ste4', pri ='$pri4' where idx = '4'";
mysql_query("$query4");

$query5 = "update kurser set nav = '$nav5', spe = '$spe5', sta ='$sta5', tid = '$tid5', ste ='$ste5', pri ='$pri5' where idx = '5'";
mysql_query("$query5");

$query6 = "update kurser set nav = '$nav6', spe = '$spe6', sta ='$sta6', tid = '$tid6', ste ='$ste6', pri ='$pri6' where idx = '6'";
mysql_query("$query6");
?>
<script language=javascript> self.close(); </script> <body>.


- som man kan se slutter det af med en 'self.close', men så langt når scriptet aldrig da det hverken lukker eller skriver til db....
Avatar billede coderdk Praktikant
20. januar 2005 - 17:33 #8
Kommer den ind i if'en? Hvad siger SQL'erne? Har du prøvet at skrive noget debug ud?!
Avatar billede limes_planum Praktikant
20. januar 2005 - 17:51 #9
kombinationen af de to virker heller ikke:

<?php

if ( ini_get( 'register_globals' ) == '1' || strtolower( ini_get( 'register_globals' ) ) == 'on' )
{
  extract( $_FILES );
  extract( $_GET );
  extract( $_POST );
  extract( $_COOKIE ); 
  extract( $_SESSION );
  extract( $_SERVER );
}

$nav1= $_GET[nav1];
$nav2= $_GET[nav2];
$nav3= $_GET[nav3];
$nav4= $_GET[nav4];
$nav5= $_GET[nav5];
$nav6= $_GET[nav6];

$spe1= $_GET[spe1];
$spe2= $_GET[spe2];
$spe3= $_GET[spe3];
$spe4= $_GET[spe4];
$spe5= $_GET[spe5];
$spe6= $_GET[spe6];

$sta1= $_GET[sta1];
$sta2= $_GET[sta2];
$sta3= $_GET[sta3];
$sta4= $_GET[sta4];
$sta5= $_GET[sta5];
$sta6= $_GET[sta6];

$tid1= $_GET[tid1];
$tid2= $_GET[tid2];
$tid3= $_GET[tid3];
$tid4= $_GET[tid4];
$tid5= $_GET[tid5];
$tid6= $_GET[tid6];

$ste1= $_GET[ste1];
$ste2= $_GET[ste2];
$ste3= $_GET[ste3];
$ste4= $_GET[ste4];
$ste5= $_GET[ste5];
$ste6= $_GET[ste6];

$pri1= $_GET[pri1];
$pri2= $_GET[pri2];
$pri3= $_GET[pri3];
$pri4= $_GET[pri4];
$pri5= $_GET[pri5];
$pri6= $_GET[pri6];


$link=mysql_connect("localhost", "xxxxxxxxx", "xxxx") or die ("Could not connect to MySQL");
mysql_select_db("xxxxxxx",$link) or die ("Could not select $db database");

$query = "update kurser set nav = '$nav1', spe = '$spe1', sta ='$sta1', tid = '$tid1', ste ='$ste1', pri = '$pri1' where idx = '1'";
mysql_query("$query");

$query2 = "update kurser set nav = '$nav2', spe = '$spe2', sta ='$sta2', tid = '$tid2', ste ='$ste2', pri ='$pri2' where idx = '2'";
mysql_query("$query2");

$query3 = "update kurser set nav = '$nav3', spe = '$spe3', sta ='$sta3', tid = '$tid3', ste ='$ste3', pri ='$pri3' where idx = '3'";
mysql_query("$query3");

$query4 = "update kurser set nav = '$nav4', spe = '$spe4', sta ='$sta4', tid = '$tid4', ste ='$ste4', pri ='$pri4' where idx = '4'";
mysql_query("$query4");

$query5 = "update kurser set nav = '$nav5', spe = '$spe5', sta ='$sta5', tid = '$tid5', ste ='$ste5', pri ='$pri5' where idx = '5'";
mysql_query("$query5");

$query6 = "update kurser set nav = '$nav6', spe = '$spe6', sta ='$sta6', tid = '$tid6', ste ='$ste6', pri ='$pri6' where idx = '6'";
mysql_query("$query6");
?>
<script language=javascript> self.close(); </script> <body>.

- men det kan måske skyldes register_globals ikke vil videresende mine data fra mit flashscript til URL'en??? - jeg får ikke data/udvidet_streng frem i Url'en...

(flashscript:...

on (press) {
myLoadVars = new LoadVars();
//hold1
    myLoadVars.nav1 = navn1.text;
    myLoadVars.spe1 = spec1.text;
    myLoadVars.sta1 = star1.text;
    myLoadVars.tid1 = tid1.text;
    myLoadVars.ste1 = sted1.text;
    myLoadVars.pri1 = pris1.text;

//hold2
    myLoadVars.nav2 = navn2.text;
    myLoadVars.spe2 = spec2.text;
    myLoadVars.sta2 = star2.text;
    myLoadVars.tid2 = tid2.text;
    myLoadVars.ste2 = sted2.text;
    myLoadVars.pri2 = pris2.text;
   
    //hold3
    myLoadVars.nav3 = navn3.text;
    myLoadVars.spe3 = spec3.text;
    myLoadVars.sta3 = star3.text;
    myLoadVars.tid3 = tid3.text;
    myLoadVars.ste3 = sted3.text;
    myLoadVars.pri3 = pris3.text;
   
    //hold4
    myLoadVars.nav4 = navn4.text;
    myLoadVars.spe4 = spec4.text;
    myLoadVars.sta4 = star4.text;
    myLoadVars.tid4 = tid4.text;
    myLoadVars.ste4 = sted4.text;
    myLoadVars.pri4 = pris4.text;
   
    //hold5
    myLoadVars.nav5 = navn5.text;
    myLoadVars.spe5 = spec5.text;
    myLoadVars.sta5 = star5.text;
    myLoadVars.tid5 = tid5.text;
    myLoadVars.ste5 = sted5.text;
    myLoadVars.pri5 = pris5.text;
   
    //hold6
    myLoadVars.nav6 = navn6.text;
    myLoadVars.spe6 = spec6.text;
    myLoadVars.sta6 = star6.text;
    myLoadVars.tid6 = tid6.text;
    myLoadVars.ste6 = sted6.text;
    myLoadVars.pri6 = pris6.text;
myLoadVars.send("http://xxxx.php",myLoadVars,"POST");
getURL("http://xxx.html");
}
Avatar billede limes_planum Praktikant
06. februar 2005 - 00:20 #10
Jeg har skiftet webhotel/udbyder(register glob. - ON) og derved ordnet problemet. Min nye udbyder kendte ogs til en makro det gjorde det betydeligt lettere.
Jeg kunne dermed desværre ikke lige bruge jeres, sikkert gode, besvarelser til noget :-(..... anullerer spørgsmålet en af dagene.
Avatar billede limes_planum Praktikant
17. september 2006 - 19:03 #11
Lukker sp. ...
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