"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

ist $HTTP_GET_VARS ein global-variable?

tomstig 24.11.2004 - 14:16 2189 19
Posts

tomstig

OC Addicted
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
hi...

glaub titel sagt alles: ist $HTTP_GET_VARS ein global variable, wie zb $_SERVER??

weil in einem script kommt folgendes vor:
Code: PHP
$HTTP_POST_VARS = $_POST;
$HTTP_GET_VARS = $_GET;
$HTTP_SERVER_VARS = $_SERVER;
$HTTP_COOKIE_VARS = $_COOKIE;
$HTTP_ENV_VARS = $_ENV;
$HTTP_POST_FILES = $_FILES;

und da er diese variablen dann ziemlich oft benützt, wollte ich wissen, ob er die dadurch dauerhaft abrufbar macht, oder ob die nur solange vorhanden sind wie zb ein ganz normales $_POST??

tia, mfg

mat

Administrator
Legends never die
Avatar
Registered: Aug 2003
Location: nö
Posts: 25423
$HTTP_POST_VARS ist ebenfalls ein superglobal aber für ältere phpversionen. deshalb ist der code oben ziemlich unlogisch.. weil wenn dann würde man es andersrum machen, um kompatibilität zu wahren.

aus dem manual:
Zitat
$_POST:
Variables provided to the script via HTTP POST. Analogous to the old $HTTP_POST_VARS array (which is still available, but deprecated).

roye

Little Overclocker
Registered: Nov 2003
Location: Wien
Posts: 52
vielleicht hat er sein script einfach von der alten version auf die neue angepasst? ich würd' vielleicht auch ned mit ultra edit drüber fahren ;-)

tomstig

OC Addicted
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
so, ich weiß nicht, inwiefern ich das verstanden habe: superglobals müssten doch überall erreichbar sein, oder?

ich hab das jetzt nämlich _ganz_ primitiv getest:

datei "1.php":
Code: PHP
<form action="2.php" method="POST">
<input type="text" name="name" value="thomas">
<input type="submit" name="submit" value="Senden">
</form>

datei "2.php":
Code: PHP
<?php

echo "<pre>";
print_r($_POST);
echo "</pre>";

$HTTP_POST_VARS = $_POST;

echo "<br />";
?>
<br />
<a href="3.php">Weiter...</a>

datei "3.php":
Code: PHP
<?php

echo "<pre>";
print_r($_POST);
echo "</pre>";

echo "<pre>";
print_r($HTTP_POST_VARS);
echo "</pre>";

?>

ausgabe von datei "3.php":
Code: PHP
Array
{
}

Array 
{
}


sry, mat, aber ich steh derzeit etwas auf der leitung - weil was hätte dann "damals" (alte phpversionen) das $HTTP_POST_VARS gebracht??

vossi

been there, done that
Avatar
Registered: Feb 2003
Location: Vienna
Posts: 1436
die $_POST variable gilt dann nur im jeweiligen script aufruf an den gepostet wurde.

wenn du dann im 3ten aufruf auch damit arbeiten willst musst du es nochmal POSTen oder per GET übergeben

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
erweiternd zu vossi's post:

das "überall" bezieht sich auf funktionen (bzw. methoden) wo du bei "normalen" globals erst eine globale variable verwenden kannst, wenn diese mit dem keyword "global" definiert wurde. bei superglobals ist das nicht notwendig, sie sind immer und überall im script verwendbar.

tomstig

OC Addicted
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
ja, vossi, ist mir schon klar (ok, wie man das jetzt konkret am besten macht, dass man mit $_POST "weitergibt", wüsste ich jetzt nicht), es war ja hier nur der test, obs mit $HTTP_POST_VARS geht...

btw: sry, wegen des crap-progstils (vor allem 2.php :D )

dio

Here to stay
Registered: Nov 2002
Location: Graz
Posts: 4883
Zitat von tomstig
ja, vossi, ist mir schon klar (ok, wie man das jetzt konkret am besten macht, dass man mit $_POST "weitergibt", wüsste ich jetzt nicht), es war ja hier nur der test, obs mit $HTTP_POST_VARS geht...

