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 Bewertung: Bewertung: 5 Stimmen, 5,00 durchschnittlich.
  #1 (permalink)  
Alt 19-07-2008, 16:05
UzumakiNaruto
 Registrierter Benutzer
Links : Onlinestatus : UzumakiNaruto ist offline
Registriert seit: Nov 2004
Beiträge: 642
UzumakiNaruto befindet sich auf einem aufstrebenden Ast
Standard [PHP5] eval problem

hi leute,

evtl liegt auch nur ein verständnisproblem vor

Inhalt einer PHP-Datei in einen String schreiben TRUE
PHP-Code aus dem String ausführen TRUE
"Ausgabe" mittels return zurückgeben FALSE

eval gibt sofort sein ergebnis sofort aus .. aber DAS ist nicht in meinem interesse .. wüsstet ihr dort eine möglichkeit?
Den so bin ich im moment an der gleichen stelle wie ich mit include gewesen wäre.

thx schonmal im voraus
__________________
Gruß
Uzu

private Homepage
Mit Zitat antworten
  #2 (permalink)  
Alt 19-07-2008, 16:10
Blackgreetz
 PHP Junior
Links : Onlinestatus : Blackgreetz ist offline
Registriert seit: Oct 2005
Beiträge: 901
Blackgreetz ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wenn ich dich richtig verstanden habe, suchst du:

ob_start

mfg
ps: geht auch beim include..
Mit Zitat antworten
  #3 (permalink)  
Alt 19-07-2008, 16:15
UzumakiNaruto
 Registrierter Benutzer
Links : Onlinestatus : UzumakiNaruto ist offline
Registriert seit: Nov 2004
Beiträge: 642
UzumakiNaruto befindet sich auf einem aufstrebenden Ast
Standard

thx .. sieht schonmal super aus.

dann muss ich in der funktion die das return erwartet nur noch ob_end_flush() ausführen?!?!?!

EDIT:

scheint so nicht zu klappen



PHP-Code:
class LoadContent
{
   
#[...]
   
public function LoadContent($module_name$file_name "")
   {
      
#[...]
      
$template_content = new Template(LoadConfig::getData("theme_dir")."template_content.html");
      
$template_content->replace("title"$module_name);
      
$template_content->replace("text"$this->getModule());
      echo 
$template_content->echo_template();
   }

   private function 
getModule()
   {
      return 
$this->checkModule();
      
ob_end_flush();
   }

   private function 
checkModule()
   {
      
#[...]
   
}

