[PHP] global ALL; ?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
anflligkeit
angriffspunkt
ausdruck
beitrag
cross
dankbar gru
datei
dateiname
funktion
global all
gren
meinst
methode
session
sofer
systemleistung
vermeide
verstehe
weiteren verlauf
zurck
-
Und ich habe schon wieder eine Frage :ja: .
Ich rufe per preg_replace_callback() eine Funktion IncludeFile() auf, diese Funktion macht nichts anderes, als die Datei, die durch preg_replace_callback() ermittelt wird zu includen!
include() kann man ja alleine nicht nehmen, da von preg_replace_callback() ja ein Array übergeben wird.
Nun gibt es nur ein Problem mit der Includeten Datei, die Variablen werden nicht übernommen.
Gibt es nun eine Art
global ALL;
welches man in der Funktion setzten kann, so dass alle Variablen weiterhin benutzt werden können in der includeten Datei? Oder kann man include() irgendwie direkt per preg_replace_callback() aufrufen?
Bin für jede Antwort dankbar!
Gruß,
sneerfire
Beitrag geaendert: 26.5.2007 0:02:13 von sneerfire -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ich habe nun zur Aushilfe das hinbekommen.
Aber ich denke es raubt viel Systemleistung, so sieht es aus:
<?php foreach($GLOBALS as $var => $value) global ${$key}; ?>
Für eine Systemleistung sparendere Methode ist dieser Thread noch offen :P
EDIT:
Und wenn ich nun in der includeten Datei eine neue Var anlege, wird diese auch nicht in dem weiteren Verlauf des Scriptes übernommen :/
Also diese Methode mit $GLOBALS ist nicht sehr gut ;)
Am besten wäre, wie gesagt, soetwas wie "global ALL;" ...
Oder eine Änderung mit der Funktion preg_replace_callback(), sodass man dort auch direkt include() verwenden kann...
Beitrag geaendert: 8.5.2007 21:21:36 von sneerfire -
Davon ausgenommen, dass ich keine Ahnung habe, was du überhaupt meinst, kann man deine foreach-Schleife weglassen und einfach über $GLOBALS auf die Variablen zugreifen.
$GLOBALS['varname'] - fertig
Die ist überall Global.
MfG Lucas -
Also erstmal von vorn herein,
1. vermeide globals wo's geht, die machen eine Seite anfällig gegen Cross site Scripting.
2. Ist der Dateiname gesichert bzw. wird geprüft oder wirdd da ein ungeprüft per GET, POST, Session oder Global übergebener Wert eingesetzt. Dass währe dann der zweite angriffspunkt.
Jetzt zu deinem Problem,
ich verstehe dass nicht ganz,
du bekommst von deiner Funktion ein Array zurück,
willst du jetzt jede im Array befindliche Zeichenkette includen?
oder nur eine bestimmte?
preg_replace_callback() hast du warscheinlich selbst geschrienem, in sofern kann ich nicht hellsehen wass du ändern musst, dazu musst du schon den Code posten. -
Also erstmal von vorn herein,
1. vermeide globals wo's geht, die machen eine Seite anfällig gegen Cross site Scripting.
[...]
Meinst du das Superglobale Array $GLOBALS, oder den Ausdruck "global"?
Durch beide erhöht man die Anfälligkeit für XXS IHMO nicht. Es kommt vielmehr darauf an, wie man die eingehenden Daten verarbeitet.
[...]
2. Ist der Dateiname gesichert bzw. wird geprüft oder wirdd da ein ungeprüft per GET, POST, Session oder Global übergebener Wert eingesetzt. Dass währe dann der zweite angriffspunkt.
[...]
Die Aussage verstehe ich nicht, vllt solltest du etwas langsamer tippen.
Viele Grüße
Lucas -
Ich meine den ausdruck global,
da es dort immer wieder mal schwachstellen gibt ...
Ich wollte mit dem 2. nur sagen dass er jede eingabe gegenprüfen sollte, da sonst eine Foreign Code injection ohne weiteres über ein extern gehostetes File stattfinden kann, zumindest wenn der eingegebene String direkt in der include verarbeitet wird. -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage