AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

PHP {Variable}

Ein Thema von youuu · begonnen am 23. Jul 2009 · letzter Beitrag vom 24. Jul 2009
Antwort Antwort
Seite 2 von 2     12   
Zwoetzen

Registriert seit: 19. Sep 2007
Ort: Ilmenau
93 Beiträge
 
Delphi 2009 Professional
 
#11

Re: PHP {Variable}

  Alt 23. Jul 2009, 20:31
Das sollte dann ungefähr so aussehen:
Code:
$string = file_get_contents("nachricht.txt");
foreach(array('email', 'homepage', 'telefon', 'nachricht') as $var) {
  $string = str_replace('{'.$var.'}', $$var, $string);
}
Vielleicht noch als Erklärung:
$$var greift auf die Variable zu, die in $var steht, also in diesem Fall jeweils auf $email, $homepage, $telefon und $nachricht. Letzteres ist der Grund, weshalb ich dein $nachricht in ein $string umbenannt habe, um eine Kollision gleicher Variablennamen zu vermeiden
  Mit Zitat antworten Zitat
Christian V.

Registriert seit: 15. Apr 2007
5 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: PHP {Variable}

  Alt 23. Jul 2009, 23:01
Zitat von youuu:
Das habe ich mir auch gedacht, nur in was muss ich es ersetzen damit php es als Variable erkennt?
Das sind meine ersten php Versuche

Als ich in der txt direkt $variable geschrieben habe, wurde dies nicht als variable erkannt.
Mit file_get_contents geht das gar nicht. Es liest bloss den Inhalt einer Datei aus, ohne sie zu interpretieren.

Zwoetzen's Beispiel zeigt, wie man mit wenig Code dein Problem lösen kann. Falls du jedoch komplexere Templates willst(z.B. mit Logik), dann kannst du das folgendermassen lösen:
ob_start();
include 'nachricht.txt.;
$nachricht = ob_get_clean();


Damit dies funktioniert, musst du aber in nachricht.txt den normalen PHP-Syntax verwenden: <?php echo $email ?> etc, oder:
<?php echo <<<PARSEEND
Email: $email
Homepage: $homepage
Telefonnummer: $telefon
------------------------------------

Nachricht: $nachricht
PARSEEND
?>

Dies ist Heredoc-Syntax
http://ch.php.net/manual/en/language...syntax.heredoc
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#13

Re: PHP {Variable}

  Alt 24. Jul 2009, 09:43
Zitat von youuu:
Zitat von generic:
du solltest eine Templateengine nehmen, das ist performater als ein Replace.

Smarty und PEAR:DB - das DreamTeam

Im aktuellen PHP User Magazin ist auch gerade ein neuerer Artikel über das Thema von mir.
Hierbei geht es eigentlich lediglich um ein Kontaktformular, ich denke das wäre dann soetwas wie mit Kanonen auf Spatzen schießen oder irre ich mich da?
Ach NUR ein Kontakt-Formular

Da sehe ich doch schon viele GROßE Probleme auf dich zu kommen.
Formulare ist das schwierigste was es im Web gibt!

PHP ist gut um schnell etwas hin zu bekommen, nur leider muss das was dort gemacht wird auch Hand und Fuß haben. Mit PHP kann man schnell unsicher Programmieren. Besonders gefährlich ist es wenn man neu in PHP einsteigt, so kennt man die Standardangriffe nicht.
Wenn du jetzt sagt, ach mein Server wird nicht angegriffen, dann irrst du. Jeder Server wird angegriffen! Da laufen Millionen von Bots durch Netz und suchen nach Lücken und Formularen. Das machen die natürlich vollautomatisch.

Du solltest folgende Dinge beachten:
  • ist das Formular kundenfreundlich? bei Fehler werden die Felder wieder ausgefüllt und wird gezeigt was der Kunde falsch gemacht hat
  • kann das Formular missbraucht werden mit Cross Site Scripting (XSS)
  • kann das Formular missbraucht werden als Spam Releay
  • ist dein Formular sicher gegen SQL Injections (wenn SQL genutzt wird)
  • kann das Formular missbraucht werden um deinen Server kaputt zu machen bzw. Daten abzurufen, welche normal nicht zugänglich sind
  • wie werden die Daten zu dir übermittelt (mail/http/sms/sql)?
  • werden die Kundendaten verschlüsselt -> Thema Datenschutz
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#14

Re: PHP {Variable}

  Alt 24. Jul 2009, 10:54