   private function 
loadModule($path_to_file)
   {
      
$fp fopen($path_to_file'r');
      while (
$file fgets($fp))
      {
         
$input .= $file;
      }
      
fclose($fp);

      
ob_start();
      eval(
$input);
   }

__________________
Gruß
Uzu

private Homepage

Geändert von UzumakiNaruto (19-07-2008 um 16:18 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 19-07-2008, 16:18
Blackgreetz
 PHP Junior
Links : Onlinestatus : Blackgreetz ist offline
Registriert seit: Oct 2005
Beiträge: 901
Blackgreetz ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Wenn es so im Manual steht -hust-
Mit Zitat antworten
  #5 (permalink)  
Alt 19-07-2008, 16:24
UzumakiNaruto
 Registrierter Benutzer
Links : Onlinestatus : UzumakiNaruto ist offline
Registriert seit: Nov 2004
Beiträge: 642
UzumakiNaruto befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von Blackgreetz
Wenn es so im Manual steht -hust-
so wie ich das will will php das nicht ... eval schreibt es dennoch sofort
__________________
Gruß
Uzu

private Homepage
Mit Zitat antworten
  #6 (permalink)  
Alt 19-07-2008, 16:25
Blackgreetz
 PHP Junior
Links : Onlinestatus : Blackgreetz ist offline
Registriert seit: Oct 2005
Beiträge: 901
Blackgreetz ist zur Zeit noch ein unbeschriebenes Blatt
Standard

dann wäre es eventuell sinnvoll etwas code zu zeigen...

mfg
Mit Zitat antworten
  #7 (permalink)  
Alt 19-07-2008, 16:28
UzumakiNaruto
 Registrierter Benutzer
Links : Onlinestatus : UzumakiNaruto ist offline
Registriert seit: Nov 2004
Beiträge: 642
UzumakiNaruto befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von Blackgreetz
dann wäre es eventuell sinnvoll etwas code zu zeigen...

mfg
richte mal deine augen nach oben .. dort findest du welchen
__________________
Gruß
Uzu

private Homepage
Mit Zitat antworten
  #8 (permalink)  
Alt 19-07-2008, 16:35
Blackgreetz
 PHP Junior
Links : Onlinestatus : Blackgreetz ist offline
Registriert seit: Oct 2005
Beiträge: 901
Blackgreetz ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Falls sie mit dem Puffer-Inhalt weiter arbeiten möchten, müssen sie diesen erst per ob_get_contents() zwischen speichern bevor sie ob_end_flush() aufrufen, da dadurch der Puffer geleert wird.

Diese Funktion ähnelt ob_get_flush(), liefert aber nur den Erfolgsstatus statt des aktuellen Pufferinhalts zurück.
Dies sagt php.net zu ob_end_flush() ...

Wolltest du das, oder den Inhalt?
Dachte mein -hust- wäre eindeutig, falls ich dich richtig verstanden hatte..

Btw: Warum schreibst du deine Funktion in PHP4/5 statt 5? ..

..Ich weiß allerdings nicht, ob solch eine Output Controll auch bei Klassen funktioniert und hab auch gerade keine Lust, es selber zu testen..

mfg
Mit Zitat antworten
  #9 (permalink)  
Alt 19-07-2008, 16:43
UzumakiNaruto
 Registrierter Benutzer
Links : Onlinestatus : UzumakiNaruto ist offline
Registriert seit: Nov 2004
Beiträge: 642
UzumakiNaruto befindet sich auf einem aufstrebenden Ast
Standard

ich möchte verhindern das eval vorschnell den inhalt sendet ... sondern eigentlich den rückgabewert von eval als return übergeben .. damit ich das ganze in das template-system bekomme.

also php5 ist installiert .. und so ganz bin ich nicht mit den versionsunterschieden vertraut, den ich denke du erkennst am programmcode die vermeindliche php-version.

auch das ob_get_contents() hatte mir nichts gebracht

PHP-Code:
ob_start();
eval(
$input); 
funktioniert ja schon nicht ... den wenn ich weder ob_get_contents() und ob_end_flush() benutze, kommt dennoch der inhalt von eval .. und zwar als echo sofort.
__________________
Gruß
Uzu

private Homepage
Mit Zitat antworten
  #10 (permalink)  
Alt 19-07-2008, 16:44
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

Nach einem return kannst du dir jeglichen weiteren Code sparen. Er wird niemals ausgeführt.

Imho ist es sehr schlechter Stil, in einer Methode das Output Buffering zu starten und in einer anderen zu beenden, auch wenn beide Methoden private sind. Damit erzwingst du, dass beide Methoden immer paarweise und in richtiger Reihenfolge aufgerufen werden. Dieser Zwang drückt sich aber nirgendwo aus, man muss schon den Code kennen. In einem Jahr wirst du ihn selbst nicht mehr im Kopf haben und ich wünsche viel Spaß beim Debugging.

Last but not least ist die Methode loadModule() doch eigentlich nichts anderes als ein require. Wieso baust du das so umständlich nach?
Mit Zitat antworten
  #11 (permalink)  
Alt 19-07-2008, 16:48
UzumakiNaruto
 Registrierter Benutzer
Links : Onlinestatus : UzumakiNaruto ist offline
Registriert seit: Nov 2004
Beiträge: 642
UzumakiNaruto befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von onemorenerd
Nach einem return kannst du dir jeglichen weiteren Code sparen. Er wird niemals ausgeführt.

Imho ist es sehr schlechter Stil, in einer Methode das Output Buffering zu starten und in einer anderen zu beenden, auch wenn beide Methoden private sind. Damit erzwingst du, dass beide Methoden immer paarweise und in richtiger Reihenfolge aufgerufen werden. Dieser Zwang drückt sich aber nirgendwo aus, man muss schon den Code kennen. In einem Jahr wirst du ihn selbst nicht mehr im Kopf haben und ich wünsche viel Spaß beim Debugging.

Last but not least ist die Methode loadModule() doch eigentlich nichts anderes als ein require. Wieso baust du das so umständlich nach?
das ob_start() etc kannte ich bis eben nicht und kenne somit vor und nachteile des ganzen spieles nicht.

include/require erfüllen meine anforderungen ja nicht, da include/require SOFORT ausgeben und nicht zu einem zeitpunkt wenn ich es wünsche und ich somit den inhalt an eine bestimmte stelle im template-system bekomme
__________________
Gruß
Uzu

private Homepage
Mit Zitat antworten
  #12 (permalink)  
Alt 19-07-2008, 16:50
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ist es denn so schwer?

PHP-Code:
ob_start();
include_once(
$file);
$parsed_content ob_get_contents();
ob_end_clean(); 
Mit Zitat antworten
  #13 (permalink)  
Alt 19-07-2008, 16:58
UzumakiNaruto
 Registrierter Benutzer
Links : Onlinestatus : UzumakiNaruto ist offline
Registriert seit: Nov 2004
Beiträge: 642
UzumakiNaruto befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von 3DMax
ist es denn so schwer?

PHP-Code:
ob_start();
include_once(
$file);
$parsed_content ob_get_contents();
ob_end_clean(); 
schwer nicht .. aber anscheinend nicht die lösung meines problemes
jetzt habe ich aber den inhalt der php datei an der richtigen stelle .. aber wenn ich den dann mit eval "ausführen" lasse wird er wieder als eche ausgegeben und ist nicht mehr an der richtigen stelle.
__________________
Gruß
Uzu

private Homepage
Mit Zitat antworten
  #14 (permalink)  
Alt 19-07-2008, 17:14
3DMax
 PHP Senior
Links : Onlinestatus : 3DMax ist offline
Registriert seit: Jan 2004
Beiträge: 1.916
3DMax ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von UzumakiNaruto
... aber anscheinend nicht die lösung meines problemes
jetzt habe ich aber den inhalt der php datei an der richtigen stelle .. aber wenn ich den dann mit eval "ausführen" lasse wird er wieder als eche ausgegeben und ist nicht mehr an der richtigen stelle.
verstehe ich nicht, mit dem schnipsel erhälst du den php-interpretierten inhalt und eval ist überflüssig.
Mit Zitat antworten
  #15 (permalink)  
Alt 19-07-2008, 17:16
Blackgreetz
 PHP Junior
Links : Onlinestatus : Blackgreetz ist offline
Registriert seit: Oct 2005
Beiträge: 901
Blackgreetz ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@Uzumaki: include ^= fopen + eval ... wenn du so willst

Zitat:
ps: geht auch beim include..
Hatte ich schon ganz am Anfang gesagt :/

mfg
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

ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script ansehen ebiz-trader 6.0 - Das professionelle PHP Marktplatz Script

Mit unserer Lösungen können Sie nahezu jeden B2B / B2C Marktplatz betreiben den Sie sich vorstellen können. Ganz egal ob Sie einen Automarktplatz, Immobilenportal oder einfach einen Anzeigenmarkt betreiben möchten. Mit ebiz-trader können Sie Ihre Anforder

11.10.2018 Berni | Kategorie: PHP/ Anzeigenmarkt
PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 07:05 Uhr.