tomstig
OC Addicted
|
hi... glaub titel sagt alles: ist $HTTP_GET_VARS ein global variable, wie zb $_SERVER?? weil in einem script kommt folgendes vor: $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
AdministratorLegends never die
|
$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: $_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
|
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
|
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": <form action="2.php" method="POST">
<input type="text" name="name" value="thomas">
<input type="submit" name="submit" value="Senden">
</form>
datei "2.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": <?php
echo "<pre>";
print_r($_POST);
echo "</pre>";
echo "<pre>";
print_r($HTTP_POST_VARS);
echo "</pre>";
?>
ausgabe von datei "3.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
|
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
Legendundead
|
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
|
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 )
|
dio
Here to stay
|
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 ) 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.phphttp://at.php.net/en/language.variables.predefined
Bearbeitet von dio am 27.11.2004, 10:15
|
semteX
begehrt die rostschaufel
|
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
|
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... )
|
watchout
Legendundead
|
(in irgendeiner php4 version hat man ja überhaupt nicht zb $_GET['name'] verwenden müssen, sondern nur $name... ) 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
|
kk, thx, brauchst mir keinen vortrag drüber halten, hab eh viel lieber $_GET[], $_POST oder auch $_REQUEST....
|
vossi
been there, done that
|
wer mit register_globals=ON arbeitet frisst auch kleine kinder
|
dio
Here to stay
|
ja, dio, ist mir schon klar... Liest sich eben nicht so . 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? btw: irgendwie ähnelt deine antwort ziemlich der von vossi... Na das muss wohl daran liegen, dass sie richtig ist. also $HTTP_GET_VARS ist sozusagen das alte $_GET?? Liest du eigentlich die Links, die gepostet werden?! in irgendeiner php4 version hat man ja überhaupt nicht zb $_GET['name'] verwenden müssen, sondern nur $name... ) 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
|
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...
|