Commit 263bf5ce authored by Markus's avatar Markus

Besser kommentiert

parent 9d1ffa0d
<?php <?php
session_start(); session_start();
// Melde alle Fehler außer E_NOTICE // Melde alle Fehler außer E_NOTICE
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED); error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED); // alle außer ...
ini_set("display_errors", 1); ini_set("display_errors", 1); // zeige an
$link = mysql_connect('localhost', 'chat', 'chat'); $link = mysql_connect('localhost', 'chat', 'chat');
mysql_select_db('chat', $link); mysql_select_db('chat', $link);
...@@ -16,7 +16,7 @@ $result = mysql_query("SELECT count(*) AS anzahl FROM user"); ...@@ -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"); $result = mysql_query("SELECT count(*) AS anzahl FROM user WHERE Online = 1");
while($Useranzahlon1 = mysql_fetch_array($result)) $Useronline = $Useranzahlon1['anzahl']; while($Useranzahlon1 = mysql_fetch_array($result)) $Useronline = $Useranzahlon1['anzahl'];
// //
// Funktions // Funktionen
// //
function ChatNachricht($text, $admin, $userchange ){ function ChatNachricht($text, $admin, $userchange ){
if($admin != 2) $text = addslashes(htmlspecialchars($text)); if($admin != 2) $text = addslashes(htmlspecialchars($text));
...@@ -37,7 +37,7 @@ function ChatNachricht($text, $admin, $userchange ){ ...@@ -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)) == "/befehle") OR
(trim(strtolower($text)) == "/commands") OR (trim(strtolower($text)) == "/commands") OR
(trim(strtolower($text)) == "/hilfe")OR (trim(strtolower($text)) == "/hilfe")OR
...@@ -93,6 +93,7 @@ function ChatNachricht($text, $admin, $userchange ){ ...@@ -93,6 +93,7 @@ function ChatNachricht($text, $admin, $userchange ){
} }
return $text; 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 ){ 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) 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.'")'); VALUES ("'.$nachricht.'", "'.$user_id.'", "'.$userchange.'", "'.$hideuser.'", "'.$admin.'", "'.$chat_time.'", "'.$hidden.'", "'.$privat.'")');
...@@ -145,6 +146,7 @@ function UsernametoID($name) ...@@ -145,6 +146,7 @@ function UsernametoID($name)
return false; return false;
} }
} }
// Tabelle mit Onlinestatus
function UserTable ($asarray = FALSE){ function UserTable ($asarray = FALSE){
if($asarray){ if($asarray){
$content = array(); $content = array();
...@@ -177,6 +179,8 @@ function UserTable ($asarray = FALSE){ ...@@ -177,6 +179,8 @@ function UserTable ($asarray = FALSE){
} }
return $content; return $content;
} }
// MessageFormat(Benutzername verstecken, Adminstatus, Empfänger privat (ID), Zeit, Nachricht, AbsenderID (veraltet))
function MessageFormat($hide, $admin, $privat, $name, $time, $nachricht, $vonid) function MessageFormat($hide, $admin, $privat, $name, $time, $nachricht, $vonid)
{ {
$datetimeformat = "H:i:s d.M.Y"; $datetimeformat = "H:i:s d.M.Y";
...@@ -190,15 +194,15 @@ function MessageFormat($hide, $admin, $privat, $name, $time, $nachricht, $vonid) ...@@ -190,15 +194,15 @@ function MessageFormat($hide, $admin, $privat, $name, $time, $nachricht, $vonid)
</div>'; </div>';
else else
{ {
if ($admin == 1) {$style = "panel-warning"; $nachricht = BBcode($nachricht);} if ($admin == 1) {$style = "panel-warning"; $nachricht = BBcode($nachricht);} // gelb
else if ($admin == 2) {$style = "panel-danger"; $nachricht = BBcode($nachricht);} else if ($admin == 2) {$style = "panel-danger"; $nachricht = BBcode($nachricht);} // rot
else if ($admin == 3) {$style = ""; $nachricht = BBcode($nachricht);} else if ($admin == 3) {$style = ""; $nachricht = BBcode($nachricht);} // weiß
else if ($privat != "0") {$style = "panel-success"; } else if ($privat != "0") {$style = "panel-success"; } // grün
else {$style = "panel-default"; } else {$style = "panel-default"; } // weiß
if($privat != "0") 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 "<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"> return '<div class="panel '.$style.' chatpanel">
<div class="panel-heading"> <div class="panel-heading">
...@@ -237,6 +241,7 @@ function MessageFormat($hide, $admin, $privat, $name, $time, $nachricht, $vonid) ...@@ -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>"; //return "<p class=\"chatp$style\">".date("H:i:s",$time)." | <b>$name</b>: $nachricht</p>";
} }
} }
/*
function nachrichtausgabe($hide, $admin, $privat, $name, $time, $nachricht, $vonid) function nachrichtausgabe($hide, $admin, $privat, $name, $time, $nachricht, $vonid)
{ {
if($hide == 1) if($hide == 1)
...@@ -260,6 +265,7 @@ function nachrichtausgabe($hide, $admin, $privat, $name, $time, $nachricht, $von ...@@ -260,6 +265,7 @@ function nachrichtausgabe($hide, $admin, $privat, $name, $time, $nachricht, $von
} }
} }
*/
function AdminLogAdd($nachricht, $ID, $userchange) 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')"); 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 @@ ...@@ -10,25 +10,28 @@
include("config.php"); include("config.php");
// Falls ein Formular übermittelt wurde: // 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"){ if($_POST['ok'] == "Anmelden"){
// gegen SQL Injections
$username = htmlentities($_POST['username']); $username = htmlentities($_POST['username']);
$passwort = htmlentities($_POST['pass']); $passwort = htmlentities($_POST['pass']);
if($username == "" OR $passwort == ""){ // Fehler wenn Benutzername oder Passwort leer ist... if($username == "" OR $passwort == ""){ // Fehler wenn Benutzername oder Passwort leer ist...
$meldung = "<font color=\"red\">Name oder Password Fehlt!</font>"; $meldung = "<font color=\"red\">Name oder Passwort fehlt!</font>";
$JqueryDo = "$('#showLogin').click();"; $JqueryDo = "$('#showLogin').click();"; // klickt Anmeldebutton automatisch, damit Anmeldebildschirm wieder zu sehen ist
} }
else{ else{
$result = mysql_query("SELECT id, pass, name, chat FROM user WHERE name = '$username'"); $result = mysql_query("SELECT id, pass, name, chat FROM user WHERE name = '$username'");
$user = mysql_fetch_array($result); $user = mysql_fetch_array($result);
if($user['pass'] == hash("sha256",$passwort)){ // Prüfung ob PW richtig ist if($user['pass'] == hash("sha256",$passwort)){ // Prüfung ob PW richtig ist
$_SESSION['chatuserid'] = $user['id']; // UserID und Username in einer Session Speichern $_SESSION['chatuserid'] = $user['id']; // UserID und Username in einer Session Speichern
$_SESSION['name'] = $user['name']; $_SESSION['name'] = $user['name'];
mysql_query("UPDATE user SET online = '1', refresh_time = ".time()." WHERE id = '{$_SESSION['chatuserid']}'"); 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()."')"); 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>"; $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);"; $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 ); ChatNachricht("/?", 0, 0 );
} }
} }
...@@ -38,27 +41,29 @@ ...@@ -38,27 +41,29 @@
} }
} }
} }
else if($_POST['ok'] == "Registrieren"){ // .. sich der Benutzer registieren möchte... else if($_POST['ok'] == "Registrieren"){ // .. sich der Benutzer registieren möchte...
$result = mysql_query("SELECT COUNT(*) AS anz FROM user WHERE name = '{$_POST['username']}'"); // 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); $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']; $_SESSION['chatuserid'] = $user['id'];
$_POST['username'] = htmlentities($_POST['username']); $password = hash("sha256", $password);
$_POST['pass'] = hash("sha256", htmlentities($_POST['pass'])); mysql_query("INSERT INTO user (name, pass) VALUES ('$username', '$password')");
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>{$username}</b> hat sich registriert', '{$_SESSION['chatuserid']}', '1', '1', '".time()."')");
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("{$username} hat sich registiert!", $_SESSION['chatuserid'], 0);
AdminLogAdd("{$_POST['username']} hat sich registiert!", $_SESSION['chatuserid'], 0);
$meldung = '<font color="green">Du hast dich erfolgreich registriert!</font><br>'; $meldung = '<font color="green">Du hast dich erfolgreich registriert!</font><br>';
$JqueryDo = "$('#showRegis').click();".PHP_EOL."setTimeout(function(){ $('#showLogin').click(); }, 1000);"; $JqueryDo = "$('#showRegis').click();".PHP_EOL."setTimeout(function(){ $('#showLogin').click(); }, 1000);";
}else{ }else{
if($user['anz'] != 0) $meldung = '<font color="red">Name existiert bereits!</font><br>'; 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();"; $JqueryDo = "$('#showRegis').click();";
} }
} }
} }
// Aufbau der Verschiedenen Seiten: // Aufbau der verschiedenen Seiten:
if($_GET["action"] == "impressum"){ // Aufbau und Inhalt der Seite Impressum: if($_GET["action"] == "impressum"){ // Aufbau und Inhalt der Seite Impressum:
$content = '<div class="page-header"> $content = '<div class="page-header">
<h1>Impressum</h1> <h1>Impressum</h1>
...@@ -107,7 +112,7 @@ if($_GET["action"] == "impressum"){ // Aufbau und Inhalt der Seite Impressu ...@@ -107,7 +112,7 @@ if($_GET["action"] == "impressum"){ // Aufbau und Inhalt der Seite Impressu
<!-- Optional theme --> <!-- 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"> <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"> <link rel="stylesheet" href="style.css">
</head> </head>
<body> <body>
......
...@@ -3,39 +3,44 @@ ...@@ -3,39 +3,44 @@
* Diese Datei nimmt die vom Benutzer gesendeten Nachrichten entgegen und speichert sie in der Datenbank. * Diese Datei nimmt die vom Benutzer gesendeten Nachrichten entgegen und speichert sie in der Datenbank.
*/ */
include("config.php"); include("config.php");
// rufe Nutzerinformationen ab --> für Admin-Status
$result = mysql_query("SELECT * FROM user WHERE id = '{$_SESSION['chatuserid']}'"); $result = mysql_query("SELECT * FROM user WHERE id = '{$_SESSION['chatuserid']}'");
$users = mysql_fetch_array($result); $users = mysql_fetch_array($result);
var_dump($_POST);
// Prüfe, ob sendender Nutzer online ist
if(!isset($_SESSION['chatuserid']) OR $users['online'] == 0) if(!isset($_SESSION['chatuserid']) OR $users['online'] == 0)
echo "Fehler"; echo "Fehler";
// unterscheide ausgewählte Nachrichtenarten
else{ else{
// normale Nachricht
if(isset($_POST['chatok'])) { if(isset($_POST['chatok'])) {
if($_POST['text'] != "") { 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); ChatNachricht($_POST['text'], 0, 0);
echo "OK"; echo "OK";
} }
} }
// Moderatorennachricht
else if(isset($_POST['modok']) AND $users['admin'] >= 1) { else if(isset($_POST['modok']) AND $users['admin'] >= 1) {
if($_POST['text'] != "") { if($_POST['text'] != "") {
ChatNachricht($_POST['text'], 1, 0); ChatNachricht($_POST['text'], 1, 0);
echo "OK"; echo "OK";
} }
} }
// Adminnachricht
else if(isset($_POST['adminok']) AND $users['admin'] >= 2) { else if(isset($_POST['adminok']) AND $users['admin'] >= 2) {
if($_POST['text'] != "") { if($_POST['text'] != "") {
ChatNachricht($_POST['text'], 2, 0); ChatNachricht($_POST['text'], 2, 0);
echo "OK"; echo "OK";
} }
} }
// Formular wurde manipuliert
else { else {
echo "Fehler"; echo "Fehler";
} }
} }
?> ?>
\ No newline at end of file
...@@ -5,30 +5,38 @@ ...@@ -5,30 +5,38 @@
// Konfig und Funktionen einbinden // Konfig und Funktionen einbinden
include("config.php"); include("config.php");
// Rufe Nutzerinformationen ab
$result = mysql_query("SELECT chat, online FROM user WHERE id = '{$_SESSION['chatuserid']}'"); $result = mysql_query("SELECT chat, online FROM user WHERE id = '{$_SESSION['chatuserid']}'");
$users = mysql_fetch_array($result); $users = mysql_fetch_array($result);
// Prüfe, ob Nutzer noch online ist
if(isset($_SESSION['chatuserid']) AND $users['online'] == 1) if(isset($_SESSION['chatuserid']) AND $users['online'] == 1)
{ {
// Logoff Timeout zurücksetzen // Logoff Timeout zurücksetzen
mysql_query("UPDATE user SET refresh_time = '".time()."' WHERE id = '{$_SESSION['chatuserid']}'"); mysql_query("UPDATE user SET refresh_time = '".time()."' WHERE id = '{$_SESSION['chatuserid']}'");
$array = array(); $array = array();
// Neue Nachrichten ausgeben: // 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' $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 = ""; $nachricht = "";
// Baue String mit neuen Nachrichten zusammen
while($chat = mysql_fetch_array($result)) while($chat = mysql_fetch_array($result))
{ {
if($chat['hidden'] != 1) 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'] ); $nachricht .= MessageFormat($chat['hideuser'], $chat['admin'], $chat['privat'], $chat['name'], $chat['chat_time'], $chat['nachricht'], $chat['name'] );
$chatid = $chat['id']; $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']}'"); if(isset($chatid)) mysql_query("UPDATE user SET chat = '$chatid' WHERE id = '{$_SESSION['chatuserid']}'");
$array['newMessages'] = $nachricht; $array['newMessages'] = $nachricht;
// Liste der Benutzer: // Liste der Benutzer (Onlinestatus)
$array['UsersTable'] = UserTable(true); $array['UsersTable'] = UserTable(true);
// Rückgabe an JS über JSON
echo json_encode( $array, JSON_PRETTY_PRINT); 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