php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 16-11-2007, 00:32
shammes
 Newbie
Links : Onlinestatus : shammes ist offline
Registriert seit: Nov 2007
Beiträge: 6
shammes ist zur Zeit noch ein unbeschriebenes Blatt
Standard Wie Sichtbarkeitsbereich von Superglobals einschränken?

Superglobals wie $_POST, $_SESSION, etc. sind in allen Sichtbarkeitsbereichen eines Skripts verfügbar. Also auch in Methoden. Nun meine Frage:

Wie kann man den Sichtbarkeitsbereich von Superglobals so einschränken, dass diese z.B. in einer Methode NICHT mehr sichtbar sind? Ein vorheriges unset() ist unakzeptabel, da die Daten außerhalb der Methode noch gebraucht werden!

grüße sebastian
Mit Zitat antworten
  #2 (permalink)  
Alt 16-11-2007, 00:36
ModestLife
 Registrierter Benutzer
Links : Onlinestatus : ModestLife ist offline
Registriert seit: Sep 2007
Beiträge: 105
ModestLife ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wieso solltest du das wollen?
Mit Zitat antworten
  #3 (permalink)  
Alt 16-11-2007, 00:59
shammes
 Newbie
Links : Onlinestatus : shammes ist offline
Registriert seit: Nov 2007
Beiträge: 6
shammes ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Ganz einfach um zu verhindern, dass wenn man ein Template rendert, im Template auf Variablen zugegriffen werden kann, auf die nicht zugegriffen werden soll....z.B. $_SESSION
Mit Zitat antworten
  #4 (permalink)  
Alt 16-11-2007, 10:09
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Ich nehme mal an, dass ein Teil deiner Scripts die Superglobals braucht, weswegen es nicht in Frage kommt, sie völlig verschwinden zu lassen.

Die Superglobals existieren schon zu Beginn der Scriptlaufzeit.
Da man den Scope von Variablen in PHP nur bei ihrer Definition angeben und später nicht mehr ändern kann, gibt es keine Möglichkeit, die sie irgendwo unerreichbar zu machen.

Theoretisch könnte man mit scoped Ersatzvariablen oder durch strikte zeitliche Trennung (Code, unset(), Code) halbwegs hinbekommen, was du möchtest. Aber ich sehe eigentlich keinen Grund, warum man im Template keinen Zugriff auf Umgebungsvariablen haben darf und es wäre es mir keinesfalls wert, mich im Rest der Applikation derart einzuschränken.

Wenn es unbedingt sein muß, greif halt nicht auf PHP als Templatesprache zurück.
Mit Zitat antworten
  #5 (permalink)  
Alt 16-11-2007, 10:48
shammes
 Newbie
Links : Onlinestatus : shammes ist offline
Registriert seit: Nov 2007
Beiträge: 6
shammes ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Danke erstmal für deine antwort!

eine andere Templatesprache kommt eigentlich nicht in frage, weil ich mich immer nur sehr ungern von "fremdsoftware" abhänmgig machen will! daher eigentlich eher nicht. zudem ist php weitaus mächtiger als jede templateengine.

der Vorschlag mit der zeitliche Trennung (Code, unset(), Code) haut aber auch nur für die vairablen hin, die nur bei dem aktuellen aufruf existieren. die $_SESSION kann ich ja nicht einfach leeren bevor ich die template rendere...denn die brauch ich ja auch noch beim nächsten seitenaufruf....

hatte halt gehofft, dass man den scope halt irgendwie temporär ändern könnte.....

mal sehen wie ich das problem löse....
Mit Zitat antworten
  #6 (permalink)  
Alt 16-11-2007, 11:26
arkos
 PHP Senior
Links : Onlinestatus : arkos ist offline
Registriert seit: Feb 2003
Ort: hamburg
Beiträge: 1.015
arkos ist zur Zeit noch ein unbeschriebenes Blatt
Standard

meine idee wäre, die render-scripte, die nicht auf session und co zugreifen sollen per ajax einzubinden. wenn diese scripte dann kein session_start() bekommen, können sie imho auch nicht auf die session zugreifen.... auf post und so natürlich auch nicht...
__________________
**********
arkos
**********
Mit Zitat antworten
  #7 (permalink)  
Alt 16-11-2007, 12:32
pekka
 PHP Master
Links : Onlinestatus : pekka ist offline
Registriert seit: Jun 2001
Ort: Köln
Beiträge: 6.608
pekka befindet sich auf einem aufstrebenden Ast
Standard

... oder GET, POST usw. eben manuell rausfiltern.
Mit Zitat antworten
  #8 (permalink)  
Alt 16-11-2007, 19:42
Benutzerbild von onemorenerd onemorenerd
  Moderator
Links : Onlinestatus : onemorenerd ist offline
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.471
onemorenerd wird schon bald berühmt werdenonemorenerd wird schon bald berühmt werden
Standard

Es gibt auch Möglichkeiten, die $_SESSION temporär zu leeren.
Kopiere den Inhalt in eine (aus den Templates nicht erreichbare) Variable und registriere eine shutdown function, die den Inhalt wieder zurück kopiert.

Das ist das Prinzip Code, unset(), Code.
Wenn du die Kopie gleich zu Anfang erzeugst und dann mit ihr statt mit dem Original zu arbeiten, hast du "scoped Ersatzvariablen".

