SteviesWebsite

Lokale Meta-Daten speichern / auslesen

Code & Blog Logo

Code & Blog Logo

Die lokalen Meta-Daten werden pro Seite gespeichert. Hierfür gibt es die Tabelle cms_meta_global. Sie hat 3 Spalten, eine für den Namen der Eigenschaft, eine für die Seitenid und eine für den Inhalt. Der SQL-Query dafür sieht so aus.

CREATE TABLE `cms_meta_local` (
`name` VARCHAR( 100 ) NOT NULL ,
`page` integer NOT NULL ,
`content` VARCHAR( 100 ) NOT NULL ,
PRIMARY KEY ( `name` )
) TYPE = MYISAM


Um das nachher zu testen, benötigen wir ein paar Einträge. Hierfür habe ich die keywords und description der Seite testseite(id 1) hinzugefügt.

INSERT INTO `cms_meta_local` ( `name` , `page` , `content` )
VALUES (
'description', '1', 'Die ist eine Testseite'
), (
'keywords', '1', 'Test'
);

Nun muss die Datei sys ergänzt werden. Hierfür wird einfach der SQL-Befehl zum auslesen der Globalen Meta-Tags erweitert. Dies geschieht mit einem zweitem Select, welcher über Union einfach angehängt wird. Mit dem Left Join, können wir die Bindung hinzufügen, dass auch nur die Seiten des alias angezeigt werden.

So sieht das neue Script aus:

<?PHP
class sys{
  function includeContent(){
    include(filterfilename("../content/articles/".$_GET['include']));
  }
  function includeHeader(){
    global $dbpraefix;
    echo "<title>Kommt in einen sp&auml;teren Beitrag</title>
          <meta http-equiv=\"Content-Type\" content=\"text/html;
            charset=iso-8859-1\" />";

    $res = mysql_query("SELECT name, content
            FROM ".$dbpraefix."meta_global
            UNION SELECT name, content
            FROM ".$dbpraefix."meta_local
            LEFT JOIN ".$dbpraefix."pages 
            ON ".$dbpraefix."pages.id = ".$dbpraefix."meta_local.page
            WHERE ".$dbpraefix."pages.alias = '".$_GET['include']."'");
    while($row = mysql_fetch_row($res)){
      echo "<meta name=\"".$row[0]."\" content=\"".$row[1]."\" />";
    }
  }
}
?>

Dies ist ein Beitrag aus der Aktion Code & Blog, in der hier ein eigenes CMS erstellt wird.

RSS Feed für Kommentare zu diesem Artikel. TrackBack URL

7 Kommentare »

  1. Servus,

    kleine Anmerkung:

    Überall sonst lässt du $_GET['include'] auf Schadcode prüfen bzw. entsprechend bereinigen. Aber bei der Abfrage hier vergisst du es (SQL-Injection sei hier als Stichwort genannt -> http://de.wikipedia.org/wiki/SQL-Injection).

    Das solltest du schnellstens beheben.

    Ansonsten werde ich deinem bisher sehr guten Tut weiterhin folgen (denn ich hatte auch just vor ein eigenes CMS zu basteln) und hoffe du verlierst nicht die Lust dabei.

    Gruss Kay

    Kommentar von Kay — 2. Juli 2009 @ 16:22

  2. Uups, kanns übersehen, danke für den Hinweis. Werd gleich nen Artikel davon schreiben.

    Kommentar von Stefan Wienströer — 2. Juli 2009 @ 17:52

  3. Hallo,

    ich bin gerade bei diesem Punkt angelangt. Also den header einzubinden. Das habe ich gestern auch soweit geschafft. Heute morgen allerdings stand nach dem öffnen der Seite über den Browser im header ein Tag und eine Datei von einem externem Server. Kann es leider nicht mehr genau sagen, da ich umgehend alles gelöscht habe.

    Handelt es sich dabei um das von Kay angesprochene Sicherheitsproblem?

    Grüße zilli

    Kommentar von zilli — 29. April 2010 @ 10:38

  4. Ich denke wenn Du dein CMS noch nicht öffentlich hast, sollte es kein Problem sein. Das Problem wurde in einen späteren Beitrag behoben.

    Kommentar von Stefan Wienströer — 29. April 2010 @ 11:37

  5. Ich hatte es ja halt leider öffentlich, jetzt aber nicht mehr. Schon krass wie schnell die sind. ;)

    Kommentar von zilli — 29. April 2010 @ 13:28

  6. Hi,

    ich möchte nur die Funktion zum Einfügen des Headers benutzen.
    Muss ich bei der Funktion auch die Eingabe überprüfen? (Kommen ja von der MySQL Datenbank)

    Kommentar von Pascal — 17. Juli 2010 @ 14:57

  7. Was genau meinst du mit Eingabe überprüfen?

    Kommentar von Stefan Wienströer — 17. Juli 2010 @ 15:13

Hinterlasse einen Kommentar

Trackbacks/Pingbacks

LiveEditor - Kostenloser WebEditorDer kostenlose WebEditor hilft dir dabei, deine Website besser zu entwickeln. Mit dem Syntax-Highlighting fällt geht alles viel schneller. Download jetzt! [mehr...]

Facebook LogoMit Hilfe dieses Tutorials kannst Du deine eigene Facebook Anwendung in PHP programmieren. [mehr...]

Code & Blog LogoErstelle dein eigenes CMS mit PHP. Dieses Tutorial wird dir zeigen wie das geht. Also lies dir es durch und frische deine PHP Kenntnisse auf. [mehr...]

Webservice erstellenWebservices sind oft die Schnittstelle zwischen Server und Client. Wie man mit PHP einen WebService erstellt, lernt ihr in diesem Tutoial. [mehr...]

Diskussion starten
  • RSS
  • Blogverzeichnis - Blog Verzeichnis bloggerei.de
Lokale Meta-Daten speichern / auslesen © SteviesWebsite.de - Kontakt | Impressum