btw: sry, wegen des crap-progstils (vor allem 2.php :D )
Anscheinend ist dir das nicht klar. Wie soll 3.php noch POSTData ausgeben, wenn kein Bezug zu einem Formular besteht?! Du weist in 2.php ja nur $HTTP_POST_VARS den Wert von $_POST zu, der, wohlgemerkt, bereits automatisch zugewiesen wurde.

Wenn du so verlinkst, musst du die Daten mit GET übergeben, was jedoch dann überhaupt nichts mehr mit deinem "Szenario" zu tun hat.

BTW: Das Selbe in grün: $HTTP_GET_VARS && $_GET

http://www.php.net/release_4_1_0.php

http://at.php.net/en/language.variables.predefined
Bearbeitet von dio am 27.11.2004, 10:15

semteX

begehrt die rostschaufel
Avatar
Registered: Oct 2002
Location: Pre
Posts: 14594
wie schon gesagt wurde $HTTP_POST bzw $HTTP_GET ist für alte php versionen die $_GET und $_POST noch nicht kannten. alles superglobal.

tomstig

OC Addicted
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
ja, dio, ist mir schon klar...

ursprünglich war ja meine frage, ob $HTTP_GET_VARS so wie $_SERVER[] ist - anscheinend nein, wie mein script "bewiesen" hat...

btw: irgendwie ähnelt deine antwort ziemlich der von vossi...

also $HTTP_GET_VARS ist sozusagen das alte $_GET?? (in irgendeiner php4 version hat man ja überhaupt nicht zb $_GET['name'] verwenden müssen, sondern nur $name... :confused: )

watchout

Legend
undead
Avatar
Registered: Nov 2000
Location: Off the grid.
Posts: 6845
Zitat von tomstig
(in irgendeiner php4 version hat man ja überhaupt nicht zb $_GET['name'] verwenden müssen, sondern nur $name... :confused: )
such' mal im forum nach "auto globals" - ich denke nicht dass ich jetzt zum 300sten mal nen Vortrag darüber schreiben will... nur so viel: das gibts noch immer, ist aber per setting an/ausschaltbar und seit 4.2.x standardmässig (dh. im recommended-ini) OFF, wobei es vorher per default ON war

tomstig

OC Addicted
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
kk, thx, brauchst mir keinen vortrag drüber halten, hab eh viel lieber $_GET[], $_POST oder auch $_REQUEST.... ;)

vossi

been there, done that
Avatar
Registered: Feb 2003
Location: Vienna
Posts: 1436
wer mit register_globals=ON arbeitet frisst auch kleine kinder :)

dio

Here to stay
Registered: Nov 2002
Location: Graz
Posts: 4883
Zitat von tomstig
ja, dio, ist mir schon klar...
Liest sich eben nicht so ;).

Zitat von tomstig
ursprünglich war ja meine frage, ob $HTTP_GET_VARS so wie $_SERVER[] ist - anscheinend nein, wie mein script "bewiesen" hat...
Und was hat dein Skript bewiesen?

Zitat von tomstig
btw: irgendwie ähnelt deine antwort ziemlich der von vossi...
Na das muss wohl daran liegen, dass sie richtig ist.

Zitat von tomstig
also $HTTP_GET_VARS ist sozusagen das alte $_GET??
Liest du eigentlich die Links, die gepostet werden?!

Zitat von tomstig
in irgendeiner php4 version hat man ja überhaupt nicht zb $_GET['name'] verwenden müssen, sondern nur $name... :confused: )
Stichwort register_globals

...

BTW: Die Zuweisung im ersten Post kann ich mir nur durch PHP5 erklären, wo standardmäßig die langen Variablen deaktiviert sind. Vielleicht hat der Ersteller des Codes einfach keinen Zugriff auf die PHP Config und will seine Skripte nicht abändern - nur eine Vermutung.
Bearbeitet von dio am 27.11.2004, 20:34

tomstig

OC Addicted
Avatar
Registered: Nov 2003
Location: /home/tomstig/
Posts: 1341
oder ich glaub der geht halt auch auf ältere systeme ein (hat auch ziemliche viele andeutungen drin)...

ok, ich glaub es wär jetzt alles geklärt...
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz