ist $HTTP_GET_VARS ein global-variable?

Seite 1 von 2 - Forum: Coding Stuff auf overclockers.at

URL: https://www.overclockers.at/coding-stuff/ist_http_get_vars_ein_global-variable_130352/page_1 - zur Vollversion wechseln!


tomstig schrieb am 24.11.2004 um 14:16

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 schrieb am 24.11.2004 um 14:53

$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 schrieb am 24.11.2004 um 15:00

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 schrieb am 24.11.2004 um 17:17

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 schrieb am 24.11.2004 um 17:19

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 schrieb am 24.11.2004 um 17:24

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 schrieb am 24.11.2004 um 17:24

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 schrieb am 27.11.2004 um 10:12

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


semteX schrieb am 27.11.2004 um 10:13

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 schrieb am 27.11.2004 um 14:32

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 schrieb am 27.11.2004 um 14:42

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 schrieb am 27.11.2004 um 14:44

kk, thx, brauchst mir keinen vortrag drüber halten, hab eh viel lieber $_GET[], $_POST oder auch $_REQUEST.... ;)


vossi schrieb am 27.11.2004 um 17:13

wer mit register_globals=ON arbeitet frisst auch kleine kinder :)


dio schrieb am 27.11.2004 um 17:49

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.


tomstig schrieb am 27.11.2004 um 20:26

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...




overclockers.at v4.thecommunity
© all rights reserved by overclockers.at 2000-2025