Register Globals = On und Assoziative Arrays
Dieter
- php
Hallo,
ich wollte mal fragen, ob man assoziative Arrays per URL beeinflussen kann, sofern Register Globals auf On steht.
Ich mein z.B. so:
<?php
if(rand(0,100) == 50)
$array["gewonnen"] = "Sie haben gewonnen!";
echo $array["gewonnen"];
?>
Könnte man jetzt per URL $array["gewonnen"] so beeinflussen, dass man dort beliebigen Text einschleust (mit Register Globals = On)?
MFG
Dieter
hi,
ich wollte mal fragen, ob man assoziative Arrays per URL beeinflussen kann, sofern Register Globals auf On steht.
Die Problematik liegt bei rg=on hauptsächlich darin, dass noch nicht definierte Variablen plötzlich Werte bekommen können.
if(rand(0,100) == 50)
$array["gewonnen"] = "Sie haben gewonnen!";
Könnte man jetzt per URL $array["gewonnen"] so beeinflussen, dass man dort beliebigen Text einschleust (mit Register Globals = On)?
Nach dieser Zuweisung in deinem Script nicht mehr.
gruß,
wahsaga
Hallo,
aber was ist, wenn die If-Anweisung nicht ausgeführt wird, bzw. wenn dort nur steht:
<?php
echo $array["gewonnen"];
?>
Könnte ich jetzt genau bei diesem Script (sonst kein anderer Code), beliebige Text ausgeben, die ich per URL übergeben habe?
MFG
Moin!
Ich mein z.B. so:
<?php
if(rand(0,100) == 50)
$array["gewonnen"] = "Sie haben gewonnen!";echo $array["gewonnen"];
?>
>
> Könnte man jetzt per URL $array["gewonnen"] so beeinflussen, dass man dort beliebigen Text einschleust (mit Register Globals = On)?
Ja, das ist problemlos möglich. Wobei dein Code diese Vorbelegung nur dann rückgängig macht, wenn die IF-Verzweigung ausgeführt wurde - in allen anderen Fällen würde der vorbelegte Text verwendet werden und dabei u.U. Probleme bereiten.
- Sven Rautenberg
--
My sssignature, my preciousssss!
Moin
Ja, das ist problemlos möglich. Wobei dein Code diese Vorbelegung nur dann rückgängig macht, wenn die IF-Verzweigung ausgeführt wurde - in allen anderen Fällen würde der vorbelegte Text verwendet werden und dabei u.U. Probleme bereiten.
Aber wie würde so eine URL z.B. aussehen?
Wenn ich an die URL '?array=Test' anhänge, dann erhalte ich als Ausgabe ein T (den ersten Buchstaben).
Wenn man nur 1 Zeichen einschleusen könnte, wäre es ja relativ unproblematisch.
Kann man aber auch mehr Zeichen einschleusen, denn dann müsste ich sehr viel an meinem Script ändern.
MFG
hi,
Aber wie würde so eine URL z.B. aussehen?
Wenn ich an die URL '?array=Test' anhänge, dann erhalte ich als Ausgabe ein T (den ersten Buchstaben).
Dann hänge doch mal '?array[blubb]=blah' an - und lasse dir am Anfang deines Scriptes $array mittels print_r ausgeben.
gruß,
wahsaga
Hallo,
hmm ok danke jetzt weiß ich bescheid.
Bei meinen Versuchen hatte ich immer noch '' für den Namen in der URL.
MFG
echo $begrüßung;
Aber wie würde so eine URL z.B. aussehen?
Dann hänge doch mal '?array[blubb]=blah' an
Genau diese Methode (ein wenig abgewandelt) wendet man auch an, wenn man mehrere Form-Elemente mit gleichem Namen übertragen möchte:
<input type="checkbox" name="array[]" value="foo">
<input type="checkbox" name="array[]" value="bar">
<input type="checkbox" name="array[]" value="baz">
echo "$verabschiedung $name";
hi,
Genau diese Methode (ein wenig abgewandelt) wendet man auch an, wenn man mehrere Form-Elemente mit gleichem Namen übertragen möchte:
<input type="checkbox" name="array[]" value="foo">
Man muss sie ja nicht mal abwandeln - wenn man keinen bei Null beginnenden, nummerischen Index wünscht, oder ihn selbst bestimmen will, kann man den Index ja ebenfalls noch im Feldnamen zwischen den eckigen Klammern angeben.
gruß,
wahsaga