@arkos: Masochist!
Mit Zitat antworten
  #9 (permalink)  
Alt 16-11-2007, 20:52
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Effektiv ist das aber nicht, sobald man beliebigen PHP Code ausführen kann ist es auch möglich jede andere Variable auszulesen.
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
  #10 (permalink)  
Alt 16-11-2007, 21:02
ModestLife
 Registrierter Benutzer
Links : Onlinestatus : ModestLife ist offline
Registriert seit: Sep 2007
Beiträge: 105
ModestLife ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von shammes
Ganz einfach um zu verhindern, dass wenn man ein Template rendert, im Template auf Variablen zugegriffen werden kann, auf die nicht zugegriffen werden soll....z.B. $_SESSION
Ähm. D.h. jemand fremdes kümmert sich um deine Templates? Wieso solltest du sonst dich selber einschränken?!
Mit Zitat antworten
  #11 (permalink)  
Alt 18-11-2007, 21:42
shammes
 Newbie
Links : Onlinestatus : shammes ist offline
Registriert seit: Nov 2007
Beiträge: 6
shammes ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Vielen DAnk erstmal für all die antworten, hab sie eben erst lesen können, war nämlich am we unterwegs.

@arkos: ich bin definitiv kein freund von ajax, daher fällt diese variante erstmal flach....

@pekka: was meinst du mit manuell rausfiltern...????

@onemorenerd: das mit der __destruced()-Methode find ich schonmal einen ansatz, über den man nachdenken kann.....jedoch muss ich dann einen platz für die ersatzvariablen finden, sodass ich sie nicht immer und überall durchschliefen muss, aber zu gleich die templates nicht drauf zugreifen können....! pack ich sie in eine registry-klasse......so kommt das template da auch ran....pack ich sie als private in den frontcontroller, so muss ich den kram durchschleifen....ich werd mir das morgen mal ansehen, wie praktikabel das ist...mir wär halt schon lieber, wenn man expliziet für einen codeteil sagen könnte....hier gibts keinen zugriff auf die superglobals.. ;-)

@ModestLife: Ja

wünsche noch nen schönen sonntag
sebastian
Mit Zitat antworten
  #12 (permalink)  
Alt 18-11-2007, 22:56
ModestLife
 Registrierter Benutzer
Links : Onlinestatus : ModestLife ist offline
Registriert seit: Sep 2007
Beiträge: 105
ModestLife ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Dann nimm eine Template-Engine. Wenn du der Person nicht traust, die die Templates verwaltet, wieso dann PHP für die Templates einsetzen?
Mit Zitat antworten
  #13 (permalink)  
Alt 19-11-2007, 10:37
shammes
 Newbie
Links : Onlinestatus : shammes ist offline
Registriert seit: Nov 2007
Beiträge: 6
shammes ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Dann nenn mir eine Template-Engine die schnell ist, annähernd so mächtig wie PHP-selbst ist (in Bezug auf Ausgaben) und mit der man NICHT auf superglobals von PHP zugreifen kann.
Mit Zitat antworten
  #14 (permalink)  
Alt 19-11-2007, 10:45
PHP-Desaster
 PHP Expert
Links : Onlinestatus : PHP-Desaster ist offline
Registriert seit: Mar 2006
Beiträge: 3.105
PHP-Desaster befindet sich auf einem aufstrebenden Ast
Standard

Nicht unbedingt die schnellste aber weit verbreitet: Smarty
Mit Zitat antworten
  #15 (permalink)  
Alt 19-11-2007, 11:21
Xer0
 Newbie
Links : Onlinestatus : Xer0 ist offline
Registriert seit: Aug 2007
Beiträge: 60
Xer0 ist zur Zeit noch ein unbeschriebenes Blatt
Xer0 eine Nachricht über ICQ schicken
Standard

Wenn man Caching nutzen kann bei deinem Projekt ist Smarty schon in Ordnung von der Performance her!
Nicht das schnellste, aber in Ordnung finde ich!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

ADSMAN V3 - Werbe-Manager ansehen ADSMAN V3 - Werbe-Manager

ADSMAN V3 - mehr als nur ein Bannermanager! Banner, Textanzeigen und PagePeel Manager! Mit ADSMAN PRO haben Sie die Marketinglösung für eine effektive und effiziente Werbeschaltung mit messbaren Ergebnissen. Unterstützt werden Bannerformate in beliebi

25.10.2018 virtualsystem | Kategorie: PHP/ Bannerverwaltung
PHP News und Artikel Script V2

News schreiben, verwalten, veröffentlichen. Dies ist jetzt mit dem neuen PHP News & Artikel System von virtualsystem.de noch einfacher. Die integrierte Multi-User-Funktion und der WYSIWYG-Editor (MS-Office ähnliche Bedienung) ermöglichen...

25.10.2018 virtualsystem | Kategorie: PHP/ News
Top-Side Guestbook

Gästebuch auf Textbasis (kein MySQL nötig) mit Smilies, Ip Sperre (Zeit selbst einstellbar), Spamschutz, Captcha (Code-Eingabe), BB-Code, Hitcounter, Löschfunktion, Editierfunktion, Kommentarfunktion, Kürzung langer Wörter, Seiten- bzw. Blätterfunktion, V

22.10.2018 webmaster10 | Kategorie: PHP/ Gaestebuch
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:21 Uhr.