Das eigene Mini-CMS

Diskutiere Das eigene Mini-CMS im Tutorials & Ratgeber Forum im Bereich User-Tests & Tutorials; Guten Abend zusammen ;-), ich weiß, das hier ist ein Hardware-Forum, doch ich dachte mir das sich der ein oder andere vielleicht trotzdem für Webseiten ...



+ Antworten + Neues Thema erstellen
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 8 von 14
 
  1. Das eigene Mini-CMS #1
    Volles Mitglied Avatar von NikthePig

    Mein System
    NikthePig's Computer Details
    CPU:
    Intel Core 2 Duo E6750 + Xigmatek HDT-S1283
    Mainboard:
    Gigabyte GA-P35-DS3R
    Arbeitsspeicher:
    4 x 1024MB OCZ Rev. 2 Platinium CL4 800Mhz
    Festplatte:
    1 x Seagate Barracuda 7200.10 16MB Cache
    Grafikkarte:
    nVidia GeForce 8800GTS (G92)
    Soundkarte:
    OnBord
    Gehäuse:
    Chieftec Mesh
    Netzteil:
    Seasonic S12II 500 Watt
    Betriebssystem:
    Windows XP Prof., SuSe LinuX 10.1
    Laufwerke:
    NEC DVD-RW ND-4571A

    Standard Das eigene Mini-CMS

    Guten Abend zusammen ;-),
    ich weiß, das hier ist ein Hardware-Forum, doch ich dachte mir das sich der ein oder andere vielleicht trotzdem für Webseiten Gestaltung interessiert, auch wenn die Aktivität in diesem Bereich des Forums eine andere Sprache spricht :-D. Wen es nicht interessiert, der muss es nicht lesen ;-), wen es interessiert, Bühne frei .
    Btw: Für dieses Tutorial ist es besser Grundkenntnisse in HTML, PHP und MySQL zu haben!

    1.Planung
    Nun, als erstes zur gründlichen Planung des Projektes. Das Mini-CMS (manche werden bei dem Begriff CMS sicher an gleich an Giganten wie Joomla, TYPO3 & Co. denken und möglicherweise enttäuscht sein, den in diesem Fall geht es eher um ein „Web-Tagebuch“) sollte:
    - Einfach gestrickt sein
    - Für Redakteure ohne viel Einarbeitungszeit verständlich sein
    - Nur eine festgelegte Anzahl von Einträgen pro Seite zeigen
    - Ab einer bestimmten Zeichenzahl eines Beitrages diesen abbrechen und automatisch einen „Weiter lesen“-Link anbringen
    - HTML sollte verwendet werden können

    Was das System (erstmal, vielleicht finde ich in nächster Zeit Zeit um das Ganze zu "erweitern") nicht können muss:
    - Einträge müssen nicht „komfortabel“ Löschbar sein, da nur Personen denen der Ersteller vertraut Schreibrechte haben
    - Es muss kein Benutzerkontrollsystem haben

    So, das war die (recht kurze) Planung, jetzt geht es an die Praxis!

    2. Durchführung
    Als erstes kümmern wir uns um das Datenbank seitige. Dazu erstellen wir erst einmal eine Datenbanktabelle mit dem Namen teccms, welche die Felder id, name, headline, text und datum beinhaltet. SQL-Code dazu:

    Code:
    CREATE TABLE teccms (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(40),
    headline VARCHAR(75),
    text TEXT,
    datum VARCHAR(25),
    )
    Für jeden, der in MySQL ein bisschen bewandert ist, dürfte der Code kein Problem darstellen. Falls doch, einfach Fragen ;-). Der Ordner, in dem sich das Projekt befindet, muss (bei 1 zu 1 übername aus dem Tutorial) so aussehen:

    Ordner CMS
    index.php <- Hauptseite
    eintrag.php <- Eintragungsseite
    datenbank.inc.php <- Zugriffsdaten für den Zugriff auf die Datenbank
    pfeil.gif <- Erster Pfeil
    pfeil2.gif <- Zweiter Pfeil
    pfeil3.gif <- ....
    pfeil4.gif <- ....
    pfeil5.gif <- ....
    Code der Datei datenbank.inc.php, die für die Kontaktierung mit der Datenbank zuständig ist:
    PHP-Code:
    <?php
    @mysql_connect("localhost","Benutzer","PW") or die("Mysqlzugriff gescheitert!");
    @
    mysql_select_db("teccms") or die("Datenbankzugriff gescheitert!");
    ?>
    Nun zum Quellcode der Datei index.php:

    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>New Document</title>
        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
      </head>
      <body style="background-image: url('hintergrund.png')">
      <?php include("datenbank.inc.php"); ?>
       <a name="oben"></a>
       <div style="width:650px; background:white; border-style:solid; border-width:1px; padding:5px">
       <h2 style="background:#B30000; text-align:center;">http://www.teccentral.de/</h2>
       <div align="center"><i>The Hardware Experts</i></div>
       <div align="right">
       <a href="eintrag.php" style="color:#b30000;"><img src="pfeil3.gif" border="0">Login</a>
       &nbsp;-&nbsp;
       <a href="<?php echo $_SERVER['PHP_SELF']; ?>" style="color:#b30000;">
       <img src="pfeil4.gif" border="0">Home</a></div>
       
       <?php   
       $anfang=0;
       $schritt=5;
       if (isset($_GET["anfang"]) && $_GET["anfang"]>0) {
       $anfang=$_GET["anfang"];
       }
       
       if (isset($_GET["id"])) {
       $sql="SELECT * FROM teccms WHERE id=$_GET[id]";
       $ergebnis=mysql_query($sql);
       $row=@mysql_fetch_assoc($ergebnis);
       echo "<h3>$row[headline]</h3><p><small><i>Von $row[name] am $row[datum]</i></small><br>$row[text]</p><br><br><a href='javascript:history.back()' style='color:#b30000;'><img src='pfeil2.gif' border='0'>Zur&uuml;ck</a>";
       }
       Else {
       
       $sql="SELECT id FROM teccms";
       $sql2="SELECT * FROM teccms ORDER BY id DESC LIMIT $anfang, $schritt";
       $ergebnis=mysql_query($sql);
       $zeilen=mysql_num_rows($ergebnis);
       $ergebnis2=mysql_query($sql2);
       $ausgabe="Eintr&auml;ge insgesamt: <b>$zeilen</b>.<br><br>\n";
       echo $ausgabe;
       
       while ($row=@mysql_fetch_assoc($ergebnis2)) {
       $inhalt=nl2br($row["text"]);
       if (strlen($inhalt)>300) {
       $inhalt=substr($inhalt, 0, 300);
       $inhalt.="...<br>";
       $inhalt.="<a href='$_SERVER[PHP_SELF]?id=$row[id]' style='color:#b30000;'>Weiter lesen</a>";
       }
       echo "<b>$row[headline]</b><br>";
       echo "<small><i>Von $row[name] am $row[datum]</i></small>";
       echo "<p>$inhalt</p>";
       }
       
       $anfang=$anfang+$schritt;
       if ($anfang<$zeilen) {
       echo "<p><a href=\"$_SERVER[PHP_SELF]?anfang=$anfang\" style='color:#b30000;'>
       <img src='pfeil2.gif' border='0'>Fr&uuml;here Eintr&auml;ge</a>";   
       }
       
       if (isset ($_GET['anfang']) && $_GET['anfang']>4) {
       $anfang=$_GET['anfang']-$schritt;
       echo "&nbsp;&nbsp;<a href=\"$_SERVER[PHP_SELF]?anfang=$anfang\" style='color:#b30000;'><img src='pfeil5.gif' border='0'>Sp&auml;tere Eintr&auml;ge</a><br>"; 
       }
       
       echo "<br><a href='#oben' style='color:#b30000;'><img src='pfeil.gif' border='0'>Nach oben</a>
       </p>";
       }
       mysql_close();
       ?>
       </div>   
      </body>
    </html>
    So, das war jetzt der ein recht großer Happen unkomentierten Codes, nun die Erläuterung :-D:

    HTML-Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>New Document</title>
        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
      </head>
      <body style="background-image: url('hintergrund.png')">
      <?php include("datenbank.inc.php"); ?>
       <a name="oben"></a>
       <div style="width:650px; background:white; border-style:solid; border-width:1px; padding:5px">
       <h2 style="background:#B30000; text-align:center;">http://www.teccentral.de/</h2>
       <div align="center"><i>The Hardware Experts</i></div>
       <div align="right">
       <a href="eintrag.php" style="color:#b30000;"><img src="pfeil3.gif" border="0">Login</a>
       &nbsp;-&nbsp;
       <a href="<?php echo $_SERVER['PHP_SELF']; ?>" style="color:#b30000;">
       <img src="pfeil4.gif" border="0">Home</a></div>
    Dürfte klar sein...

    PHP-Code:
    <?php   
       $anfang
    =0;
       
    $schritt=5;
       if (isset(
    $_GET["anfang"]) && $_GET["anfang"]>0) {
       
    $anfang=$_GET["anfang"];
       }
    1. Jetzt beginnt es interessant zu werden. Dieser Teil dient dazu, dass nicht mehr als 5 Einträge pro Seite angeizeigt werden. Als erstes wird der Variable $anfang der Wert 0 zugewiesen. Ähnlich ergeht es $schritt, nur das dieser statt 0 5 zugewiesen wird. 5 ist in diesem Fall die Anzahl der Artikel die später auf einer Seite angezeigt werden sollen. Wenn der URL-Parameter anfang bereits existiert und größer als 0 ist, wird dieser ausgelesen und in der Variable $anfang gesichert.
    Weiterführung dazu siehe Punkt 5.

    PHP-Code:
       if (isset($_GET["id"])) {
       
    $sql="SELECT * FROM teccms WHERE id=$_GET[id]";
       
    $ergebnis=mysql_query($sql);
       
    $row=@mysql_fetch_assoc($ergebnis);
       
    // Anfang des Neuen
       
    $text nl2br($row["text"]);
       
    // Edne des Neuen
       
    echo "<h3>$row[headline]</h3><p><small><i>Von $row[name] am $row[datum]</i></small><br>$text</p><br><br><a href='javascript:history.back()' style='color:#b30000;'><img src='pfeil2.gif' border='0'>Zur&uuml;ck</a>";
       }
       Else { 
    2. Hier wird als erstes kontrolliert, ob der URL-Parameter id vorhanden ist. Wenn nicht, folgt der restliche Code, wenn ja, wird ein Artikel dessen id-Spaltenwert gleich dem Wert von $_GET[„id“] ist ausgewählt und groß angezeigt.

    Bugfix: Bei Vollansicht eines Artikels wurden bisher keine Zeilenumbrüche angezeigt. Das wurde nun geändert.


    PHP-Code:
    $sql="SELECT id FROM teccms";
       
    $sql2="SELECT * FROM teccms ORDER BY id DESC LIMIT $anfang$schritt";
       
    $ergebnis=mysql_query($sql);
       
    $zeilen=mysql_num_rows($ergebnis);
       
    $ergebnis2=mysql_query($sql2);
       
    $ausgabe="Eintr&auml;ge insgesamt: <b>$zeilen</b>.<br><br>";
       echo 
    $ausgabe
    3. Nun wird mittels $sql die Anzahl der Datensätze in der Datenbanktabelle ermittelt. $sql2 jedoch ließt beim ersten Aufruf nur die ersten 5 (= $schritt) Datensätze ein. Schließlich wird schon mal die gesamte Anzahl der vorhandenen Datensätze ausgegeben und in der Variable $zeilen gespeichert.

    4. Anschließend werden mittels einer while-Schleife die Artikel ausgelesen und ausgegeben:

    PHP-Code:
    while ($row=@mysql_fetch_assoc($ergebnis2)) {
       
    $inhalt=nl2br($row["inhalt"]);
       if (
    strlen($inhalt)>300) {
       
    $inhalt=substr($inhalt0300);
       
    $inhalt.="...<br>";
       
    $inhalt.="<a href='$_SERVER[PHP_SELF]?id=$row[id]' style='color:#b30000;'>Weiter lesen</a>";
       }
       echo 
    "<b>$row[headline]</b><br>";
       echo 
    "<small><i>Von $row[name] am $row[datum]</i></small>";
       echo 
    "<p>$inhalt</p>";
       } 
    PHP-Code:
    $anfang=$anfang+$schritt;
       if (
    $anfang<$zeilen) {
       echo 
    "<p><a href=\"$_SERVER[PHP_SELF]?anfang=$anfang\" style='color:#b30000;'>
       <img src='pfeil2.gif' border='0'>Fr&uuml;here Eintr&auml;ge</a>"
    ;   
       } 
    8. Der Code addiert $anfang und $schritt, sodass $anfang um 5 ($schritt) erhöht wird. Nun kontrolliert die if-Abfrage ob $anfang kleiner ist als $zeilen, also beispielsweise 5 kleiner ist als 10 (wenn man 10 Einträge hat). Da das in diesem Fall stimmt wird ein Link zu den 5 nächst älteren Artikeln erzeugt. Die Variable $anfang wird dabei mittels eines URL-Parameters übermittelt.

    PHP-Code:
    if (isset ($_GET['anfang']) && $_GET['anfang']>4) {
       
    $anfang=$_GET['anfang']-$schritt;
       echo 
    "&nbsp;&nbsp;<a href=\"$_SERVER[PHP_SELF]?anfang=$anfang\" style='color:#b30000;'><img src='pfeil5.gif' border='0'>Neuere Eintr&auml;ge</a><br>"
       } 
    9. Zu guter Letzt wird hier nun kontrolliert ob $anfang existiert und größer als 4 ist (also bereits einmal um 5 erhöht worden ist), damit man, falls man sich gerade bei der Anzeige von älteren Einträgen befindet, auch wieder zu den neueren findet. Dazu wird, falls obige Bedingung wahr ist, der bereits genannten Variable 5 abgezogen (beispielsweise 10 [$anfang = $_GET['anfang']]5 [$schritt] = 5) und ein Neuere Einträge-Link angebracht. Hierbei wird $anfang wieder per GET-Wert übermittelt.

    Code:
    }
       mysql_close();
       ?>
       <br><a href='#oben' style='color:#b30000;'><img src='pfeil.gif' border='0'>Nach oben</a>
       </p>"
       </div>   
      </body>
    </html>
    11. Das Ende des Codes ist erreicht, hier wird nur der Else-Zweig von 2. geschlossen und ein Nach Oben-Link angebracht.


    So, die Dateien index.php & datenbank.inc.php haben wir hinter uns, nun fehlt nur noch eintrag.php, denn es ist ein bisschen unkomfortabel alle Artikel immer z.B. per phpMyAdmin einzufügen. Vorher möchte ich allerdings noch einen Screenshot von unserer bisherigen Arbeit zeigen:

    Das Design ist in diesem Fall Geschmackssache und bleibt jedem selbst überlassen ;-).
    Nun zu eintrag.php:

    Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>New Document</title>
        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
      </head>
      <body style="background-image: url('hintergrund.png')">
       <?php include("datenbank.inc.php"); ?>
       <div style="width:650px; background:white; border-style:solid; border-width:1px; padding:5px">
       <h2 style="background:#B30000; text-align:center;">Teccentral Mini-CMS</h2>
       <div align="right"><a href="<?php echo $_SERVER['PHP_SELF']; ?>" style="color:#b30000;">
       <img src="pfeil4.gif" border="0">Home</a></div>
       <form action="<?php $_SERVER['PHP_SELF'] ?>" method="GET">
       <b>Name</b>: <input type="text" name="name"><br>
       <b>Passwort</b>: <input type="password" name="pw"><br>
       <input type="submit" value="Log in">
       </form>
       
       <?php   
       $pw=$_GET['pw'];
       $name=$_GET['name'];
       $url = "$_SERVER[PHP_SELF]"."?"."name="."$name"."&"."pw="."$pw";
       
       if ($pw == "teccentral") { 
       echo <<<FORMULARZWEI
       <h3>Willkommen im Verfassungsbereich, Moderator!</h3><br>
       <form action="{$url}" method="post" name="artikel">
       Name: <input type="text" style="width:120px;" value="{$name}" readonly><br>
       <b>&Uuml;berschrift</b>:<br>
       <input type="text" style="width:500px;" name="ueberschrift"><br>
       <b>Text</b>:<br>
       <textarea style="width:500px; height:200px;" wrap="soft" name="text"></textarea></br>
       <input type="submit" value="Eintragen">
       </form> 
    FORMULARZWEI;
       
       }
       Elseif ($pw == "") {
       
       }
       Elseif ($pw != "teccentral" && $pw != "") {
       echo "Falsches Passwort!<br><br>";
       }
       
       
       $ueberschrift=$_POST['ueberschrift'];
       $text=$_POST['text'];
       if (!empty($name) && !empty($ueberschrift) && !empty($text)) {
       $datum=date("d.m.Y, H:i") . " Uhr";
       $eintrag="INSERT INTO teccms (id, name, headline, inhalt, datum) VALUES ('', '$name', '$ueberschrift', '$text', '$datum')";
       $eintragen=mysql_query($eintrag);
       }
    
       if ($eintragen == true) {
       echo "Eintrag erfolgreich!<br>";
       }
       Elseif ($eintragen == "") {
       }
       Else {
       echo "Eintrag <b>nicht</b> erfolgreich! Bitte kontaktieren Sie den Webmaster!<br>";
       }
    
       if ($pw == "teccentral") {
       echo "<a href='index.php' style='color:#b30000;b'><img src='pfeil3.gif' border='0'>Log out</a>";
       }
       Else {
       echo "<a href='index.php' style='color:#b30000;b'><img src='pfeil2.gif' border='0'>Zur&uuml;ck</a>";
       }
       
       mysql_close();
       ?>
       </div>   
      </body>
    </html>
    An die Kommentierung :-D:

    HTML-Code:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
      <head>
        <title>New Document</title>
        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
      </head>
      <body style="background-image: url('hintergrund.png')">
       <?php include("datenbank.inc.php"); ?>
       <div style="width:650px; background:white; border-style:solid; border-width:1px; padding:5px">
       <h2 style="background:#B30000; text-align:center;">Teccentral Mini-CMS</h2>
       <div align="right"><a href="<?php echo $_SERVER['PHP_SELF']; ?>" style="color:#b30000;">
       <img src="pfeil4.gif" border="0">Home</a></div>
       <form action="<?php $_SERVER['PHP_SELF'] ?>" method="GET">
       <b>Name</b>: <input type="text" name="name"><br>
       <b>Passwort</b>: <input type="password" name="pw"><br>
       <input type="submit" value="Log in">
       </form>
    Wieder leicht verständlicher Code, ich denke den muss ich nicht weiter erklären.

    PHP-Code:
    <?php   
       $pw
    =$_GET['pw'];
       
    $name=$_GET['name'];
       
    $url "$_SERVER[PHP_SELF]"."?"."name="."$name"."&"."pw="."$pw";
       
       if (
    $pw == "teccentral") { 
       echo <<<FORMULARZWEI
       <h3>Willkommen im Verfassungsbereich, Moderator!</h3><br>
       <form action="
    {$url}" method="post" name="artikel">
       Name: <input type="text" style="width:120px;" value="
    {$name}" readonly><br>
       <b>&Uuml;berschrift</b>:<br>
       <input type="text" style="width:500px;" name="ueberschrift"><br>
       <b>Text</b>:<br>
       <textarea style="width:500px; height:200px;" wrap="soft" name="text"></textarea></br>
       <input type="submit" value="Eintragen">
       </form> 
    FORMULARZWEI;
       
       }
       Elseif (
    $pw == "") {
       
       }
       Elseif (
    $pw != "teccentral" && $pw != "") {
       echo 
    "Falsches Passwort!<br><br>";
       }
    1. So, als erstes wird der variable $pw das vom Benutzer eingetragene Passwort zugewiesen. Ähnlich ergeht es $name (in beiden Fällen geschieht das nur aus Komfortzwecken – es ist nicht zwangsläufig nötig). Anschließend bauen wir u.a. mit diesen beiden Variablen einen Link zusammen. Falls das vom Benutzer eingetragene Passwort nun gleich teccentral ist, wird das Formularfeld zum Eintragen von Artikeln sichtbar, in dem der zum Einloggen verwendete Name auch als Eintragungsname fungiert. In den Parameter action=““ des Formulars setzten wir unsere URL $url ein, damit der Anwender sich nicht nach jedem neuen Eintrag in das Mini-CMS neu Anmelden muss. Falls das eingetragene Passwort aber gleich „“ (nichts) oder falsch ist, wird entweder nichts oder die Meldung „Falsches Passwort!“ angeizeigt.

    PHP-Code:
    $ueberschrift=$_POST['ueberschrift'];
       
    $text=$_POST['text'];
       if (!empty(
    $name) && !empty($ueberschrift) && !empty($text)) {
       
    $datum=date("d.m.Y, H:i") . " Uhr";
       
    $eintrag="INSERT INTO teccms (id, name, headline, inhalt, datum) VALUES ('', '$name', '$ueberschrift', '$text', '$datum')";
       
    $eintragen=mysql_query($eintrag);
       }

       if (
    $eintragen == true) {
       echo 
    "Eintrag erfolgreich!<br>";
       }
       Elseif (
    $eintragen == "") {
       }
       Else {
       echo 
    "Eintrag <b>nicht</b> erfolgreich! Bitte kontaktieren Sie den Webmaster!<br>";
       } 
    2. Hier wird (wiedermal) des Komforts halber erst einmal umgewandelt. Das Eintragen in die Datenbank erfolgt dann, falls die Felder nicht leer sind, nach dem Erstellen des Datums. Bei erfolgreichem Abschluss seiner Aufgabe gibt mysql_query() true zurück, weshalb man den Erfolg der Erstellung eines neuen Beitrages sehr gut kontrollieren kann.

    PHP-Code:
    if ($pw == "teccentral") {
       echo 
    "<a href='index.php' style='color:#b30000;b'><img src='pfeil3.gif' border='0'>Log out</a>";
       }
       Else {
       echo 
    "<a href='index.php' style='color:#b30000;b'><img src='pfeil2.gif' border='0'>Zur&uuml;ck</a>";
       } 
    3. Nun wird, falls der Besucher der Seite eingeloggt ist, der Link Log out angezeigt. Falls nicht erscheint einfach nur Zurück.

    4. Schließlich noch das Ende des Codes, das meiner Meinung nach keine weiteren Erklärungen benötigt:

    Code:
    mysql_close();
       ?>
       </div>   
      </body>
    </html>
    So, das war es auch schon. In Anhang A gibt es noch eine Vorstellung der von mir Verwendeten Programme, was nicht gelesen werden muss ;-).
    Grüße und in der Hoffnung das ihr interessiert gelesen & das ganze gleich mal ausprobiert habt, NtP

    Update:
    Nun habe ich das CMS hier veröffentlicht, nicht ohne vorher folgende Modifizierungen am Code vorzunehmen.
    Index.php:
    PHP-Code:
    if (isset($_GET["id"])) {
       
    $sql="SELECT * FROM teccms WHERE id=$_GET[id]";
       
    $ergebnis=mysql_query($sql);
       
    $row=@mysql_fetch_assoc($ergebnis);
       
    // Neu
       
    $headline htmlentities($row['headline'], ENT_QUOTES);
       
    $name htmlentities($row['name'], ENT_QUOTES);
       
    $datum htmlentities($row['datum'], ENT_QUOTES);
       
    // Bugfix (siehe [I]index.php[/I] Punkt 2) Anfang
       
    $text nl2br($row["text"]);
       
    // Bugfix Ende
       
    $inhalt strip_tags($text'<b><i><a><br>');
       
    // Ende des Neuen  
    echo "<h3>$headline</h3><p><small><i>Von $name am $row[datum]</i></small><br>$text</p><br><br><a href='javascript:history.back()' style='color:#b30000;'><img src='pfeil2.gif' border='0'>Zur&uuml;ck</a>";
       }
       
    // .....
       // .....
    while ($row=@mysql_fetch_assoc($ergebnis2)) {
       
    $inhalt=nl2br($row["text"]);
       if (
    strlen($inhalt)>300) {
       
    $inhalt=substr($inhalt0300);
       
    $inhalt.="...<br>";
       
    $inhalt.="<a href='$_SERVER[PHP_SELF]?id=$row[id]' style='color:#b30000;'>Weiter lesen</a>";
       }
       
    // Neu
       
    $headline htmlentities($row['headline'], ENT_QUOTES);
       
    $name htmlentities($row['name'], ENT_QUOTES);
       
    $datum htmlentities($row['datum'], ENT_QUOTES);
       
    $inhalt strip_tags($inhalt'<b><i><a><br>');
       
    // Ende des Neuen
       
    echo "<b>$headline</b><br>";
       echo 
    "<small><i>Von $name am $datum</i></small>";
       echo 
    "<p>$inhalt</p>";
       } 
    Diese Änderungen gewährleistet das kein HTML/PHP Code außer <b> und <i> ausgeführt werden kann.

    eintrag.php:
    PHP-Code:
    if (!empty($name) && !empty($ueberschrift) && !empty($textinhalt)) {
       
    $datum=date("d.m.Y, H:i") . " Uhr";
       
    // Neu
       
    $eintrag=sprintf("INSERT INTO teccms (id, name, headline, text, datum) VALUES ('', '$name', '$ueberschrift', '$textinhalt', '$datum')"mysql_real_escape_string($name), mysql_real_escape_string($ueberschrift), mysql_real_escape_string($textinhalt));
       
    // Ende des Neuen
       
    $eintragen=mysql_query($eintrag);
       } 
    Mit dieser Modifizierung wird einer SQL-Injection vorgebeugt. Dringend empfehlenswert!

    PHP-Code:
       echo <<<FORMULARZWEI
       <h3>Willkommen im Verfassungsbereich, Moderator!</h3><br>
       <form action="
    {$url}" method="post" name="artikel">
       Name: <input type="text" style="width:120px;" value="
    {$name}" readonly><br>
       <b>&Uuml;berschrift</b>:<br>
       <input type="text" style="width:500px;" name="ueberschrift"><br>
       <b>Text</b>:<br>
       // Neu
       <input type="button" value="&lt;b&gt;" OnClick="this.form.text.value+='<b></b>'">
       <input type="button" value="&lt;i&gt;" OnClick="this.form.text.value+='<i></i>'"><br>
       <textarea style="width:500px; height:200px;" wrap="soft" name="textinhalt" id="text">
    </textarea></br>
       // Ende des Neuen
       <input type="submit" value="Eintragen">
       </form> 
    FORMULARZWEI; 
    Diese Editierung des Codes dient nur dem Komfort. Dank ein wenig Javascript lässt sich so ein <b></b> oder <i></i> Tag in das Textfenster einfügen.

    Zusätzlich habe ich noch ein sehr praktisches Script erstellt, das in einer neuen Datei heimisch ist, die ich Online-SQL genannt habe. Code des Scriptes:
    Code:
    <head>Teccentral Mini-CMS</title>
        <meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
      </head>
      <body>
      <form action="<?php $_SERVER['PHP_SELF'] ?>" method="POST">
      <b>Benutzer</b>: <input type="text" name="name"><br>
      <b>Passwort</b>: <input type="password" name="pw"><br>
      <b>Tabellenname</b>: <input type="text" name="dbname"><br>
      <textarea name="SQLcode" cols="50" rows="15">CREATE TABLE teccms (
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(40),
    headline VARCHAR(75),
    text TEXT,
    datum VARCHAR(25)
    )</textarea><br>
       <input type="submit" value="Code ausf&uuml;hren">
       </form>
        
        <?php
        // Code by NikthePig @ teccentral.de
        if (!empty($_POST['SQLcode']) && !empty($_POST['name']) && !empty($_POST['dbname'])) {
        $connection = mysql_connect("localhost","$_POST[name]","$_POST[pw]") or die("Mysqlzugriff gescheitert!");
        mysql_select_db("$_POST[dbname]") or die("Datenbankzugriff gescheitert!");
        $sql=$_POST['SQLcode'];
        $eintrag=mysql_query($sql);
        }
        if ($eintrag == true) {
        echo "<font color='green'><b>Erfolgreich</b></font>";
        }
        Else if ($eintrag == "") {
        }
        Else {
        echo "<font color='red'><b>Nicht erfolgreich</b></font>";
        }
        ?>
      </body>
    </html>
    Geachtet wurde hierbei vorallem darauf, dass das Script schlank und auf Funktionalität ausgelegt ist. Der Einsatzzweck ist das Anlegen & Verwalten von Datenbankspalten auf einem Server (auf denen sehr häufig nur eine abgespeckte Version von PhpMyAdmin zu finden ist). Dazu muss nur der Benutzername, das Passwort und der Tabellenname eingegeben werden. Ich habe mir erlaubt, in das Textfenster schon mal den SQL Code der für das Mini-CMS nötig ist, einzufügen.

    PHP-Code:
    if (!empty($_POST['SQLcode']) && !empty($_POST['name']) && !empty($_POST['dbname'])) {
        
    $connection mysql_connect("localhost","$_POST[name]","$_POST[pw]") or die("Mysqlzugriff gescheitert!");
        
    mysql_select_db("$_POST[dbname]") or die("Datenbankzugriff gescheitert!");
        
    $sql=$_POST['SQLcode'];
        
    $eintrag=mysql_query($sql);
        } 
    Nun wird mit Hilfe der Eingegebenen Daten eine Verbindung aufgebaut und der SQL-Code ausgeführt, selbstverständlich wird die Eingabe vorher auf ihre Vollständigkeit überprüft.

    PHP-Code:
    if ($eintrag == true) {
        echo 
    "<font color='green'><b>Erfolgreich</b></font>";
        }
        Else if (
    $eintrag == "") {
        }
        Else {
        echo 
    "<font color='red'><b>Nicht erfolgreich</b></font>";
        } 
    Wenn alles Erfolgreich war wird durch diesen Code "Erfolgreich" oder, bei nicht erfolgreicher Übermittlung & Ausführung "Nicht erfolgreich" ausgegeben. Das Nachrüsten dieser Datei empfiehlt sich, wenn das CMS im Internet eingesetzt wird.

    Anhang A:
    Zur Erstellung des Mini-CMS habe ich folgende Programme verwendet:

    1. Weaverslave (V.: 4 beta 3.9.18.1.)
    2. The Gimp (V.: 2.4.2)
    3. XAMPP (V.: 2.3, nicht die aktuellste Version aber die neue lief bei mir nicht richtig)
    Nun zur Vorstellung der Programme:
    1.Weaverslave
    Weaverslave ist ein kostenloser Web-Editor der u.a. sehr nützliche Filter für HTML, CMS, PHP, PL/SQL, MySQL, Perl, Javascript, Java, Python, C++ Script, VB Script und viele weitere besitzt. Außerdem ist er sehr gut und einfach zu bedienen.
    Downloadlink: Weaverslave - Home/News

    2. The Gimp
    Das beliebte Open Source Grafikprogramm (das wahrscheinlich vielen hier vertraut ist) bietet neben Standardwerkzeugen auch zahlreiche Filter. Die Bedienung ist übersichtlich und einfach, außerdem lässt dich das Programm mit über 100 Plug-Ins erweitern.
    Downloadlink: The GIMP - Download

    3. XAMPP
    XAMPP ist eine Zusammenstellung zahlreicher kostenloser Programme wie z.B. Apache, MySQL und phpMyAdmin zur Erstellung eines Web-Servers. Nach der Installation lassen sich diese ohne viele Änderungen direkt unkompliziert nutzen.
    Downloadlink: apache friends - xampp

  2. Standard

    Hallo NikthePig,

    schau Dir mal Diesen Ratgeber. an. Dort wirst du bestimmt fündig.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. Das eigene Mini-CMS #2
    Volles Mitglied
    Threadstarter
    Avatar von NikthePig

    Mein System
    NikthePig's Computer Details
    CPU:
    Intel Core 2 Duo E6750 + Xigmatek HDT-S1283
    Mainboard:
    Gigabyte GA-P35-DS3R
    Arbeitsspeicher:
    4 x 1024MB OCZ Rev. 2 Platinium CL4 800Mhz
    Festplatte:
    1 x Seagate Barracuda 7200.10 16MB Cache
    Grafikkarte:
    nVidia GeForce 8800GTS (G92)
    Soundkarte:
    OnBord
    Gehäuse:
    Chieftec Mesh
    Netzteil:
    Seasonic S12II 500 Watt
    Betriebssystem:
    Windows XP Prof., SuSe LinuX 10.1
    Laufwerke:
    NEC DVD-RW ND-4571A

    Standard

    Sorry, ich habe grade eben ausversehen auf "Eintragen" geklickt und den Vorgang dan abgebrochen, habe nicht gewusst das doch noch Eingetragen wurde...
    @ Admins: Dieses Tutrial bitte löschen! Das andere ist das inkl. Feinschliff

    EDIT: Nun ist das hier verbessert, da hier geantwortet wurde , bitte das andere löschen! Und danke für die Mühe

  4. Das eigene Mini-CMS #3
    Newbie Avatar von H3adBanG3r

    Standard

    WOW geiles Tutorial !!! da hat sich jemand Zeit genommen und Mühe gamacht !!!

  5. Das eigene Mini-CMS #4
    Volles Mitglied
    Threadstarter
    Avatar von NikthePig

    Mein System
    NikthePig's Computer Details
    CPU:
    Intel Core 2 Duo E6750 + Xigmatek HDT-S1283
    Mainboard:
    Gigabyte GA-P35-DS3R
    Arbeitsspeicher:
    4 x 1024MB OCZ Rev. 2 Platinium CL4 800Mhz
    Festplatte:
    1 x Seagate Barracuda 7200.10 16MB Cache
    Grafikkarte:
    nVidia GeForce 8800GTS (G92)
    Soundkarte:
    OnBord
    Gehäuse:
    Chieftec Mesh
    Netzteil:
    Seasonic S12II 500 Watt
    Betriebssystem:
    Windows XP Prof., SuSe LinuX 10.1
    Laufwerke:
    NEC DVD-RW ND-4571A

    Standard

    Dankeschön ;-), nun ist das CMS (mit einigen Modikfikationen, siehe Post 1 -> "Update") zum ausprobieren für alle online unter http://www.spenglerwais.de/tc/index.php.
    Passwort ist wie im Beispiel teccentral. Aber bitte pro Person nur +/- 3 Einträge verfassen, sonst wirds zu voll

  6. Das eigene Mini-CMS #5
    Hardware Freak Avatar von Hannes

    Mein System
    Hannes's Computer Details
    Gehäuse:
    MacBook Pro 15" Notebook
    Betriebssystem:
    Mac OS X 10.4

    Standard

    Nettes Tutorial. Ich möchte Dich darauf hinweisen, dass in deinem Code SQL Injections möglich sind. Entweder Du führst einen Typecast durch (bei Integer), benutzt die Funktion htmlentities, mysql_real_escape_string oder benutzt PEAR oder PDO und nimmst prepared statements.

    PHP: SQL Injection - Manual
    http://dev.mysql.com/tech-resources/...curity-ch3.pdf

  7. Das eigene Mini-CMS #6
    Volles Mitglied
    Threadstarter
    Avatar von NikthePig

    Mein System
    NikthePig's Computer Details
    CPU:
    Intel Core 2 Duo E6750 + Xigmatek HDT-S1283
    Mainboard:
    Gigabyte GA-P35-DS3R
    Arbeitsspeicher:
    4 x 1024MB OCZ Rev. 2 Platinium CL4 800Mhz
    Festplatte:
    1 x Seagate Barracuda 7200.10 16MB Cache
    Grafikkarte:
    nVidia GeForce 8800GTS (G92)
    Soundkarte:
    OnBord
    Gehäuse:
    Chieftec Mesh
    Netzteil:
    Seasonic S12II 500 Watt
    Betriebssystem:
    Windows XP Prof., SuSe LinuX 10.1
    Laufwerke:
    NEC DVD-RW ND-4571A

    Standard

    mh, hab ich doch schon mit meinem "Hotfix" (siehe -> Update) behoben, oder hab ich was übersehen ?
    Falls ja bitte ich um einen Hinweis - schließlich läuft das ganze u.a. auf meinem Webspace

  8. Das eigene Mini-CMS #7
    Senior Mitglied Standardavatar

    Mein System
    Hexcode's Computer Details
    CPU:
    AMD Athlon 64 X2 5000+ (Zalman 9500 LED @1600RPM)
    Mainboard:
    ASRock ALiveSATA2-GLAN (Antazone AS-N1000 aufm Chipsatz)
    Arbeitsspeicher:
    5GB = 1 GB Team-Elite, 2 GB NoName, 2 GB OCZ Value Ram
    Festplatte:
    320GB Seagate + 250GB Western Digital
    Grafikkarte:
    XpertVision Ati Radeon X1950GT Super (arctic cooling accelero s1)
    Soundkarte:
    Realtek onBoard-Soundchip
    Monitor:
    Acer AL1916W
    Netzteil:
    530 Watt Silent Power = NoName
    Betriebssystem:
    Windows Vista Business 64-Bit
    Laufwerke:
    HP dvd6351 DVD Writer
    Sonstiges:
    LED-Streifen an der Front des Gehäuses

    Standard

    das erinnert mich schwer an das cms aus meinem php buch.... sogar sher schwer...

  9. Das eigene Mini-CMS #8
    Volles Mitglied
    Threadstarter
    Avatar von NikthePig

    Mein System
    NikthePig's Computer Details
    CPU:
    Intel Core 2 Duo E6750 + Xigmatek HDT-S1283
    Mainboard:
    Gigabyte GA-P35-DS3R
    Arbeitsspeicher:
    4 x 1024MB OCZ Rev. 2 Platinium CL4 800Mhz
    Festplatte:
    1 x Seagate Barracuda 7200.10 16MB Cache
    Grafikkarte:
    nVidia GeForce 8800GTS (G92)
    Soundkarte:
    OnBord
    Gehäuse:
    Chieftec Mesh
    Netzteil:
    Seasonic S12II 500 Watt
    Betriebssystem:
    Windows XP Prof., SuSe LinuX 10.1
    Laufwerke:
    NEC DVD-RW ND-4571A

    Standard

    Mh, welches Buch hast du?


