Commit 263bf5ce authored by Markus's avatar Markus

Besser kommentiert

parent 9d1ffa0d
<?php
session_start();
// Melde alle Fehler außer E_NOTICE
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
ini_set("display_errors", 1);
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED); // alle außer ...
ini_set("display_errors", 1); // zeige an
$link = mysql_connect('localhost', 'chat', 'chat');
mysql_select_db('chat', $link);
......@@ -16,7 +16,7 @@ $result = mysql_query("SELECT count(*) AS anzahl FROM user");
$result = mysql_query("SELECT count(*) AS anzahl FROM user WHERE Online = 1");
while($Useranzahlon1 = mysql_fetch_array($result)) $Useronline = $Useranzahlon1['anzahl'];
//
// Funktions
// Funktionen
//
function ChatNachricht($text, $admin, $userchange ){
if($admin != 2) $text = addslashes(htmlspecialchars($text));
......@@ -37,7 +37,7 @@ function ChatNachricht($text, $admin, $userchange ){
}
}
if ((trim(strtolower($text)) == "/komandos") OR
if ((trim(strtolower($text)) == "/kommandos") OR
(trim(strtolower($text)) == "/befehle") OR
(trim(strtolower($text)) == "/commands") OR
(trim(strtolower($text)) == "/hilfe")OR
......@@ -93,6 +93,7 @@ function ChatNachricht($text, $admin, $userchange ){
}
return $text;
}
// sendMessage(Nachricht, Absender, Nachrichttyp, Nutzername verbergen, Adminstatus, Zeitstempel, Nachricht anzeigen?, EmpfängerID)
function sendMessage( $nachricht, $user_id, $userchange, $hideuser, $admin, $chat_time, $hidden, $privat ){
mysql_query('INSERT INTO chat (nachricht, user_id, userchange, hideuser, admin, chat_time, hidden, privat)
VALUES ("'.$nachricht.'", "'.$user_id.'", "'.$userchange.'", "'.$hideuser.'", "'.$admin.'", "'.$chat_time.'", "'.$hidden.'", "'.$privat.'")');
......@@ -145,6 +146,7 @@ function UsernametoID($name)
return false;
}
}
// Tabelle mit Onlinestatus
function UserTable ($asarray = FALSE){
if($asarray){
$content = array();
......@@ -177,6 +179,8 @@ function UserTable ($asarray = FALSE){
}
return $content;
}
// MessageFormat(Benutzername verstecken, Adminstatus, Empfänger privat (ID), Zeit, Nachricht, AbsenderID (veraltet))
function MessageFormat($hide, $admin, $privat, $name, $time, $nachricht, $vonid)
{
$datetimeformat = "H:i:s d.M.Y";
......@@ -190,15 +194,15 @@ function MessageFormat($hide, $admin, $privat, $name, $time, $nachricht, $vonid)
</div>';
else
{
if ($admin == 1) {$style = "panel-warning"; $nachricht = BBcode($nachricht);}
else if ($admin == 2) {$style = "panel-danger"; $nachricht = BBcode($nachricht);}
else if ($admin == 3) {$style = ""; $nachricht = BBcode($nachricht);}
else if ($privat != "0") {$style = "panel-success"; }
else {$style = "panel-default"; }
if ($admin == 1) {$style = "panel-warning"; $nachricht = BBcode($nachricht);} // gelb
else if ($admin == 2) {$style = "panel-danger"; $nachricht = BBcode($nachricht);} // rot
else if ($admin == 3) {$style = ""; $nachricht = BBcode($nachricht);} // weiß
else if ($privat != "0") {$style = "panel-success"; } // grün
else {$style = "panel-default"; } // weiß
if($privat != "0")
{
if($privat == $_SESSION['chatuserid'])
if($privat == $_SESSION['chatuserid']) // an mich selber
//return "<p class=\"chatp$style\">".date("H:i:s",$time)." | (Privat) <b>".$name." an Dich</b>: $nachricht</p>";// .IDtoUsername($vonid).
return '<div class="panel '.$style.' chatpanel">
<div class="panel-heading">
......@@ -237,6 +241,7 @@ function MessageFormat($hide, $admin, $privat, $name, $time, $nachricht, $vonid)
//return "<p class=\"chatp$style\">".date("H:i:s",$time)." | <b>$name</b>: $nachricht</p>";
}
}
/*
function nachrichtausgabe($hide, $admin, $privat, $name, $time, $nachricht, $vonid)
{
if($hide == 1)
......@@ -260,6 +265,7 @@ function nachrichtausgabe($hide, $admin, $privat, $name, $time, $nachricht, $von
}
}
*/
function AdminLogAdd($nachricht, $ID, $userchange)
{
mysql_query("INSERT INTO chat (`nachricht` ,`user_id` ,`userchange` ,`hideuser` ,`admin` ,`chat_time` ,`hidden` ,`privat`) VALUES ('$nachricht', '$ID', '$userchange', '1', '0', '".time()."', '1', '0')");
......
......@@ -10,25 +10,28 @@
include("config.php");
// Falls ein Formular übermittelt wurde:
if(isset($_POST['ok'])){ // ... sich ein Benutzer anmelden möchte...
if(isset($_POST['ok'])){ // ... sich ein Benutzer anmelden möchte...
if($_POST['ok'] == "Anmelden"){
// gegen SQL Injections
$username = htmlentities($_POST['username']);
$passwort = htmlentities($_POST['pass']);
if($username == "" OR $passwort == ""){ // Fehler wenn Benutzername oder Passwort leer ist...
$meldung = "<font color=\"red\">Name oder Password Fehlt!</font>";
$JqueryDo = "$('#showLogin').click();";
if($username == "" OR $passwort == ""){ // Fehler wenn Benutzername oder Passwort leer ist...
$meldung = "<font color=\"red\">Name oder Passwort fehlt!</font>";
$JqueryDo = "$('#showLogin').click();"; // klickt Anmeldebutton automatisch, damit Anmeldebildschirm wieder zu sehen ist
}
else{
$result = mysql_query("SELECT id, pass, name, chat FROM user WHERE name = '$username'");
$user = mysql_fetch_array($result);
if($user['pass'] == hash("sha256",$passwort)){ // Prüfung ob PW richtig ist
$_SESSION['chatuserid'] = $user['id']; // UserID und Username in einer Session Speichern
if($user['pass'] == hash("sha256",$passwort)){ // Prüfung ob PW richtig ist
$_SESSION['chatuserid'] = $user['id']; // UserID und Username in einer Session Speichern
$_SESSION['name'] = $user['name'];
mysql_query("UPDATE user SET online = '1', refresh_time = ".time()." WHERE id = '{$_SESSION['chatuserid']}'");
mysql_query("INSERT INTO chat (nachricht, user_id, userchange, hideuser, chat_time) VALUES ('<b>{$user['name']}</b> betritt den Chat', '{$_SESSION['chatuserid']}', '1', '1', '".time()."')");
$meldung .= "<font color=\"green\">Du hast dich erfolgreich angemeldet!</font>";
// Zeigt Anmeldebildschirm nochmals und leitet nach Timeout zu Chat weiter
$JqueryDo = "$('#showLogin').click();".PHP_EOL."setTimeout(function(){ window.location = \"/chat.php\"; }, 700);";
if($user['chat'] == 0){ // Wenn sich der Benutzer das erste mal anmedet, dann bekommt er die Hilfe angezeigt.
// Wenn sich der Benutzer das erste mal anmedet, dann bekommt er die Hilfe angezeigt.
if($user['chat'] == 0){
ChatNachricht("/?", 0, 0 );
}
}
......@@ -38,27 +41,29 @@
}
}
}
else if($_POST['ok'] == "Registrieren"){ // .. sich der Benutzer registieren möchte...
$result = mysql_query("SELECT COUNT(*) AS anz FROM user WHERE name = '{$_POST['username']}'");
else if($_POST['ok'] == "Registrieren"){ // .. sich der Benutzer registieren möchte...
// Prüfe, ob Nutzer bereits existiert
$username = htmlentities($_POST['username']);
$password = htmlentities($_POST['pass']);
$result = mysql_query("SELECT COUNT(*) AS anz FROM user WHERE name = '$username'");
$user = mysql_fetch_array($result);
if($user['anz'] == 0 AND $_POST['username'] != "" AND $_POST['pass'] != ""){
if(($user['anz'] == 0) AND ($username != "") AND ($password != "")){
$_SESSION['chatuserid'] = $user['id'];
$_POST['username'] = htmlentities($_POST['username']);
$_POST['pass'] = hash("sha256", htmlentities($_POST['pass']));
mysql_query("INSERT INTO user (name, pass) VALUES ('{$_POST['username']}', '{$_POST['pass']}')");
mysql_query("INSERT INTO chat (nachricht, user_id, userchange, hideuser, chat_time) VALUES ('<b>{$_POST['username']}</b> hat sich registriert', '{$_SESSION['chatuserid']}', '1', '1', '".time()."')");
AdminLogAdd("{$_POST['username']} hat sich registiert!", $_SESSION['chatuserid'], 0);
$password = hash("sha256", $password);
mysql_query("INSERT INTO user (name, pass) VALUES ('$username', '$password')");
mysql_query("INSERT INTO chat (nachricht, user_id, userchange, hideuser, chat_time) VALUES ('<b>{$username}</b> hat sich registriert', '{$_SESSION['chatuserid']}', '1', '1', '".time()."')");
AdminLogAdd("{$username} hat sich registiert!", $_SESSION['chatuserid'], 0);
$meldung = '<font color="green">Du hast dich erfolgreich registriert!</font><br>';
$JqueryDo = "$('#showRegis').click();".PHP_EOL."setTimeout(function(){ $('#showLogin').click(); }, 1000);";
}else{
if($user['anz'] != 0) $meldung = '<font color="red">Name existiert bereits!</font><br>';
else $meldung = '<font color="red">Name oder Passwort fehlt oder ist ungltig!</font><br>';
else $meldung = '<font color="red">Name oder Passwort fehlt oder ist ungltig!</font><br>';
$JqueryDo = "$('#showRegis').click();";
}
}
}
// Aufbau der Verschiedenen Seiten:
// Aufbau der verschiedenen Seiten:
if($_GET["action"] == "impressum"){ // Aufbau und Inhalt der Seite Impressum:
$content = '<div class="page-header">
<h1>Impressum</h1>
......@@ -107,7 +112,7 @@ if($_GET["action"] == "impressum"){ // Aufbau und Inhalt der Seite Impressu
<!-- Optional theme -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap-theme.min.css" integrity="sha384-fLW2N01lMqjakBkx3l/M9EahuwpSfeNvV63J5ezn3uZzapT0u7EYsXMjQV+0En5r" crossorigin="anonymous">
<!--custrom css-->
<!--custom css-->
<link rel="stylesheet" href="style.css">
</head>
<body>
......
......@@ -3,39 +3,44 @@
* Diese Datei nimmt die vom Benutzer gesendeten Nachrichten entgegen und speichert sie in der Datenbank.
*/
include("config.php");
// rufe Nutzerinformationen ab --> für Admin-Status
$result = mysql_query("SELECT * FROM user WHERE id = '{$_SESSION['chatuserid']}'");
$users = mysql_fetch_array($result);
var_dump($_POST);
// Prüfe, ob sendender Nutzer online ist
if(!isset($_SESSION['chatuserid']) OR $users['online'] == 0)
echo "Fehler";
// unterscheide ausgewählte Nachrichtenarten
else{
// normale Nachricht
if(isset($_POST['chatok'])) {
if($_POST['text'] != "") {
if(substr(trim($_POST['text']), 0, 3) == "/p ") $privat = $_SESSION['chatuserid'];
else $privat = "";
if(substr(trim($_POST['text']), 0, 3) == "/p ") {
$end = strpos($_POST['text'], ":");
$id = UsernametoID(substr($_POST['text'], 3, $end-3));
}
else $id = 0;
ChatNachricht($_POST['text'], 0, 0);
echo "OK";
}
}
// Moderatorennachricht
else if(isset($_POST['modok']) AND $users['admin'] >= 1) {
if($_POST['text'] != "") {
ChatNachricht($_POST['text'], 1, 0);
echo "OK";
}
}
// Adminnachricht
else if(isset($_POST['adminok']) AND $users['admin'] >= 2) {
if($_POST['text'] != "") {
ChatNachricht($_POST['text'], 2, 0);
echo "OK";
}
}
// Formular wurde manipuliert
else {
echo "Fehler";
}
}
?>
\ No newline at end of file
?>
......@@ -5,30 +5,38 @@
// Konfig und Funktionen einbinden
include("config.php");
// Rufe Nutzerinformationen ab
$result = mysql_query("SELECT chat, online FROM user WHERE id = '{$_SESSION['chatuserid']}'");
$users = mysql_fetch_array($result);
// Prüfe, ob Nutzer noch online ist
if(isset($_SESSION['chatuserid']) AND $users['online'] == 1)
{
// Logoff Timeout zurücksetzen
mysql_query("UPDATE user SET refresh_time = '".time()."' WHERE id = '{$_SESSION['chatuserid']}'");
$array = array();
// Neue Nachrichten ausgeben:
$result = mysql_query("SELECT chat.nachricht, chat.chat_time, chat.user_id, user.name, chat.hideuser, chat.admin, chat.privat, chat.userchange, chat.id, chat.hidden FROM chat LEFT JOIN user ON user.id = chat.user_id WHERE chat.id > {$users['chat']} AND chat.chat_time <= ".time()." ORDER BY chat.id");//AND chat.hidden = '0'
$nachricht = "";
// Baue String mit neuen Nachrichten zusammen
while($chat = mysql_fetch_array($result))
{
if($chat['hidden'] != 1)
// Formatiert eine Nachricht in HTML
$nachricht .= MessageFormat($chat['hideuser'], $chat['admin'], $chat['privat'], $chat['name'], $chat['chat_time'], $chat['nachricht'], $chat['name'] );
$chatid = $chat['id'];
}
// setze letzte erhaltene Nachricht für den Nutzer in der DB
if(isset($chatid)) mysql_query("UPDATE user SET chat = '$chatid' WHERE id = '{$_SESSION['chatuserid']}'");
$array['newMessages'] = $nachricht;
// Liste der Benutzer:
// Liste der Benutzer (Onlinestatus)
$array['UsersTable'] = UserTable(true);
// Rückgabe an JS über JSON
echo json_encode( $array, JSON_PRETTY_PRINT);
}
?>
\ No newline at end of file
?>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment