|
|||
![]()
Hallo zusammen,
ich binde meinen content aus der db, allerdings kann man aus der db kein PHP ausführen, zumindest nicht direkt. wenn es nur darum geht "führe das aus wenn das ist" oder so, dann ist es ja kein problem, dann lagert man den conten innerhalb der if-bedingung einfach aus, aber was tun wenn sich php in den content mischt. z.b. man hat ne tabelle und in bestimmten spalten sollen meldungen ausgegeben werden oder man hat einfach einen umfangreichen html content in dem an verschiedenen stellen ausgaben über php echo eingebunden sind o.ä.. ich bin schon die ganze zeit am grübeln, aber ich finde keine zufriedenstellende und ordentliche lösung. ich habe schon an vielen stellen von einer funktion namens eval() gelesen, diese soll php content aus der db ausführen, aber auch immer wieder den hinweis dazu, dass man dies nicht so machen sollte, weil es unsicher sei. nun wenn dem so ist scheidet diese möglichkeit für mich aus, aber dennoch würde ich mich freuen, wenn mir jemand erklärt warum das unsicher ist, denn in allen beiträgen, wo ich davon gelesen habe, haben alle immer nur gesagt unsicher, aber nie warum. außerdem habe ich mir überlegt den content irgendwie aus der db zu holen und über eine function zusammenbauen zu lassen, wo man dann ja auch php content mit einbringen könnte, aber dies kann man ja nur für festgelegte aufgaben tun. damit meine ich man muss der funktion ja schon vorgeben, wie der content aussehen soll und wo der php content eingepflegt werden muss, dies muss sehr speziell und gezielt vorgegeben werden, aber da der content ja immer anders aussieht und auch der unter gemischte php content immer anders und an anderen stellen ist, sehe ich da keine möglichkeit eine allgemeingültige funktion zu schreiben. und würde ich gezielt für jeden content eine spezielle funktion schreiben, dann ist das auslagern wieder überflüssig, weil ich unendlich viele funktionen hätte. hat jemand einen vorschlag für mich wie ich das problem lösen kann? mir is klar das es auch die möglichkeit gibt den content zu includen, aber ich möchte gerne bei der db version bleiben, daher würde ich mich freuen, wenn ihr vorschläge in dieser richtung für micht hättet. danke. gruß knuff |
Sponsored Links |
Sponsored Links |
|
|||
![]()
Also wenn du unbedingt Code aus der DB ausführen willst, damit deine Benutzer deine App selber programmieren können, dann eval() - mit allen (gravierenden!) Nachteilen.
Oder du baust dir da deine eigene Sprache + Interpreter drum herum, siehe Smarty oder Typoscript. Aber beschreib doch erstmal dein Problem, was du überhaupt machen willst, deine Frage gibt es oft und meistens gibt es bessere Lösungen. |
|
|||
![]() Zitat:
Zitat:
-------------------------------- es geht um kein spezielles problem, sondern wie oben beschrieben um ein grundsätzliches problem. ich bin grad verwundert habt ihr nie php im html content? habt ihr nie formulare denen ihr für den wiederaufruf werte mit gebt? habt ihr nie tabellen, wo ihr hinter der zeile eine meldung ausgeben wollt? habt ihr nie html content in dem vielleicht userdaten auftauchen, wie zb name, gebdatum o.ä? habt ihr nie eine if anweisung, wo im else ein echo steht und ihr dieses an einer ganz bestimmten stelle im html content ausgeben wollt??? ich habe kein spezielles problem, sondern vielmehr grundsätzlich das problem, dass sobald ich auch nur eine variable in den html content lege, wie zb. den usernamen oder eben in einem form oder sonstwas, dann kann ich das auslagern in die db gleich knicken. gruß knuff |
|
||||
![]() Zitat:
Dann ist aber die Frage, warum du PHP Code in deine Datenbank scheibst, da gehört er nicht hin. Zitat:
Zitat:
Er ist unsicher (s.o.), langsam und die Fehlersuche wird deutlich schwieriger. |
|
|||
![]()
hmm irgendwie verstehe ich nicht warum das für euch so ungewöhnlich ist das php content sich unter html content mischt. das hat man doch andauernd.
mal als beispiel ein kleines reg form: HTML-Code:
<form action="index.php?page=registrierung" method="POST"> <table id="tableRegister"> <tr><td>Benutzername:</td><td><input class="textfeld" type="text" name="ruser" placeholder="Benutzername" value="<?php echo $ruser; ?>" /></td></tr> <tr><td>E-Mail:</td><td><input type="text" name="email" placeholder="E-Mail" value="<?php echo $email; ?>" /></td></tr> <tr><td>E-Mail Wiederholung:</td><td><input class="textfeld" type="text" name="remail" placeholder="E-Mail Wiederholung" value="<?php echo $remail; ?>" /></td></tr> <tr><td>Passwort:</td><td><input type="password" name="rpass" placeholder="Passwort" value="<?php echo $rpass; ?>" /></td></tr> <tr><td>Passwort Wiederholung:</td><td><input class="textfeld" type="password" name="rrpass" placeholder="Passwort Wiederholung" value="<?php echo $rrpass; ?>" /></td></tr> </table> </form> ich versteh nicht ganz warum ihr das für so ungewöhnlich haltet? nun is bei obigen beispiel das problem das man diesen content nicht mehr in die datenbank auslagern kann, um ihn dann über eine entsprechende funktion auszulesen, weil diese kleinen kurzen anweisungen "<?php echo $ruser; ?>" machen dies unmöglich. ja toll habe ich nun in jedem zweiten content php ausgaben eingemischt, dann kann ich die hälfte meines contents nicht auslagern, sagen wir ich hab 20 unterseiten und auf 10 unterseiten mischen sich php ausgaben in den content, na super kann ich 10 seiten nicht in die db auslagern, was den grundgedanken des content auslagerns in die db dann über den haufen wirft. bringt mir dann doch nichts mehr wenn ich jeden zweiten content nicht auslagern kann. das php ausgaben in html content is doch ne ganz alltägliche sache, also muss es dafür doch ne lösung geben, kann doch nicht sein das ich dann jede zweite seite nicht in die db auslagern kann. wofür lager ich dann überhaupt in die db, wenn ich vieles nicht auslagern kann? die hälfte lager ich in die db aus und die andere hälfte include ich? dann hab ich ja ein wildes durcheinander und kein logisches konzept mehr dahinter. daran is doch nichts ungewönliches oder spezielles? bin verwundert? gruß knuff Geändert von knuff (19.05.2014 um 23:48 Uhr) |
|
||||
![]()
Es ist nicht ungewöhnlich Ausgaben im Template zu haben, es ist ungewöhnlich ein Template in die DB stecken zu wollen. Was versprichst du dir davon? Im Inhalt gibt es in der Regel tatsächlich kein PHP, mir fällt nichts ein wo das sinnvoll wäre. Falls doch, kannst du mit einem Templatesystem wie zum Beispiel Twig arbeiten, dann umgehst du eine dreckige und gefährliche Lösung mittels eval.
Dein Beispiel ist ein Template, kein Inhalt. Die Label (die du leider nicht als label kenntlich gemacht hast) werden üblicher Weise über ein Translation-System vom Template entkoppelt. Schau dir doch mal ein paar gestandene Frameworks an, dann siehst du wie üblicher Weise verfahren wird. Da bieten sich zum Beispiel Symfony oder wenn es etwas kleiner sein soll Silex an, dazu gibt es hervorragende Bücher frei verfügbar auf den Herstellerseiten. |
|
||||
![]() Zitat:
Sowas gehört nicht in die Datenbank! Das ist Teil deiner Anwendung, aber kein Inhalt. Zitat:
Inhalte, also üblicherweise Texte gehörten in die Datenbank, aber keine Formulare. Zitat:
Das was du jetzt machst ist ein wildes durcheinander. Du mischt HTML, Inhalt und Anwendungscode und packst es an den Ort wohin nur Daten gehören. Auslagern macht man im Prinzip auch nicht, man entkoppelt wie Inta schon sagt, d.h. du versucht verschiedenen Aufgaben voneinander zu trenen. |
|
|||
![]()
Ist hier wohl eher ein Randaspekt, aber informiere dich auch mal zum Thema XSS, wenn du das nicht schon getan hast. Zumindest in #6 fehlt mir die Behandlung von Kontextwechseln.
- Artikel:Kontextwechsel |
Sponsored Links |
|
|||
![]() Zitat:
@all: aus euren posts schließe ich, ich sollte vielleicht nochmal meine definition von content überdenken. was genau ist eigentlich content und was nicht? ok noch keine lösung, aber vielleicht eine erkenntnis, die zu einer lösung führt. ich danke euch. ![]() gruß knuff |
Sponsored Links |
![]() |
Themen-Optionen | |
Ansicht | |
|
|
![]() |
||||
Thema | Autor | Forum | Antworten | Letzter Beitrag |
Probleme mit meinem content wrapper | d3x | CSS | 10 | 13.10.2010 16:00 |
Tabellen als Div Container | SpecialFighter | (X)HTML | 7 | 12.10.2010 17:40 |
Seite wird nicht richtig angezeigt | chrissie65 | CSS | 9 | 27.06.2010 12:11 |
Dateien auslagern - Include und PHP | ArcVieh | Serveradministration und serverseitige Scripte | 17 | 27.03.2008 18:09 |
Kleines Problem mit div - float:left | RollingStones | CSS | 1 | 30.08.2007 18:32 |