Das eigene Mini-CMS

Ähnliche Themen zu Das eigene Mini-CMS


  1. ZOTAC stellt idealen Mini-PC vor Neuer ZOTAC MAG erfüllt alle Bedürfnisse und Wünsche an einen Mini-PC: HONG KONG – 4. Dezember 2009 – ZOTAC International, einer der führenden NVIDIA Partner, stellt heute mit dem ZOTAC MAG seinen weltweit ersten Mini-PC vor. Der ZOTAC MAG ist...



  2. Wie eigene Startmenüelemente hinzufügen?: Hallo Leute ich hab nun eine andere Einteilung meiner Platten und möchte das Startmenü so einstellen das Verknüpfungen auf dem rechten Teil angezeigt werden können. Dort wo...



  3. Eigene Schriftarten auf Homepage? (.eot): Hi! ich versuche vergeblich eigene Schriftarten auf meine Page zu bekommen. Habe die Fonts mit WEFT ins EOT Format gewandelt, jedoch klappt es nicht diese einzubinden Habe...



  4. Eigene Hompage: ----------



  5. Sun stoppt eigene Linuxdistribution: Laut dem Vizepräsident der Operation Platfrom Group John Loiacono will Sun die eigene Linuxdistribution stoppen und in Zukunft zwei bis vier Standarddistributionen...


Besucher kamen mit folgenden Begriffen auf die Seite:

eigenes cms bauen

eigenes cms tutorial

mini cms tutorial

php mini cms tutorial

eigenes cms erstellen tutorial
mini cms
tutorial eigenes cms
php cms tutorial
tutorial mini cms
cms tutorial
eigenes cms programmieren tutorial
eigene cms mit javascript tut
eigenes cms
cms programmieren tutorial
eigenes cms erstellen anleitung
eigene cms bauen
mini cms php mysql tutorial
eigene cms tutorial
eigenes cms download
vbulletin cms tutorial
php cms erstellen tutorial
mini cms php include
minicms mit forum
eigene cms

Stichworte


Guides, Tipps und Mitspieler zu Citadel: Forged with Fire findest du auf Citadel Forum - Forged with Fire.
-
Trete der Nintendo Community bei und besuche das Nintendo Switch Forum.