'saubere Übertragung' der Variable mit POST

Hallo,
ich versuchte gerade auf einer Website, das laut phpinfo() „register_globals Off Off“ umzugehen.
Ich vermute ich habe mit folgendem deswegen ein Problem:
http://www.goldmann.de/variablen-in-php-sauber-%FCbe…

Basierend darauf versuchte ich alle Schritten, trotzdem geht es nicht.
DieseSeite?war=hallo

Variable war=
<?php $war=$_POST[$war];
if (empty($war))
{
$war=„kein Wert“;
}
echo $_POST[$war];
?>

Ursprünglich reichte DieseSeite?war=hallo

Variable war=
<?php echo $war;
?>

Ich benötige das weil ich die php-Seiten mit ?seite=n lokal gestaltet habe.
Habe ich da etwas übersehen? Ich kann mir nicht vorstellen, dass der Webspacenanbieter register_globals auf On umstellen würde, da diese eien sicherheitsrisiko darstellt. Wäre eventuell für weitere Links mit Beispiele dankbar.

Arbeite ganzen Tag schon an dem Problem :frowning:

lg deafmax

Also mal abgesehen davon, dass ich mich an das „Wariable“ nicht gewöhnen kann… :wink:

ich versuchte gerade auf einer Website, das laut phpinfo()
„register_globals Off Off“ umzugehen.

warum? Ist aus Sicherheits und Konfliktaspekten durchaus berechtigt, dass das aus ist :wink:

Ich vermute ich habe mit folgendem deswegen ein Problem:
http://www.goldmann.de/variablen-in-php-sauber-%FCbe…

das glaub ich nicht, Tim…

Basierend darauf versuchte ich alle Schritten, trotzdem geht
es nicht.
DieseSeite?war=hallo

DieseSeite.php bitte ^^
ist zwar nur im Text aber naja… correctness halt :wink:

Variable war=

Hallo,

Für method=POST per Formular get

if ( isset ($HTTP\_POST\_VARS)) 
{
reset ($HTTP\_POST\_VARS);
foreach ($HTTP\_POST\_VARS as $k=\>$elem) {
${"e\_$k"} = $elem;
}
}
echo "Name : ", $e\_name;
?\>

für method GET bzw auch für URL encoded gilt aber

echo "Name : [Hugo](?name=Hugo)
";
if ( isset ($HTTP\_GET\_VARS)) 
{
reset ($HTTP\_GET\_VARS);
foreach ($HTTP\_GET\_VARS as $k=\>$elem) {
${"e\_$k"} = $elem;
}
}
echo "Name : ", $e\_name;
?\>

das Problem ist das GET und POST Daten getrennt aufbewart werden, leider steht es fast in allen Büchern falsch, bzw muss dann auch die php.ini alles an haben.

Hi, Danke,
ich habe nur nicht verstanden, warum es mit POST nicht ging, obwohl in der Beschreibung steht, dass POST variablen annimmt, die in der URL auch gleich mit drinnen steht. GET dagegen aus dem versteckten rausliest, aber wie es geht weiss ich auch nicht.
Danke für deine Beispiele, es ist mir nur um die Links gegangen, weil ich Links so setze Unterseite 1
usw. damit ich mit if und include dann die entsprechende Seiten abrufen kann.
Es ist kein Formular. Trotzdem danke, deine Information kann nützlich sein, wenn ich mal was mit der Formular anfange.
Liebe Grüße
deafmax

Hi,

Also mal abgesehen davon, dass ich mich an das „Wariable“
nicht gewöhnen kann… :wink:

naja, „wariable“ hat sich daraus ergeben, weil mit $var=$_POST[$var]auch nicht ging, habe ich beim rumspielen dann $war=$_POST[$var] genommen das so weit ging das alles $war wurde. (auch deswegen weil ich im zweifel war ob php das var nicht irgendwie als vordefinierte variable annimmt und wollte nach den misserfolge absolut sicher gehen) *ups*

Wegen dem register_globals habe ich mich völlik verkehrt ausgedrückt, ich meine die angegebene Seite ist dioe Lösung, aber wie ich diese umsetze, is mir nicht gelungen. Also mir kann die Formulierung ruhig peinlich sein…

DieseSeite.php bitte ^^
ist zwar nur im Text aber naja… correctness halt :wink:

DieseSeite heisst ja auch index.php o.a. Wäre es DieseSeite.php wäre es index.php.php wenn wir phpmässig annehmen würden, nicht? :wink: Aber ok, du hast recht, 'tschuligug.

wenn Du mit GET überträgst solltest Du auch GET abfragen :wink:
$war=$_GET[‚war‘];

Mann, Frau,… so läufts mal im Leben. Ich wusste schon fast, dass ich ganz nah dran bin, trotzdem ständig danebengriff. Das war DIE Lösung, danke.

POST überträgst Du nur in Formularen :wink:

Wusste ich nicht. Dachte POST bedeutet die variablen die sich auch im URL befindet.

eventuell für weitere Links mit Beispiele dankbar.

brauchts ned

Stimmt, Problem ist gelöst, vielen Dank dass du dir die Zeit genommen hast.

Liebe grüße deafmax

P.S: Sicherheit?
Jetzt ists richtig mit folgendem
DieseSeite?war=hallo

Variable war=
<?php $buh=$_GET[‚war‘];
if (empty($buh))
{
$buh=„kein Wert“;
}
echo $buh;
?>

Trotzdem wenn ich irgendwas anderes angebe mit
http://www.meinhp.com/index.php?war=aetsch+ich+komm+…
direkt im Browser, wirds auch entsprechend angezeigt.

Somit könnte ich genauso bei einem „register_globals On“ schreiben:
DieseSeite?war=hallo
Variable war=
<?php echo $buh;
?>

Hm, ich verstehe nicht ganz was man mit der Sicherheit da gemeint ist.
bzw. wie auf der Seite angegeben ist
http://www.goldmann.de/variablen-in-php-sauber-%FCbe…

Egal, jedenfalls habe ich die Lösung für diesen verflixten Webspace.
LG deafmax

das mit der Sicherheit…
Seitenaufruf:
index.php?file=passwords.php

code:

if ($uebergabe == 1) $file = "main1.php";
if ($uebergabe == 2) $file = "main2.php";

include ($file);

?\>

mit register globals ON bekommst Du so den Inhalt der passwords.php includiert…
Im zweifelsfall kannst Du dadurch den Server sogar hacken/cracken (wie auch immer)
mit register globals auf OFF prüfst Du nur auf den Wert $_GET[‚uebergabe‘] auf gültige Werte überprüfen und anschliessend festlegen, welche Datei includiert wird…
mit include ist das vielleicht noch nicht so schlimm, aber wenn Du - wie ein gewisser Reinhard (nicht der, der im Moment hier etwas aktiver ist) Deine Kundendaten in textdateien speicherst und Deine Daten aus textdaten ausliest, dann ist das sicher ein Risiko…

ist es jetzt ein wenig klarer geworden?

PS: mit register globals auf on geht es auch sicher(er)
dann müsste es so aussehen:

**$file = "";**
if ($uebergabe == 1) $file = "main1.php";
if ($uebergabe == 2) $file = "main2.php";

include ($file);

?\>