Shoutbox adminfunktionen erstellen



  • Hallo leute,

    Wie erstelle ich am besten adminfunktionen für eine shoutbox?
    Und welche funktionen würded ihr mit bevorzugen oder mit integrieren?

    shoutboxcode:
    config.php

    <?php
    
    //Datenbank-Einstellungen
    $dbhost='localhost';
    $dbuser='user';
    $dbpass='password';
    $db='db1';
    $dbtable='shoutbox';
    
    //Anzahl der auszugebenden Nachrichten
    $messages_count = 10;
    ?>
    

    getdata.php

    <?php
    
    // Cachen verhindern
    header("Expires: Sat, 05 Nov 2005 00:00:00 GMT");
    header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
    header("Cache-Control: no-store, no-cache, must-revalidate");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");
    
    // Einstellungen laden
    include("config.php");
    
    // Verbindung zu mySQL aufbauen
    $dblink = mysql_connect($dbhost, $dbuser, $dbpass);
    
    if (!$dblink) {
       die('Keine Verbindung zur Datenbank moeglich.');
    }
    
    // Datenbank auswählen
    $dbselected = mysql_select_db($db, $dblink);
    if (!$dbselected) {
       die ('Kann Datenbank nicht erreichen.');
    }
    
    // Datensätze ermitteln
    $dbresult = mysql_query("SELECT * FROM $dbtable ORDER BY ID DESC LIMIT 0,$messages_count");
    if (!$dbresult) {
       die('Ungueltige SQL-Query.');
    }
    
    // Datensätze auslesen und formatieren
    while ($row = mysql_fetch_assoc($dbresult)) {
       echo "<span class=\"name\">".$row["name"].":</span>";
       echo $row["message"]."<br />";
    }
    
    // Verbindung zur Datenbank schließen
    mysql_close($dblink);
    
    ?>
    

    setdata.php

    <?php
    
    // Einstellungen laden
    include("config.php");
    
    // Verbindung zu mySQL aufbauen
    $dblink = mysql_connect($dbhost, $dbuser, $dbpass);
    if (!$dblink) {
       die('Keine Verbindung zur Datenbank möglich.');
    }
    
    // Datenbank auswählen
    $dbselected = mysql_select_db($db, $dblink);
    if (!$dbselected) {
       die ('Kann Datenbank nicht erreichen.');
    }
    $username = $_POST["name"];
    $nachricht =$_POST["message"]  
    // Neuen Datensatz speichen
    $result = mysql_query("INSERT INTO $dbtable (name, message) VALUES ('".mysql_real_escape_string($username)."','".mysql_real_escape_string($nachricht)."')");
    if (!$result) {
       die('Ungueltige SQL-Query');
    }
    
    // Verbindung zur Datenbank schließen
    mysql_close($dblink);
    
    ?>
    

    shoutbox.js

    // globale Instanz von XMLHttpRequest
    var xmlHttp = false;
    
    // XMLHttpRequest-Instanz erstellen
    // ... für Internet Explorer
    try {
        xmlHttp  = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
        try {
            xmlHttp  = new ActiveXObject("Microsoft.XMLHTTP");
        } catch(e) {
            xmlHttp  = false;
        }
    }
    // ... für Mozilla, Opera und Safari
    if (!xmlHttp  && typeof XMLHttpRequest != 'undefined') {
        xmlHttp = new XMLHttpRequest();
    }
    
    // aktuelle Daten laden
    loadData();
    
    // alle 5 Sekunden neue Daten holen
    setInterval("loadData()",5000);
    
    function loadData()
    {
     if (xmlHttp) {
         xmlHttp.open('GET', 'getdata.php', true);
         xmlHttp.onreadystatechange = function () {
             if (xmlHttp.readyState == 4) {
                 document.getElementById("asb_content").innerHTML = xmlHttp.responseText;
             }
         };
         xmlHttp.send(null);
     }
    }
    
    function saveData()
    {
    if (xmlHttp) {
        xmlHttp.open('POST', 'setdata.php');
        xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xmlHttp.send('name='+document.frmshoutbox.txtname.value+'&message='+document.frmshoutbox.txtmessage.value);
    }
    
    // Message-Eingabefelder leeren und Focus setzen
    document.frmshoutbox.txtmessage.value = '';
    document.frmshoutbox.txtmessage.focus();
    }
    

    Danke für die kommenden Vorschläge

    mfg derdefeckter



  • Hallo,

    Fällt niemanden was ein wie man hier ein paar admin funktionen reinbringen kann?

    hoffe euch fällt noch was ein

    mfg



  • Dein Ansatz?
    Dein konkretes Problem?



  • Also Als erstes mein problem

    wie kriege ich diese grundlegende admin funktionen darein?

    ansatz:

    ich dachte zum beispiel für die bann funktion in der db (mysql) eine spalte mit banned eintragen lasse und dann eine abfrage wenn 0 darf der user in die shoutbox schreiben wenn 1 ausgeben sie wurden geblockt oder vergleichbares

    gerade in adminfunktionen kenne ich mich gar nicht aus

    mfg

    p.s. sorry das ich mir alles "aus der nase ziehen" lassen muss



  • Na, der Ansatz ist doch gar nicht schlecht?
    Also wo genau hakt es? Sonst halt einfach mal machen 🙂



  • Ja eigentlich suche ich noch vorschläge was ich noch dazu nehmen kann für die adminfunktionen ausser bann funktionen zum beispiel mute aber da weiss ich gar niicht wie ich das umsetzten soll



  • Die Frage ist doch vielmehr: Wie willst du die User authentifizieren?

    Du hast überhaupt keine Benutzerverwaltung implementiert, aber kannst doch niemanden sperren, wenn du noch gar nicht weißt, woran du ihn erkennst.



  • Das ist der rohcode

    ich wollte da noch die variable $username mit rein nehmen statt das formular feld Name das via session ja zurealisieren wäre oder?

    mfg



  • Und was bringt dir das? Du bauchst eine Benutzerverwaltung. Wenn die Shoutbox offen zugänglich ist (= Gäste können ohne Registrierung schreiben), kannst du dir den Käse mit Bann auch sparen. Wer dann weiter spammen will, schließt einfach einmal den Browser und macht munter weiter.



  • Hallo,

    ja benutzerverwaltung habe ich die soll in meine vorhandene seit eintergriert werden

    also gäste können den chat nicht sehen der chat/shoutbox steht nur den eingeloggten zur verfügung

    mfg



  • Nun gut, dann musst du das halt entsprechend anpassen.
    Ich kann dir aber nur dringend noch einmal davon abraten, dir deine Seite so verhackstückelt zusammenzuklotzen. Lieber aus einem Guss und dann Stückweise nachbessern, als alle Komponenten einzeln bauen und dann zusammenzuführen. Zumindest am Anfang.

    Dann leg mal los! 😉



  • Warum sollte das nachteilhaft sein?

    also ich finde das das ok ist da ich weiss wo die komponennten alle hinkommen und ich weiss auch das das alles passt

    mfg



  • derdefeckter schrieb:

    [php]<?php

    $dbresult = mysql_query("SELECT * FROM dbtableORDERBYIDDESCLIMIT0,dbtable ORDER BY ID DESC LIMIT 0,messages_count");[/code]

    warst es nicht sogar du, dem ich gesagt hab, dass "SELECT *" in Produktivcode nichts zu suchen hat?



  • Hallo,

    zwutz schrieb:

    derdefeckter schrieb:

    [php]<?php

    $dbresult = mysql_query("SELECT * FROM dbtableORDERBYIDDESCLIMIT0,dbtable ORDER BY ID DESC LIMIT 0,messages_count");[/code]

    warst es nicht sogar du, dem ich gesagt hab, dass "SELECT *" in Produktivcode nichts zu suchen hat?

    Ich lese ,frage und beantworte täglich posts da weiss ich das jetzt nicht mehr 🤡

    Wie müsste die Abfrage denn lauten?

    mfg



  • So leute jetzt habe ich wirklich wieder ein Problem!

    code:

    <?php
    session_start();
    ?> 
    <?php
    if(!isset($_SESSION["username"]))
       {
       echo "Bitte erst <a href=\"index.php\">einloggen</a>";
       exit;
       }
    else 
    
    require ('config.php');
    
    $username = $_SESSION["username"];
    
    $abfrage = "SELECT username, userlevel FROM login WHERE username ='".mysql_real_escape_string($username)."' LIMIT 1";
    $ergebnis = mysql_query($abfrage);
    $row = mysql_fetch_array($ergebnis);
    
        if($row['userlevel'] == 'admin')
        {
         echo 'Adminbereich folgt!';
        }
        elseif($row['userlevel'] == 'moderator')
        {
        echo 'Der Moderatoren bereich folgt!';
        }
        elseif($row['userlevel'] == 'user')
        {
        $abfrage = "SELECT username, chatbann FROM login WHERE username ='".mysql_real_escape_string($username)."' LIMIT 1";
    $ergebnis = mysql_query($abfrage);
    $row = mysql_fetch_array($ergebnis);
    
    if($row['chatbann'] == '1')
        {
         $chat = 'Sie wurden vom Chat geblockt! Falls sie zu Unrecht geblockt wurden kontaktieren sie uns bitte!';
        }
        elseif($row['chatbann'] == '0')
        {
        $chat = "<div id=\"asb_container\">
     <div id=\"asb_contentwrap\">
      <div id=\"asb_content\">
       Shoutbox wird geladen ...
      </div>
     </div>
     <div id=\"asb_inputwrap\">
      <div id=\"asb_input\">
    
       <form action=\"\" name=\"frmshoutbox\" onsubmit=\"saveData(); return false;\">
        <b><font color=\"#66FF00\">Nachricht:</font></b><br /><input class=\"text\" type=\"text\" name=\"txtmessage\" value=\"\" /><br />
        <input class=\"button\" type=\"submit\" name=\"btnsend\" value=\"Senden\" />
       </form>
       </div>
     </div>
    </div>";
        }
        echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
    <html xmlns=\"http://www.w3.org/1999/xhtml\">
    <head>
    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=iso-8859-1\" />
    <link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\" />
    <link href=\"styles.css\" rel=\"stylesheet\" type=\"text/css\" />
    <script type=\"text/javascript\" src=\"shoutbox.js\" ></script>
    <title>KIMSERVER-Game</title>
    </head>
    
    <body>
    <div id=\"container\">
    	<div id=\"header\">
    		<!--marquee--> 
    	</div>
    	<div id=\"content\">
    		<div id=\"left\">
    			<div class=\"menu\">
    				<div class=\"menuheader\"><h3>Menu</h3></div>
    				<div class=\"menucontent\">
    					<ul>
    						<li><a href=\"gindex.php\">Start</a></li>
    						<li><a href=\"ggame.php\">Zum Spiel</a></li>
    						<li><a href=\"gscore.php\">Highscore</a></li>
    						<li><a href=\"gbeta.php\">Open Beta</a></li>
    						<li><a href=\"http://kimserver.bplaced.net/kimserver-game/kontakt.php\">Kontakt</a></li>
    						<li><a href=\"gchat.php\">Chat</a></li>
    					</ul>
    				</div>
    				<div class=\"menufooter\"></div>
    			</div>
    			<div class=\"menuheader\"><h3>Logout</h3></div>
    				<div class=\"menucontent\">
    				 <center>
            <p><a href=\"logout.php\">Logout</a></p>
            </center>
    				</div>
    				<div class=\"menufooter\"></div>
    		</div>
    
    		<div id=\"right\">
    			<div class=\"menu\">
    				<div class=\"menuheader\"><h3>Die besten:</h3></div>
    				<div class=\"menucontent\">";
    			?>	
            <?php
    require ('config.php');
    error_reporting(E_ALL); 
    
    $abfrage = "SELECT username,score AS highscore FROM login ORDER BY score DESC LIMIT 0,3";
    $end = mysql_query($abfrage);
    
    while( $row = mysql_fetch_assoc( $end ))
    {
         echo "<center>";
         echo "<p>".$row['username'].":</p>";
         echo "<p>".$row['highscore']."</p>";
         echo "</center>";
    }     
    ?>
    <?php	
    echo " <div class=\"clear\"></div>
    				</div>
    				<div class=\"menufooter\"></div>
    			</div>
    		</div>
    
    		<div id=\"middle\">
    			<div class=\"post\">
    				<div class=\"postheader\"><h1>Chat</h1></div>
    				<div class=\"postcontent\">";
            ?>
            <?php
    			 echo "$chat";
           ?>	
           <?php
          echo "</div>
    				<div class=\"postfooter\"></div>
    			</div>
    			<div class=\"post\">
    
    			</div>
    		</div>
    	</div>
    	<div id=\"footer\">
    
    	<span>All rights reserved.</span>	</div>	
    </div>
    </body>
    </html>";
        }
    ?>
    

    Nicht aufregen falls irgendwie man das einfacher machen könnte!
    zu meinem problem:

    Die js datei wurde in diesem thread schon gepostet
    so wenn ich da jetzt was eintragen möchte denn möchte er das via get machen was nicht geht weil mit post abgefragt wird jetzt werden einige sagen das method noch da hin muss allerdings erledigt das die js datei!
    ich habe genau die selben datein für meine index.html benutzt und da funktionierts einwandfrei (also nur shoutboxcode)

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <title>ajax</title>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <link rel="stylesheet" href="styles.css" type="text/css" />
    <script type="text/javascript" src="shoutbox.js" ></script>
    </head>
    <body>
    
    <div id="asb_container">
     <div id="asb_contentwrap">
      <div id="asb_content">
       Shoutbox wird geladen ...
      </div>
     </div>
     <div id="asb_inputwrap">
      <div id="asb_input">
       <form action="" name="frmshoutbox" onsubmit="saveData(); return false;">
        <b>Nachricht:</b><br /><input class="text" type="text" name="txtmessage" value="" /><br />
        <input class="button" type="submit" name="btnsend" value="Senden" />
       </form>
      </div>
     </div>
    </div>
    
    </body>
    </html>
    

    hoffe ihr könnt mir da mal eben weiterhelfen mfg



  • derdefeckter schrieb:

    ...

    fehlt da nicht in z. 10 ne { klammer



  • soweit ich gelernt habe
    muss bei else keine klammer hin

    mfg



  • falsch gelernt! es muß nur keine klammer hin wenn danach nur ein statement folgt bei dir sind es aber mehr z.14 soll doch auch noch mindestens mit rein...



  • allerdings hatt das voher auch geklappt ohne die klammern

    also auf meinen anderen seiten klappt das genau so

    nur jetzt hier und ich denke das er die js datei nicht ricjtih mit rein nimmt

    mfg



  • denk doch was du willst...


Anmelden zum Antworten