Huhu,
ich überlege gerade, ich ich eine Admin.php erstellen kann, worin ich alle erstellten Shoutboxtabellen zusammenfasse, nach Datum, Tabelle, letzte Änderung, etc. sortieren kann.
In den Shoutboxen möchte ich nämlich nicht, dass Besucher die Lösch- & Editierfunktion sehen.
Deshalb dachte ich an so eine zusammenfassende Admin, wo ich mehrere Nachrichten markieren und löschen kann.
Außerdem bräuchte ich die Möglichkeit, ein zweites Passwort zu erstellen, damit der Co-Admin mit seinem eigenen Passwort die Einträge bearbeiten kann.
Meine Shoutbox sieht bisher so aus:
- <?PHP
- // 01-Shoutbox - Copyright 2003-2007 by Michael Lorer - 01-Scripts.de
- // Lizenzinformationen unter: http://www.01-scripts.de/lizenz.php
- // Support unter: http://www.01-scripts.de/support.php
- //** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** * *
- // letzte User-Bearbeitung am 15/12/07 um 16:38 von Stiller (http://thingsbystiller.th.funpic.de/)
- // letzte User-Bearbeitung am dd/mm/yy um hh:mm von Name
- //KONFIGURATION
- //MySQL-Einstellungen:
- $host = "localhost"; //Hier muss der Host ihrer Mysql-Datenbank eingetragen werden
- $database = ""; //Geben Sie hier die Datenbank an in welche Sie die nötigen MySQL-Tabellen installieren möchten
- $user = ""; //Der Usernamen für ihre Mysql-Datenbank
- $passw = ""; //Das Passwort zu ihrer Mysql-Datenbank
- //Weitere Einstellungen:
- $smilies = 1; //Smilies aktivieren? (1|0)
- $pass = ""; //Passwort zum Löschen von Einträgen
- $width = "300"; //Breite der Shoutboxtabelle
- $break = 65; //Nach wie vielen Zeichen sollen Wörter umgebrochen werden?
- $spamm = 60; //Spamzeit in Sekunden (wieviel Zeit muss zwischen einzelnen Posts vergehen?)
- $limit = 5; //Wieviele Posts (pro Seite) sollen angezeigt werden?
- //Design-Einstellungen:
- $align = "center"; //Ausrichtung der Tabelle
- $css1 = "border-width:1px; border-style:solid; border-color:#6DBFFB; background-color:#ffffff; color:#000000; font-family: OCR A Extended; "; //Rahmen-Einstellungen (td)
- $fontsize = "12px"; //Schriftgröße in px,pt,em
- $fieldlength = 40; //Länge der Eingabefelder (size)
- $maxheight = "200px"; //Maximale Höhe für den Bereich der Nachrichten
- //muss normalerweise nicht geändert werden:
- $tabelle = "Tabelle1"; //MySql-Tabelle in der die Daten gespeichert werden
- $picpf = "../smilies"; //Pfad zum Verzeichnis, das die Smilies enthält
- //KONFIGURATION BEENDET
- //Funktion zum Ersetzen der Smilie-Codes
- function smilies(&$text){
- global $picpf;
- $text = str_replace(":)", "<img src=\"".$picpf."/1.gif\" alt=\"Smilie\" border=\"0\" />", $text);
- $text = str_replace(":D", "<img src=\"".$picpf."/2.gif\" alt=\"Smilie\" border=\"0\" />", $text);
- $text = str_replace("8)", "<img src=\"".$picpf."/3.gif\" alt=\"Smilie\" border=\"0\" />", $text);
- $text = str_replace(":eek:", "<img src=\"".$picpf."/4.gif\" alt=\"Smilie\" border=\"0\" />", $text);
- $text = str_replace(":p", "<img src=\"".$picpf."/5.gif\" alt=\"Smilie\" border=\"0\" />", $text);
- $text = str_replace(":(", "<img src=\"".$picpf."/6.gif\" alt=\"Smilie\" border=\"0\" />", $text);
- $text = str_replace(":x", "<img src=\"".$picpf."/7.gif\" alt=\"Smilie\" border=\"0\" />", $text);
- $text = str_replace(":oX:", "<img src=\"".$picpf."/8.gif\" alt=\"Smilie\" border=\"0\" />", $text);
- $text = str_replace(":roll", "<img src=\"".$picpf."/9.gif\" alt=\"Smilie\" border=\"0\" />", $text);
- $text = str_replace(";)", "<img src=\"".$picpf."/10.gif\" alt=\"Smilie\" border=\"0\" />", $text);
- return $text;
- }
- //Connect to MySQL-DB
- $db = @mysql_connect($host, $user, $passw)
- or die ("Verbindungsaufnahme mit der MySQL-Server war <b>nicht</b> erfolgreich!<br />Bitte gehen Sie nochmals zurück.<br />Sollte weiterhin keine Verbindung zum MySQL-Server zu Stande kommen wenden Sie sich an den technischen Ansprechparnter");
- @mysql_select_db($database, $db)
- or die ("Verbindungsaufnahme mit Datenbank war <b>nicht</b> erfolgreich!<br />Bitte gehen Sie nochmals zurück.<br />Sollte weiterhin keine Verbindung zur MySQL-Datenbank zu Stande kommen wenden Sie sich an den technischen Ansprechparnter");
- //Connect!!ED!! to MySQL-DB
- //MySQL-Tabelle anlegen, wenn sie noch nicht existiert:
- $result = mysql_list_tables($database,$db);
- $menge = mysql_num_rows($result);
- for($x = 0; $x < $menge; $x++)
- {
- if(mysql_tablename($result, $x) == $tabelle) $check = 1;
- }
- if(!isset($check) OR isset($check) && $check != 1)
- {
- $install_query = "CREATE TABLE ".$tabelle." (
- `id` int(10) NOT NULL auto_increment,
- `username` varchar(50) NOT NULL default '',
- `nachricht` text NOT NULL default '',
- `time` int(20) NOT NULL default '0',
- `ip` varchar(20) default NULL,
- `uid` varchar(32) NOT NULL default '',
- PRIMARY KEY (`id`)
- ) TYPE=MyISAM AUTO_INCREMENT=1;";
- if(mysql_query($install_query)) echo "MySQL-Tabelle '".$tabelle."' wurde erfolgreich angelegt";
- else echo "Beim Anlegen der MySQL-Tabelle '".$tabelle."' trat ein Fehler auf. Die Tabelle konnte nicht angelegt werden";
- }
- //Löschen:
- if(isset($_GET['action']) && $_GET['action'] == "del")
- {
- echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\"><p align=\"center\">";
- echo "<b>Passwort:</b><br />";
- echo "<input type=\"hidden\" name=\"action\" value=\"admindel\" /><input type=\"hidden\" name=\"id\" value=\"".$_GET['id']."\" />";
- echo "<input type=\"password\" name=\"passfeld\" size=\"20\" /><br /><input type=\"submit\" value=\"Löschen\" />";
- echo "</p></form>";
- }
- //Löschen bei Passwort = richtig
- if(isset($_POST['action']) && $_POST['action'] == "admindel" && $_POST['passfeld'] == $pass)
- {
- mysql_query("DELETE FROM ".$tabelle." WHERE id='".addslashes($_POST['id'])."'");
- }
- //Eintragen von neuen Posts
- if(isset($_POST['send']) && $_POST['send'] == 1 && isset($_POST['post']) && !empty($_POST['post']) && isset($_POST['name']) && !empty($_POST['name']) && $_POST['name'] != "Name")
- {
- //Überprüfung der Spammtime & IP & UID
- $aktime = time()-$spamm;
- $checkentry = mysql_query("SELECT * FROM ".$tabelle." WHERE uid='".addslashes($_POST['uid'])."' OR time>='".$aktime."' AND ip='".addslashes($_SERVER['REMOTE_ADDR'])."'");
- $checkentry2 = mysql_num_rows($checkentry);
- if($checkentry2 < 1)
- {
- $sql_insert = "INSERT INTO ".$tabelle." (username,nachricht,time,ip,uid) VALUES ('".addslashes($_POST['name'])."', '".addslashes($_POST['post'])."', '".time()."', '".$_SERVER['REMOTE_ADDR']."', '".addslashes($_POST['uid'])."')";
- $result = mysql_query($sql_insert, $db);
- }
- else
- {
- $spammtime = 1;
- }
- }
- //Seiten-Funktion:
- $mengequery = mysql_query("SELECT * FROM ".$tabelle."");
- $menge = mysql_num_rows($mengequery);
- $maxsites = ceil($menge/$limit);
- if(isset($_GET['site']) && $_GET['site'] != "" && $_GET['site'] != 0)
- {
- $l1 = $_GET['site']*$limit;
- $l1 = $l1-$limit;
- $mysqllimit = " LIMIT ".$l1.",".$limit."";
- if($_GET['site'] > 1){ $zl = $_GET['site']-1; }
- if($_GET['site'] < $maxsites){ $vl = $_GET['site']+1; }
- }
- else
- {
- $mysqllimit = " LIMIT ".$limit."";
- $zl = 0;
- if($menge > $limit){ $vl = 2; }
- }
- $postquery = "SELECT * FROM ".$tabelle." ORDER BY time DESC".$mysqllimit."";
- ?>
- <!--Ausgabe der Beiträge-->
- <form name="shoutbox" action="<?PHP echo $_SERVER['PHP_SELF']; ?>" method="post">
- <table border="0" width="<?PHP echo $width; ?>" align="<?PHP echo $align; ?>" style="border-width:1px; border-style:solid; border-color:#6DBFFB; font-color:#000000">
- <tr>
- <td style="font-size:<?PHP echo $fontsize; ?>;<?PHP echo $css1; ?>" colspan="4">
- <div style="width:<?PHP echo $width; ?>px; height:<?PHP echo $maxheight; ?>; overflow:auto;">
- <?PHP
- //Ausgabe der Meldung, wenn die Spamtime noch nicht abgelaufen ist:
- if(isset($spammtime))
- {
- echo "<b>Du hast bereits vor zu kurzer Zeit einen Beitrag geschrieben! Bitte warte einen Moment (1 min).</b><br /><br />";
- }
- $posts = mysql_query($postquery);
- while($rowp = mysql_fetch_array($posts))
- {
- $datum = date("d.n - G:i",$rowp['time']);
- $string = stripslashes($rowp['nachricht']);
- $string = wordwrap($string , $break , "<br />" , 1);
- $string = preg_replace('"( |^)(www.[-a-zA-Z0-9@:%_\+.~#?&//=]+)"i','\\1<a href="http://\2" target="_blank">\\2</a>', $string);
- if($smilies == 1) $string = smilies($string);
- $nbreak = wordwrap($rowp['username'] , $break , "-<br />" , 1);
- echo "<a href=\"".$_SERVER['PHP_SELF']."?action=del&id=".$rowp['id']."\" style=\"color:red; text-decoration:none; font-size:9px;\">x</a> ";
- echo "<span style=\"color:#303030; font-size:11px; font-family: OCR A Extended; \">".$datum."</span><br><b>".$nbreak.":</b><br />".$string."<br /><hr>";
- }
- ?>
- </div>
- </td>
- </tr>
- <!--ENDE: Ausgabe der Beiträge-->
- <!--Ausgabe des Formulars-->
- <tr>
- <td align="left" width="25%" style="font-size:1;"><?PHP if($_GET['site'] > 1){ echo "<a href=\"".$_SERVER['PHP_SELF']."?site=1\"><b>« 1</b></a>"; }else{ echo " "; } ?></td>
- <td align="center" width="25%" style="font-size:1;"> <?PHP if($zl > 0){ echo "<a href=\"".$_SERVER['PHP_SELF']."?site=".$zl."\"><b>< ".$zl."</b></a>"; } ?></td>
- <td align="center" width="25%" style="font-size:1;"><?PHP if(isset($vl) && $vl <= $maxsites){ echo "<a href=\"".$_SERVER['PHP_SELF']."?site=".$vl."\"><b>".$vl." ></b></a>"; } ?> </td>
- <td align="right" width="25%" style="font-size:1;"><?PHP if(isset($_GET['site']) && $_GET['site'] < $maxsites OR $vl == 2){ echo "<a href=\"".$_SERVER['PHP_SELF']."?site=".$maxsites."\"><b>".$maxsites." »</b></a>"; }else{ echo " "; } ?></td>
- </tr>
- <tr>
- <td nowrap>Name:</td>
- <td style="<?PHP echo $css1; ?>" colspan="4">
- <input type="text" name="name" size="<?PHP echo $fieldlength; ?>" style="font-size:<?PHP echo $fontsize; ?>; border: 0px; background-color:#ffffff; color:#000000;" />
- </td>
- </tr>
- <tr>
- <td nowrap>Nachricht:</td>
- <td style="<?PHP echo $css1; ?>" colspan="4">
- <input type="text" name="post" size="<?PHP echo $fieldlength; ?>" style="font-size:<?PHP echo $fontsize; ?>; border: 0px; background-color:#ffffff; color:#000000;" />
- </td>
- </tr>
- <?PHP if($smilies == 1){ ?>
- <script type="text/javascript">
- function smilie(text)
- {
- eval("document.shoutbox.post.value += \""+text+"\"");
- }
- </script>
- <tr>
- <td align="center" colspan="4">
- <a href="#" onclick="javascript:smilie(' :) ');"><img src="<?PHP echo $picpf; ?>/1.gif" alt="Smilie" border="0" /></a>
- <a href="#" onclick="javascript:smilie(' :D ');"><img src="<?PHP echo $picpf; ?>/2.gif" alt="Smilie" border="0" /></a>
- <a href="#" onclick="javascript:smilie(' 8) ');"><img src="<?PHP echo $picpf; ?>/3.gif" alt="Smilie" border="0" /></a>
- <a href="#" onclick="javascript:smilie(' :eek: ');"><img src="<?PHP echo $picpf; ?>/4.gif" alt="Smilie" border="0" /></a>
- <a href="#" onclick="javascript:smilie(' :p ');"><img src="<?PHP echo $picpf; ?>/5.gif" alt="Smilie" border="0" /></a>
- <a href="#" onclick="javascript:smilie(' :( ');"><img src="<?PHP echo $picpf; ?>/6.gif" alt="Smilie" border="0" /></a>
- <a href="#" onclick="javascript:smilie(' :x ');"><img src="<?PHP echo $picpf; ?>/7.gif" alt="Smilie" border="0" /></a>
- <a href="#" onclick="javascript:smilie(' :oX: ');"><img src="<?PHP echo $picpf; ?>/8.gif" alt="Smilie" border="0" /></a>
- <a href="#" onclick="javascript:smilie(' :roll ');"><img src="<?PHP echo $picpf; ?>/9.gif" alt="Smilie" border="0" /></a>
- <a href="#" onclick="javascript:smilie(' ;) ');"><img src="<?PHP echo $picpf; ?>/10.gif" alt="Smilie" border="0" /></a>
- </td>
- </tr>
- <?PHP } ?>
- <tr>
- <td align="center" colspan="4">
- <input type="submit" value="Abschicken" style="font-size:<?PHP echo $fontsize; ?>; border: 0px; background-color: rgb(0, 0, 0); color: rgb(255, 255, 255);" />
- <input type="hidden" name="send" value="1" />
- <?PHP
- mt_srand((double)microtime() * 1000000);
- $uidzufall = mt_rand(1,9999);
- ?>
- <input type="hidden" name="uid" value="<? echo md5($_SERVER['REMOTE_ADDR'].time().$uidzufall); ?>" />
- </td>
- </tr>
- </table>
- </form>
- <!--Ausgabe des Formulars ENDE-->
- <?PHP
- //Script by Michael Lorer alias Deathfragger | www.01-scripts.de | support@01-scripts.de
- ?>
Ich habe bereits eine ähnliche Lösung für ein anderes Script.
Hier die Config dafür, wo ich die Tabellen eintragen muss:
- <?php
- ///////////////////////
- //
- // CONFIG --
- //
- /*///*/ $host = "localhost"; // MySQL Datenbank Host
- /*///*/ $user = ""; // MySQL User
- /*///*/ $pass = ""; // MySQL User password
- /*///*/ $dbdb = ""; // MySQL Datenbank
- /*///*/ define("ORDNER", "");
- /*///*/ $loginname = "";
- /*///*/ $password = "";
- //
- //
- ///////////////////////
- $con = @mysql_connect($host,$user,$pass)or die("Die Verbindung zur MySQL Datenbank konnte nicht stattfinden!");
- mysql_select_db($dbdb,$con)or die("Verbindung mit der Datenbank fehlgeschlagen!");
- $tabellen = array();
- $tabelle[] = 'Tabelle1';
- $tabelle[] = 'Tabelle2';
- $tabelle[] = 'Tabelle3';
- ?>
Und so weiter.
Hat jemand schon solch eine Lösung?
Hat den Vorteil, mehrere Tabellen auf einen Blick zu haben und dass User den Lösch- und auch den Editierbutton nicht mehr sehen.