Hiho!
Wieder mal ein PHP problem....
Register Globals ist standardmässig off in PHP 4.3.2 was zur folge hat dass man variablen nimmer mit get oder post direkt übergeben kann....
sprich blah.php?var1=wert liefert auf blah.php keinen wert....
kann mir bitte wer erklären was das für einen sinn haben soll und wie ich das umgehen kann? irgendwie muss ich die sachen ja trotzdem rauskriegen oder?
bild mir ein mit $HTTP_GET_VARS und $HTTP_POST_VARS geht das.... aber was bringt das?
mfg, Phil
PHP - Register Globals in Version 4.3.2
-
-
Zitat von MarvinTheRobot
bild mir ein mit $HTTP_GET_VARS und $HTTP_POST_VARS geht das...
also so gehts auf jeden Fall ...PHPif (isset($HTTP_GET_VARS)) extract($HTTP_GET_VARS); if (isset($HTTP_POST_VARS)) extract($HTTP_POST_VARS);
das extract (http://www.php.net/manual/de/function.extract.php) "saugt" Dir die Variablen aus dem Array heraus, wobei Du auch einen String prefix setzen kannst, mit dem dann alle extrahierten Variablen anfangen.
Ojs kloar?
-
ja das war ma vorher auch klar....
ABER... was bringts wirklich? is das net wurscht ob ich register globals off oder on hab?
-> hab gehört es soll ne sicherheitslücke sein wenn das auf on is... aber in welcher hinsicht? wie? wieso?
wenn ich mit "get" was krieg kann ich die werte oben in der url ja auch manipulieren....
es geht hier weniger um die funktion, sondern eher um den sinn der dahinter steht.... weiss wer mehr?
mfg, Phil. -
Zitat von MarvinTheRobot
ABER... was bringts wirklich? is das net wurscht ob ich register globals off oder on hab?
naja ... wenn Du's auf "on" hast, dann werden alle Variablen mit genau den Namen automatisch übernommen. Egal ob sie über "POST" oder "GET" kommen. So kannst Du erstens auswählen, ob Du nur "POST", nur "GET", beides oder gar nix haben möchtest. Außerdem kannst Du genau steuern, welche Variablen übernommen werden und wie sie dann in Deinem Skript heissen. -
hm "register globals" auf off zu setzen scheint mir aber doch irgendwie eine reine schikane zu sein.... -> wenn ich ein skript schreib dann geb ich variablen nur mit post ODER get weiter.... net mit beidem... wenn ich das skript selber schreib weiss ich doch bitte wie meine variablen heissen und kann sie auch weiterverwenden...
das einzige was mir aufgefallen ist und was an $HTTP_POST_VARS super ist, ist dass alle Formularwerte + variablennamen dann in einem array gespeichert sind....
also rein in eine for schleife mit dem array, so lang werte daraus raussaugen und in eine neue variable reinschreiben bis das array beim letzten wert angekommen ist und dann mail versenden.... ein 20 zeilen skript und für jede seite und jedes formular einsetzbar....
aber das generell auf off zu setzen find ich einfach nur dumm und ärgerlich.
Lg, Phil. -
wenn du dir das extract ersparen willst, kannst du auch mit dem $_POST array arbeiten.
Zugriff erfolgt über: $_POST[<<parametername>>] -
hm ich glaub das geht auch mit $HTTP_POST_VARS['varname'] (hab mich inzwischen schlau gemacht )
aber trotzdem isses unsinnig in meinen augen.
Lg, Phil. -
Zitat von MarvinTheRobot
hm "register globals" auf off zu setzen scheint mir aber doch irgendwie eine reine schikane zu sein.... -> wenn ich ein skript schreib dann geb ich variablen nur mit post ODER get weiter.... net mit beidem... wenn ich das skript selber schreib weiss ich doch bitte wie meine variablen heissen und kann sie auch weiterverwenden...
also erstens stimmt es meiner Meinung nach nicht, daß man in einem Skript nur "POST" oder "GET" verwendet ... zumindest der Konvention nach wird "POST" wird "schreibende" und "GET" für "ausgebende" Anfragen verwendet.Und wenn Du außerdem ein längeres Skript schreibst, wo mehr als nur paar Variablen vorkommen, dann wird es auch hilfreich sein, die über Parameter reinkommenden Variablen mit "PARAM_" oder so ähnlich beginnen zu lassen ...
-
Zitat von MarvinTheRobot
aber das generell auf off zu setzen find ich einfach nur dumm und ärgerlich.also ich finds gscheit dass sie das endlich gemacht haben, und dass es $_POST, $_GET usw gibt.
erstens war register_globals=on wirklich eine ziemlich häufige sicherheislücke in php-anwendungen. dann kanns nämlich vorkommen, dass der programmierer davon ausgeht, dass eine variable nicht initialisiert bzw 0 ist, bzw vergisst sie zu initialisieren. und wenn man dann beim seitenaufruf zB "?logged_in=1" anhängt, kanns sein, dass man damit ziemlich was anrichten kann.
(sieht zwar jetzt irgendwie kontruiert aus, aber das ist in einigen php--applikationen wirklich so aufgetreten)außerdem wird der code, imho, um einiges lesbarer, wenn man $_GET bzw $_POST (oder $_REQUEST, wenn dir wurscht ist, wie die variable übergeb wurde) verwendet, weil man dann auch sofort sieht, woher die variablen kommen. besonders wenn der code dann länger wird, und ihn ev. auch wer anderer geschrieben hat, ist das sonst nichtmehr unbedingt sofort einsichtig
uuund außerdem kannst du auf $_GET, $_POST,... auch innerhalb von funktionen zugreifen, ohne dass du sie vorher extra als global deklarieren musst, das spart auch ein bisserl tipparbeit
lg, Chris
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!