Webdesign in Siegen

PHP aus Datenbank

Fragen zum Thema PHP können hier gestellt werden

Moderator: Basti

PHP aus Datenbank

Beitragvon =Max= am 01.04.2008, 15:24

Beim umstellen des CMS was ich benutze auf Datenbank. (vorher: Inhalte in Dateien) fiel mir gerade was auf. Die Datei, die die Inhalte aus der Datenbank ausgibt sieht folgendermaßen aus:

norm.php
Code: Alles auswählen
<?php

$inhalt = mysql_query("SELECT * FROM ".$prefix."panels WHERE id = '$panel[id]'");
   $inhalta = mysql_fetch_array($inhalt);

$pagetext = $inhalta["inhalt"];

if(empty($pagetext)) {
   echo "Diese Seite besitzt noch keinen Inhalt";
} else {
   echo "$pagetext";
}

?>


Aber wenn man PHP Code hat wirds bisschen Kompliziert und ich denke bei HTML mit " auch. Habe aber keine Ahnung wie ich das lösen kann... Hat da jemand ahnung von euch?

Lg,
=Max=
=Max=
Mitglied
 
Beiträge: 404
Registriert: 14.01.2007

Re: PHP aus Datenbank

Beitragvon Basti am 01.04.2008, 16:58

Wie meinst du das? Soll in der Datenbank auch ausführbarer PHP Code stehen der dann "ausgegeben" wird? Bei HTML sollte es jedenfalls keine Probleme geben, da es sich ja um einen einfachen String handelt, der ausgeben wird. Es ist aber besser, wenn du bestimmte Zeichen vor dem Speichern in der Datenbank maskierst, so zum Beispiel ein " in &quot; umwandeln lässt.

PHP Code "auszugeben" dürfte schwierig werden bzw. ist nicht sehr ratsam, da es einerseits ein gewisses Sicherheitsrisiko birgt und andererseits auch nicht so sinnvoll ist. Wenn du unbedingt PHP Scripts benötigst, so schreibe sie wirklich in die PHP Dateien, da es sonst unnötig kompliziert wird.

Dein PHP Code ist auch noch ein bisschen verbesserungsfähig:

Code: Alles auswählen
<?php

$panel_id = $panel['id'];
$abfrage = mysql_query("SELECT inhalt FROM {$prefix}panels WHERE id = '$panel_id'");
$inhalt = mysql_fetch_array($abfrage);

$pagetext = $inhalt['inhalt'];

if(empty($pagetext)) {
   echo 'Diese Seite besitzt noch keinen Inhalt';
} else {
   echo $pagetext;
}

?>


Also zum einen sind die Variablenbenennungen nicht so günstig gewählt, was vorallem das Verständnis erschwert wenn deine Quelltexte mal länger werden. Dann solltest du auch nicht das Asterisk (*) bei der MySQL-Abfrage verwenden, da du ja anscheinend nur die Spalte inhalt abrufst und somit den Rest ja nicht unnötigerweise mit abrufen musst.

Und beim Ausgeben von einfachen Variablen brauchst du diese auch nicht in Anführungsstrichen zu schreiben. Bei doppelten Anführungsstrichen ist es dann aber so, dass Variablen auch geparst werden, du sie also nicht mehr extra durch "." vom normalen String abtrennen musst. Wenn aber keine Variablen vorkommen, reichen auch einfache Anführungsstriche.
Benutzeravatar
Basti
Moderator
 
Beiträge: 1889
Registriert: 15.06.2006
Wohnort: Rheinbreitbach

Re: PHP aus Datenbank

Beitragvon =Max= am 01.04.2008, 17:09

Aber ich kann mir nicht aussuchen ob ich mal in Dateien oder mal in Datenbank schreibe. Und angenommen ich habe PHP Code, dann müsste ich ja includen, und das müsste ich ja dann auch irgendwie ausgeben ;)
=Max=
Mitglied
 
Beiträge: 404
Registriert: 14.01.2007

Re: PHP aus Datenbank

Beitragvon Basti am 01.04.2008, 17:26

Wenn du PHP Dateien in eine andere Datei einbindest, ist das ja keine Ausgabe von PHP Code, dadurch wird ja nur der enthaltende Code ausgeführt.

Irgendwie verstehe ich gerade aber nicht ganz dein Problem.
Benutzeravatar
Basti
Moderator
 
Beiträge: 1889
Registriert: 15.06.2006
Wohnort: Rheinbreitbach

Re: PHP aus Datenbank

Beitragvon =Max= am 01.04.2008, 17:30

Angenommen ich Speichere z.b. in dem Panel vom meinem CMS den Code:

Code: Alles auswählen
<?php
echo "Hallo";
?>


Das wird dann in der Datenbank in der Spalte "Inhalt" gespeichert. Durch den obenstehenden Code wird per Echo das wieder ausgegeben. Und zwar steht dann da
<?php
echo "Hallo";
?>
und nicht Hallo!!!
Das meine ich damit ;)
=Max=
Mitglied
 
Beiträge: 404
Registriert: 14.01.2007

Re: PHP aus Datenbank

Beitragvon Basti am 01.04.2008, 18:13

Naja, optimal ist es nicht unbedingt solche Scripte über MySQL Datenbanken zu verwenden. Ich würde an deiner Stelle überlegen, ob es nicht vielleicht eine andere Lösung gibt die besser dafür ist, da diese Variante nicht nur rechenintensiv ist sondern eben auch ein gewisses Sicherheitsrisiko birgt.

Wenn du es für den Anfang aber unbedingt so machen möchtest, hast du mit der Funktion eval() die Möglichkeit, einen String als PHP Code auszuwerten.
Benutzeravatar
Basti
Moderator
 
Beiträge: 1889
Registriert: 15.06.2006
Wohnort: Rheinbreitbach

Re: PHP aus Datenbank

Beitragvon Avedo am 01.04.2008, 18:33

Ich halte mich bei eval() eigentlich auch gerne an den Spruch "eval() ist evil!". Es birgt ein hohes Sicherheitsrisiko und zudem spinnen Anwendungen die damit arbeiten sehr häufig. Ich würde PHP-Code niemals in einer DB speichern, sondern immer in eigene Dateien. Templates oder Inhalte können in eine DB, aber keine Scripte.
MfG, Andy
Ich bin zu Mimis Religion konvertiert!
I'm so tired of slitting the throats of people calling me a violent psychopath.
Benutzeravatar
Avedo
Mitglied
 
Beiträge: 553
Registriert: 09.12.2007
Wohnort: Göttingen


Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast