PHP-Einfach.de PHP lernen leicht gemacht

Navigation
» Startseite
» Newsübersicht
» Kontakt
» Impressum

Community
» Forum
» Gästebuch

Tutorial
» PHP Tutorial
» MySQL Tutorial
» PHP
» MySQL
» Codeschnipsel

Downloads
» Einführung
» Scripts
» Command Board

Sonstiges
» md5-Generator
» Generator
» Wissenswertes

PHP lernen


Dieses Projekt wird unterstützt von
Lichteffekte Shop

 
Partner:
PHP Forum
Mathe Nachhilfe
Suchmaschinenoptimierung

Chat

Zurück zur Übersicht

Ein kleiner Chat per PHP

ich hatte gerade lange und habe mir gedacht ich mal mal einen Chat. Das ganze ist noch nicht ganz ausgereift aber einiges ist schon möglich.

Hier die Dateien im einzelnen:

index.php //frameset für den chat ... damit nur eine datei refreched wird
 PHP 
1:
2:
3:
4:
5:
6:
7:

<php
echo "<frameset rows=\"80%,20%\">";
echo "<frame src=\"ausgabe_chat_texte.php?user=$_GET[user]\">";
    echo "<frame src=\"insert_chat_texte.php?user=$_GET[user]\">";
    echo "</frameset>";
?>



ausgabe_chat_texte.php //ausgabe der chattexte
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
<?php

  
include_once("chat_mysql.php");

  
$result mysql_query("SELECT * FROM online WHERE user = '$_GET[user]'");
  
$menge mysql_num_rows($result);
  if(
$menge == 0)
    {
    
$zeit time();
    
$eintrag "INSERT INTO online (user, time)
                VALUES ('$_GET[user]','$zeit')"
;
    
$eintragen mysql_query($eintrag);
  
    
$eintrag "INSERT INTO chat (absender, nachricht, time)
                  VALUES ('System', '$_GET[user] ist Online', '$zeit')"
;
    
$eintragen mysql_query($eintrag);
    echo 
"<link rel=\"stylesheet\" type=\"text/css\" href=\"chat_style.css\">";
    echo 
"<meta http-equiv=\"refresh\" content=\"2;\">";
    echo 
"<div>";
    echo 
"Willkommen im Lands of War Chat.<br>";
    echo 
"Sie werden weitergeleitet ...<br>";
    echo 
"</div>";
    }
    else
    {
    
$abfrage "SELECT * FROM chat ORDER BY id DESC LIMIT 25";
    
$ergebnis mysql_query($abfrage);
    while(
$row mysql_fetch_object($ergebnis))
      {
      if(
$row->status == "2" AND $row->empfänger == "$_GET[user]" OR $row->status == "2" AND $row->absender == "$_GET[user]")
        {
          echo 
"<link rel=\"stylesheet\" type=\"text/css\" href=\"chat_style.css\">";
          echo 
"<meta http-equiv=\"refresh\" content=\"2;\">";
          echo 
"<div class=\"privat\">";
          echo 
"$row->absender --> $row->empfänger: $row->nachricht<br>";
          echo 
"</div>";
        }
        else
        {
        
$zeit $row->zeit;
        
$absender $row->absender;
        
$nachricht $row->nachricht;
        echo 
"<link rel=\"stylesheet\" type=\"text/css\" href=\"chat_style.css\">";
        echo 
"<meta http-equiv=\"refresh\" content=\"2;\">";
        echo 
"<div>";
        echo 
"$absender: $nachricht<br>";
        echo 
"</div>";
        }
      }
    }
?>



form_chat_texte.php //zum eingeben der chattexte
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
<?php
include_once ("chat_mysql.php");
 
echo 
"<link rel=\"stylesheet\" type=\"text/css\" href=\"chat_style.css\">";
echo 
"<form action=\"insert_chat_texte.php?user=$_GET[user]\" method=\"post\">";
echo 
"An: <input size=\"15\" name=\"empfänger\" type=\"text\"> ";
echo 
"Nachricht: <input size=\"24\" name=\"nachricht\" type=\"text\"> ";
echo 
"<input value=\"Absenden\" type=\"submit\"><br>";
echo 
"</form>";

