zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden content aus der db - was tun mit php??

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 19.05.2014, 06:42
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 03.05.2014
Beiträge: 72
knuff befindet sich auf einem aufstrebenden Ast
Standard content aus der db - was tun mit php??

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
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 19.05.2014, 09:17
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.896
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von knuff Beitrag anzeigen
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.
Es ist einfach unsicher, weil du damit Code ausführst dessen Quellen du nicht kennst.

Ansonsten wird es nicht klar, warum du der Meinung bist ubedingt PHP Code im Inhalt haben zu müssen. Das ist ungewöhnlich und es gibt eigentlich keinen Grund dafür.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 19.05.2014, 12:34
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 18.06.2007
Ort: Verden
Beiträge: 404
chorn wird schon bald berühmt werden
Standard

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.
Mit Zitat antworten
  #4 (permalink)  
Alt 19.05.2014, 17:50
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 03.05.2014
Beiträge: 72
knuff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
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.
meine benutzer meine app selbst programmieren? wie soll das gehen? ich mein wenn eval so unsicher ist, dann kommt das eh nicht für mich in frage, aber ich würd gern wissen was eval so unsicher macht?

Zitat:
Es ist einfach unsicher, weil du damit Code ausführst dessen Quellen du nicht kennst.
code dessen quellen ich nicht kenne? es ist doch mein code aus meiner db, den ich selbst dort reingelegt habe?

--------------------------------

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
Mit Zitat antworten
  #5 (permalink)  
Alt 19.05.2014, 18:02
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.896
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von knuff Beitrag anzeigen
meine benutzer meine app selbst programmieren? wie soll das gehen? ich mein wenn eval so unsicher ist, dann kommt das eh nicht für mich in frage, aber ich würd gern wissen was eval so unsicher macht?



code dessen quellen ich nicht kenne? es ist doch mein code aus meiner db, den ich selbst dort reingelegt habe?
Dann ist eval OK. Dann hast du nur noch das Problem, dass du damit natürlich deine Anwendung crashen kannst, aber das kannst du auch an anderer Stelle.
Dann ist aber die Frage, warum du PHP Code in deine Datenbank scheibst, da gehört er nicht hin.

Zitat:
Zitat von knuff Beitrag anzeigen
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???
Das kommt alles vor, wird aber nicht aus einer Datenbank gefüttert.

Zitat:
Zitat von knuff Beitrag anzeigen
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.
Das ist ein spezielles Problem. Wenn sowas spezielles in deinem Content auftaucht, hast du spezielle Inhalte, die in deiner Anwendung entsprechend geholt werden müssen. Aber die Variante des PHP Code in der Datenbank vorzuhalten, wäre der letzte Weg.
Er ist unsicher (s.o.), langsam und die Fehlersuche wird deutlich schwieriger.
Mit Zitat antworten
  #6 (permalink)  
Alt 19.05.2014, 23:45
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 03.05.2014
Beiträge: 72
knuff befindet sich auf einem aufstrebenden Ast
Standard

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>
in diesem beispiel wird einfach den input felder ein wert aus einer variablen übergeben aus dem registrierungs script. etwas ganz alltägliches, was man andauernd und immer wieder macht so oder so ähnlich und nicht nur bei formularen, sondern überall, in allen content arten, wo man etwas prüfen oder bearbeiten will und dann entschprechende meldungen, an gewünschter stelle ausgeben will. anstatt im tag kann dies auch im text sein oder in einer tabelle oder oder oder.

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)
Mit Zitat antworten
  #7 (permalink)  
Alt 20.05.2014, 09:20
Benutzerbild von inta
free as in freedom
XHTMLforum-Kenner
 
Registriert seit: 04.12.2006
Ort: Berlin
Beiträge: 5.025
inta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz seininta kann auf vieles stolz sein
Standard

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.
Mit Zitat antworten
  #8 (permalink)  
Alt 20.05.2014, 09:36
Benutzerbild von protonenbeschleuniger
Verbesserer
XHTMLforum-Kenner
 
Registriert seit: 06.09.2007
Beiträge: 4.896
protonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblickprotonenbeschleuniger ist ein wunderbarer Anblick
Standard

Zitat:
Zitat von knuff Beitrag anzeigen
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.
Genau, das ist eine der Besonderheiten von PHP. Aber das heißt nicht, dass PHP/HTML Code in eine Datenbank gehört.

Zitat:
Zitat von knuff Beitrag anzeigen
mal als beispiel ein kleines reg form:
Sowas gehört nicht in die Datenbank! Das ist Teil deiner Anwendung, aber kein Inhalt.

Zitat:
Zitat von knuff Beitrag anzeigen
ja toll habe ich nun in jedem zweiten content php ausgaben eingemischt, dann kann ich die hälfte meines contents nicht auslagern,
Woher hast du denn die Idee deinen Anwendungscode in eine Datenbank auszulagern?
Inhalte, also üblicherweise Texte gehörten in die Datenbank, aber keine Formulare.

Zitat:
Zitat von knuff Beitrag anzeigen
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.
Das wäre die Frage, welches Konzept du da verfolgst?
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.
Mit Zitat antworten
  #9 (permalink)  
Alt 21.05.2014, 03:54
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 13.07.2006
Beiträge: 748
mermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblickmermshaus ist ein wunderbarer Anblick
Standard

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
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 22.05.2014, 01:50
Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 03.05.2014
Beiträge: 72
knuff befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von mermshaus Beitrag anzeigen
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
habs mir so etwa bis zur hälfte durchgelesen, hatte weiter noch keine zeit sorry, aber ich kann nicht erkennen, was du an meinen kontextwechseln auszusetzen hast?


@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
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

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 aus


Ähnliche Themen
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


Alle Zeitangaben in WEZ +2. Es ist jetzt 10:02 Uhr.