27. januar 2004 - 15:51
Der er
58 kommentarer og 1 løsning
PHP - variabel
Jeg har denne kode: <? $_GET[test] = "hej"; echo"test: $test"; ?> Når jeg kører denne på min local-server får jeg: test: Køres den på mit webhotel hos b-one får jeg: test: hej Hvordan laver jeg om på det? Jeg er ikke interesseret i at en GET-variabel registreres som en normal variabel!
Annonceindlæg tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
27. januar 2004 - 15:55
#1
Så vidt jeg ved er det ikek rigtig noget du kan gøre noget ved, da det skyldes den php-version og de indstillinger de har hos b-one.
27. januar 2004 - 15:56
#2
<?php Smid dette i starten af din side: 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; } } unregister_globals() ?>
27. januar 2004 - 15:57
#3
Det er faktisk ik så smart.. Har jo skrevet mine koder til at funkere på denne måde. Det kan evt. godt blive problemer på et tidspunkt!
27. januar 2004 - 15:57
#4
Mangler lige et ';' efter unregister_globals() :)
27. januar 2004 - 15:58
#5
Sikker på at den virker, googolplex?
27. januar 2004 - 15:59
#6
Ja, bruger den selv og har taget den fra en artikkel i php-arkitect, tror de har tjek på det ;)
27. januar 2004 - 16:00
#7
Når jeg kører det på min server, så får jeg en "siden kan ikke vises" fejl!
27. januar 2004 - 16:01
#8
Jeg bruger den selv hos B-one - ingen problemer...
27. januar 2004 - 16:07
#9
Du kan finde artiklen her, jeg kan desværre ikke huske hvilket nummer jeg fandt scriptet i :(
http://www.phparch.com/
27. januar 2004 - 16:08
#10
Har du fået det til at funke, siden du har accepteret ?
27. januar 2004 - 16:16
#11
Ja, det er blot på min local-server det ikke virker.
27. januar 2004 - 16:48
#12
Har fundet en fejl i den kode. Når jeg kører koden på nogle maskiner som ikke har nogle sessions registreret så kommer denne fejlside: ___________ Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator, support@b-one.net and inform them of the time the error occurred, and anything you might have done that may have caused the error. More information about this error may be available in the server error log. _________ Hvis jeg kører den fra min computer som har en session på serveren, så virker det fint. Hvordan kan det være, og hvordan ændrer jeg på det?
27. januar 2004 - 16:51
#13
Har fundet frem til at det er "unset($GLOBALS[$key]);" der skaber fejlen!?
27. januar 2004 - 18:57
#14
Jeg smider 100 point for et svar på dette! Kan I ik hjælpe?
27. januar 2004 - 19:02
#15
googolplex -> PHP|Architect - Januar 2003 mener jeg... dennism -> hvorfor prøve at (re)define en $_GET variabel? kan du lave et dump af de to (forskellige?) phpinfo() filer (for lokal og b-one) så vi kan se om der er noget åbenlyst i opsætning der spærer for det... Morten
27. januar 2004 - 19:03
#16
Og hvis der så er!? Så kan jeg jo ikke gå ind og ændre på b-one opsætning!?..
27. januar 2004 - 19:10
#17
nej, men så har du da en forklaring (og kan skæde b-one ud...) (desuden virkede det jo ik på din lokale...) Morten
27. januar 2004 - 19:20
#18
googolplex >> Kan du fortælle mig hvad der er galt med min kode?
27. januar 2004 - 19:23
#19
dea_pg >> Hvad vil du tro, at den funktion jeg skal lade efter hedder?
27. januar 2004 - 19:24
#20
Kom selv i tanke om det.. Det er register_globals. Det er ik noget med kan slå fra i en htaccess, vel?
27. januar 2004 - 19:32
#21
jo det kan det...
php_value register_globals on|off
også læs om det på
http://php.net/ini_set Morten
27. januar 2004 - 19:33
#22
det skal nok være 0|1 istedet for off|on Morten
27. januar 2004 - 20:05
#23
Skal det indsættes i toppen af mit dokument?
27. januar 2004 - 20:07
#24
det skal være i en fil ved navn .htaccess i dit rod bibliotek (og måske i undermappe, ved det ik lige) Morten
27. januar 2004 - 20:11
#25
Det er gjort.
Og filen indeholder:
php_value register_globals 0
Men se nu hvilken effekt det har på min side:
http://www.dgkom.dk
27. januar 2004 - 20:14
#26
hmm... interesant... det er nok b-one der må tag den... (bare fjern filen igen, hvis du kan se den... ellers så overskriv den med en tom fil) Morten
28. januar 2004 - 17:36
#27
dea_pg >> B-one siger at man ikke har mulighed for at slå dette til. Hvad kan jeg så gøre?
28. januar 2004 - 17:36
#28
Slå det fra, even.
28. januar 2004 - 18:57
#29
googolplex & dea_pg >> Kan det godt passe at den funktion (unregister_globals();) laver problemer når man skal unregistrere en session? Det kan jeg nemlig ikke, efter at jeg har taget denne funktion i brug!
02. februar 2004 - 15:52
#30
Når jeg bruger sessions på min side, så går siden ned, hvis jeg kører funktionen (unregister_globals). Hvordan kan det være?
02. februar 2004 - 16:07
#31
Hmm, jeg har aldrig haft problemer med den, men kan heller ikke huske om jeg har brugt den sammen med sessions :( Jeg har ikke længere den artikel fra PHP|architect - kunne være sjovt at se original-koden.
02. februar 2004 - 16:14
#32
Kan du hjælpe mig med at skaffe original-koden, eller evt. finde fejlen i min kode? Har nemlig ret store problemer, fordi min kode er skrevet til "register_globals=off", hvor b-one's webservere kører med on. Desuden synes jeg godt om at variablerne ikke bliver registreret globals, så er faktisk stor modstander af at b-one ikke giver mulighed for at man kan slå det fra. Giver gerne 200point (vist max. grænsen, har kan desværre ik give mere) for en løsning på mit problem.
02. februar 2004 - 16:28
#33
Jeg prøver lige at finde original-koden... Langt de fleste webhoteller kører desværre med register_globals On - ellers holder en langt række scripts op med at fungere og så får de en hulens bøvl fra folk der klager - SUK!
02. februar 2004 - 16:31
#34
Jah, kan sagtens se det fra den vinkel! Men de giver heller ik engang adgang til at selv at vælge det i en .htaccess. Jeg kan ikke se hvad det kan skade!?
02. februar 2004 - 17:15
#35
Jeg kan faktisk slet ikke se det fra den vinkel, det er da håbløst bare at slå r_g til fordi folk ikke gider/kan finde ud af at rette deres scripts :( Den artikel hvor koden ligger er kodet og jeg kan ikke finde kodeordet, måske dea_pg har den ? Jeg oprettede selv et spørgsmål angående funktionen for noget tid siden, måske du kan bruge den.
02. februar 2004 - 17:15
#36
02. februar 2004 - 17:28
#37
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 (); det er den orig. kode fra magasinet... Morten
02. februar 2004 - 17:45
#38
dea_pg >> Med den kode får jeg følgende fejl: Parse error: parse error, unexpected '{' in ___.php on line 2 line 2 er: unregister_globals () { Hvad kan dette skyldes?
02. februar 2004 - 18:14
#39
du skal lige skrive function foran... har fået copy-pastet forkert altså function unregister_globals(){ Morten
02. februar 2004 - 18:21
#40
Men så vidt jeg kan se, er de to koder identiske, der er flyttet lidt på et par ting og kodestilen er ændret. Det burde ikke have nogen effekt.
02. februar 2004 - 18:23
#41
nææ...
02. februar 2004 - 18:27
#42
Aargh.. Hvad søren kan jeg så gøre? :'(
03. februar 2004 - 15:31
#43
Kan det evt. have noget at gøre med rækkefølgen du bruger følgende: session_start(); unregister_globals(); ?
03. februar 2004 - 15:35
#44
Nej, første linie i min kode er en session_start!
03. februar 2004 - 15:54
#45
Ja, men så prøv lige at sæt funktionen øverst og session_start(), det har jeg :)
03. februar 2004 - 15:54
#46
Altså: unregister_globals(); session_start(); Mon ikke det er derfor?
03. februar 2004 - 15:57
#47
Nej, det giver desværre også problemer. Jeg har dog fået en anden løsning, i et andet spørgsmål: ini_set('register_globals' ,'0');
03. februar 2004 - 16:04
#48
Ja, så godt dit spørgsmål :) Fatter dog ikke det virker, det burde det ikke...weird :P
03. februar 2004 - 16:10
#49
Nu forstår jeg ingen ting.
Jeg har denne kode:
$_GET[test] = "hej";
echo"test: $test";
Som ligger her:
http://www.dgkom.dk/test2.php Som du kan se, så burde den skrive "hej", eftersom "register_globals = on" på webserveren.
Men hvorfor gør den nu ikke det?
03. februar 2004 - 16:16
#50
Jamen, har du ikke lige ændret det i ini_set() ? Huske forresten at skriv: $_GET['test'] - IKKE $_GET[test] Det sidste virker kun vha. magi og er ikke god PHP :)
03. februar 2004 - 16:17
#51
Har selv fundet problemet i det. Jeg har nu lavet følgende test-side, for at teste den anden funktion: _______________________________________________________________ <? 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 (); session_start(); session_register("test"); $_SESSION[test] = "blablabla"; session_unregister("test"); echo"test: $test"; ?> _______________________________________________________________ Hvad mere kan jeg gøre, for at teste om koden virker sammen med sessions?
03. februar 2004 - 16:21
#52
Prøvede forresten med denne kode: ini_set('register_globals' ,'0'); echo"test: $test"; Og kører siden sådan: test.php?test=hej Der stod så "test: hej" i browsen, så dermed er det konstateret at ini_set ikke virker. Ik sandt?
03. februar 2004 - 17:05
#53
Jep, og det bør det heller ikke :) Brug .htaccess, det er sidste mulighed.
03. februar 2004 - 17:27
#54
ini_set kan ikke ændre register_globals... dette fremgår af tabellen vidst i manualen under ini_set() kun i .ini filen, eller med .htaccess Morten
03. februar 2004 - 18:26
#55
.htaccess med:
php_flag register_globals off
Virker fint hos
www.surftown.dk , men hos
www.b-one.nu får jeg en 'Internal Server Error'.
Enten er det mig der gør noget forkert eller også er det umuligt at ændre register_globals til off hos b-one...
03. februar 2004 - 19:58
#56
Det er umuligt at ændre det hos b-one. Jeg har nemlig kontaktet dem, fordi jeg heller ik kunne få den til at virke. De siger at det er af sikkerhedsmæssige årsager!? :( Men så vidt jeg kan se, så er det da farligt at lade den stå på on! Folks koder blir' jo nemmere at skyde sig igennem. Hvad med scripet? Se lige min kommentar 16:17:25.
03. februar 2004 - 20:08
#57
Det er jo nærmest latterligt når de påstår det er pga. af sikkerhed LOL. Nå, men jeg har forladt B-one, bruger det kun indtil det udløber som test-site. Du skal ikke bruge session_register(), det er gammeldags :) Brug: unregister_globals(); session_start(); $_SESSION['test'] = "blablabla"; Mere behøver du da ikke, måske er det derfor det ikke virker, men er ikke sikker.
03. februar 2004 - 20:09
#58
du har ret - det bliver mere usikkert at køre scriptene <ironisk> men mere sikkert fro B-One da de ikke modtager brok fra kunder der ikke kan få ders hentede lorte-scripts til at virke... ;) </ironisk> Morten
03. februar 2004 - 20:18
#59
Morten:
Jeg har testet .htaccess hos
www.surftown.dk , men kun med GET. Hvis det virker her kan jeg så gå ud fra, at det virker for resten ? Hvordan tester jeg det ellers for alle globale ?
Vi tilbyder markedets bedste kurser inden for webudvikling