echo 
"Online: ";
$abfrage "SELECT * FROM online";
$ergebnis mysql_query($abfrage);
while(
$row mysql_fetch_object($ergebnis))
  {
  echo 
"$row->user, ";
  }
  
?>



insert_chat_texte.php //zum eintragen der Chattexte
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
<?php
include_once("chat_mysql.php");
if(
$_POST[nachricht] == "")
  {
  include_once (
"form_chat_texte.php");
  }
  else
  {
  
$zeit time();
  if(
$_POST[empfänger] == "")
    {
    
$eintrag "INSERT INTO chat (absender, nachricht, time)
                VALUES ('$_GET[user]', '$_POST[nachricht]', '$zeit')"
;
    
$eintragen mysql_query($eintrag);
    }
    else
    {
    
$eintrag "INSERT INTO chat (absender, nachricht, time, empfänger, status)
                VALUES ('$_GET[user]', '$_POST[nachricht]', '$zeit', '$_POST[empfänger]', '2')"
;
    
$eintragen mysql_query($eintrag);
    }
    include_once(
"form_chat_texte.php");
  }
?>



chat_style.css //Chat aussehen ... anpasspaar
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
body
  {
  background-color: #000000;
  color: #FFFFFF;
  }

div
  {
  font:15px verdana,sans-serif; 
  text-decoration:none;
  border:none; 
  }
  
.privat
  {
  color: #FF6600;
  }
  
a
  {
  text-decoration:none;
  color: #FF6600;
  text-align:center;
  border:none; 
  }



chat_mysql.php //mysql zugangsdaten
 PHP 
1:
2:
3:
4:
5:
6:
7:
8:
<?php
//Verbindung zur MySQL Datenbank
$verbindung mysql_connect ("server""username""passwort")
    or die (
"Verbindung zum SERVER konnte nicht hergestellt werden.");

mysql_select_db("datenbank")
    or die (
"Verbindung zur DATENBANK konnte nicht hergestellt werden.");
?>



Vielleicht sollte ich noch darauf hinweißen das dieser Chat bei vielen User ziehmlich viel Traffic verursacht einfach aus dem Grund das die Datei für die Ausgabe aller 2 Sekunden aktuallisiert wird und dadurch immer wieder die Datenbank ausgabe ausgeführt wird.

Die Datenbank sieht wie folgt aus:
Tabelle online
id, int, 8 //ID
user, text //Der Username
time, varchar, 25 //Zeit der letzten aktualisierung

Tabelle chat
id, int, 8 //ID wie gehabt
absender, text //Der Ersteller des Textes
time, varchar, 25 //Erstellungszeit
nachricht, text //Nachricht
status, 1 //gibt an ob privat oder nicht
empfänger, text //falls privat .. der Empfänger

Für Leute die immer auf dem aktuellen Stand der Onlineuser sein möchten müssen folgende Datei selber ausführen oder als Cronjob benutzten.

clear_chat_user.php //leert die Tabelle "online"
 PHP 
1:
2:
3:
4:
5:
<?php
include_once("chat_mysql.php");
$loeschen "DELETE FROM online";
$loesch mysql_query($loeschen);
?>



MfG Eiermann - Dateien gepackt im Anhang.

Kommentare

Zurück zur Übersicht

Autor [A&M-Projekt] Eiermann

News
13.08 - » Spam im Gästebuch
Endlich Schluss mit dem Spam

08.12 - » Clanletter 2.0
Clanletter wurde komplett neu programmiert

01.09 - » Command Board 1.0 - 2.0
Das Command Board 1.0 Beta 2.0 ist erschienen


Mehr

Forum
» Entwickler Forum

» insert nach login

» Tabellenzelle zu groß







© PHP-Einfach.de 2003 - 2012