Zitat von generic:
du solltest eine Templateengine nehmen, das ist performater als ein Replace.
Wieso? Jede Template-Engine, die selber auch in PHP geschrieben ist verwendet doch die gleichen Befehle zum Suchen und Ersetzen. Teilweise wird noch ein interner DOM aufgebaut.. Also performanter kann das nicht sein. Aufgrund des Abstraktionsaufwands würde ich sogar eher auf langsamer tippen (hab jetzt allerdings keine Benchmarks). Wenn man dann noch mit Sub-Templpates arbeitet wird's richtig langsam.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#15

Re: PHP {Variable}

  Alt 24. Jul 2009, 12:16
Zitat von mquadrat:
Zitat von generic:
du solltest eine Templateengine nehmen, das ist performater als ein Replace.
Wieso? Jede Template-Engine, die selber auch in PHP geschrieben ist verwendet doch die gleichen Befehle zum Suchen und Ersetzen. Teilweise wird noch ein interner DOM aufgebaut.. Also performanter kann das nicht sein. Aufgrund des Abstraktionsaufwands würde ich sogar eher auf langsamer tippen (hab jetzt allerdings keine Benchmarks). Wenn man dann noch mit Sub-Templpates arbeitet wird's richtig langsam.
Nein, Nein und Nein.

Klar gibt es nicht optimale Lösungen, das sind auch genau die, welche du erwähnst.

Smarty in diesem Beispiel ist anders.

Smarty nutzt auch Templates und baut diese irgendwie zusammen. Das macht jede Templateengine.
Die Templates sind auch eigentlich nur für den Designer, damit dieser designen kann und sich nicht mit PHP Code rumärgern muss. Templateengines helfen dir auch, deinen Code sauber von der Anzeige zu trennen. Ergebnis ist besser wartbarer Code.

Smarty erzeugt aus einen Template PHP Code, welcher zwischen gespeichert wird.
Das hat viele Vorteile! Das Parsen des Templates entfällt (es sei den das Template hat sich geändert) und das in PHP vorliegende Template kann über APC oder ZendOptimizer weiter optimiert werden, da der "PHP-Compiler/Parser" nicht mehr aufgerufen werden muss.

Dadurch ist Smarty flink.

Du gewinnst durch Templateengines noch vieles mehr.
Du kannst viel leichter deine Ausgaben steuern, formatieren und umwandeln.
Natürlich kannst du auch einfach den Output Cachen, was zu weiteren Geschwindigkeitsvorteilen führt.

"Abstraktionsaufwands" vs "Wartbarkeit und Wiederverwendbarkeit"
Die meisten Systeme und Frameworks setzten inzwischen auf das MVC Pattern.
Du kannst aber auch schmale Lösungen wählen.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#16

Re: PHP {Variable}

  Alt 24. Jul 2009, 12:34
@generic

Die Argumente für eine Template-Engine sind mir durchaus klar Ich arbeite in meinen Projekten mit einer eigenen Engine, inkl. UI Control Framework, DataBinding etc etc... MVC hat nichts mit dem Parsing von Template-Engines allgemein zu tun. Bytecode-Caching kann / sollte man immer verwenden. Darum geht's in diesem Thema ja auch gar nicht.

Ich merkte nur an, dass man nicht allgemein sagen kann, dass eine Template-Engine, die in PHP geschrieben ist schneller ist als PHP Code Das in einer Engine ggf. noch Mechanismen zum Vermeiden des Parsings enthalten sind ist sinnvoll und im Ergebnis ist die Anwendung tatsächlicher performanter. Das eigentliche Parsing aber eben halt nicht, dafür müsste die Engine wohl als PHP Extension ausgelegt sein.

Was mich zu der Frage bringt: Gibt es eigentlich Template Engines, die als PHP Extension implementiert sind? Das wäre aber wohl eher ein Punkt für ein eigenes Thema.


Die Frage des Thread-Erstellers ist auf jeden Fall durch die Möglichkeiten

- Stringfunktionen
- RegExp
- Template-Engine

beantwortet.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.416 Beiträge
 
Delphi XE5 Professional
 
#17

Re: PHP {Variable}

  Alt 24. Jul 2009, 13:15
Zitat von mquadrat:
- Stringfunktionen
- RegExp
- Template-Engine
Ich würde von der Benutzung von Stringersetzungsroutinen absehen.
Schneller geht es wenn die Platzhalter in PHP Syntax geschrieben werden.
<?php echo $var?> oder die Kurzform <?=$var?>.

Dann das Template einfach mit "include" einbinden und dabei ausgeben lassen.
Das sollte immer noch einfacher und schnell sein, als per suchen und ersetzen.
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#18

Re: PHP {Variable}

  Alt 24. Jul 2009, 13:16
@generic

stimmt
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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 aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz