Chat Register-/Loginproblem

D

DEDEX7200Pro

Hallo,
ich habe hier folgenden Chat programmiert, hab aber das Problem, dass das mit dem Login bzw. dem Regristrieren nicht so ganz hin haut. Ich wollte, dass die User sich regristrieren, dann einlogen und dann etwas schreiben. Dann soll der Benutzername angezeigt werden, der etwas geschrieben hat. Zusätzlich sollte man bei "An" eine Nachricht nur an einen bestimmten Nutzer schreiben können. Ich finde bloss leider den Fehler nicht^^ Hier mein Script:

index.php ////Formular zum Einlogen
Code:
Falls du noch keinen Account hast, klicke bitte <a href="eintrag.php">hier</a>.
<form action="login.php" method="post">
Dein Benutzername:<br>
<input type="text" size="24" maxlength="50"
name="user"><br><br>
Dein Passwort:<br>
<input type="password" size="24" maxlength="50"
name="password"><br>
<input type="submit" value="Login">
</form>

login.php ////frägt Benutzername ab
Code:
<?php
session_start();
?>
<?php
include_once("chat_mysql.php");

$user = $_POST["user"];
$passwort = md5($_POST["password"]);

$abfrage = "SELECT user, passwort FROM online WHERE user LIKE '$user' LIMIT 1";
$ergebnis = mysql_query($abfrage);
$row = mysql_fetch_object($ergebnis);

if($row->passwort == $passwort)
    {
    $_SESSION["user"] = $user;
    echo "Login erfolgreich. <br> <a href=\"chat.php\">Gehe zum Chat</a>";
    }
else
    {
    echo "Benutzername und/oder Passwort waren falsch. <a href=\"index.php\">Login</a>";
    }
?>

eintrag.php ////Formular zum Benutzernameneintrag
Code:
<form action="eintragen.php" method="post">
Dein Benutzername:<br>
<input type="text" size="24" maxlength="50"
name="user"><br><br>
Dein Passwort:<br>
<input type="password" size="24" maxlength="50"
name="passwort"><br>
Dein Passwort (wiederholen):<br>
<input type="password" size="24" maxlength="50"
name="passwort2"><br>
<input type="submit" value="Abschicken">
</form>

eintragen.php ////trägt Benutzernamen ein
Code:
<?php
include_once("chat_mysql.php");

$user = $_POST["user"];
$passwort = $_POST["passwort"];
$passwort2 = $_POST["passwort2"];

if($passwort != $passwort2 OR $user == "" OR $passwort == "")
    {
    echo "Eingabefehler. Bitte alle Felder korekt ausfüllen. <a href=\"eintrag.php\">Zurück</a>";
    exit;
    }
$passwort = md5($passwort);

$result = mysql_query("SELECT id FROM online WHERE user LIKE '$user'");
$menge = mysql_num_rows($result);

if($menge == 0)
    {
    $eintrag = "INSERT INTO online (user, passwort) VALUES ('$user', '$passwort')";
    $eintragen = mysql_query($eintrag);

    if($eintragen == true)
        {
        echo "Benutzername <b>$user</b> wurde erstellt. <a href=\"index.php\">Login</a>";
        }
    else
        {
        echo "Fehler beim Speichern des Benutzernames. <a href=\"eintrag.php\">Zurück</a>";
        }

    }
else
    {
    echo "Benutzername schon vorhanden. <a href=\"eintrag.php\">Zurück</a>";
    }
?>

chat.php ////ruft den Chat auf
Code:
<?php
session_start();
?>
<?php
if(!isset($_SESSION["user"]))
   {
   echo "Bitte erst <a href=\"index.php\">einloggen</a>";
   exit;
   }

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>";
?>

insert_chat_texte.php
Code:
<?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");
  }
?>

form_chat_texte.php
Code:
<?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, ";
  }
  
?>

ausgabe_chat_texte.php
Code:
<?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>";
        }
      }
    }
?>

chat_style.css ////Ist für das Design zuständig
Code:
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 ////hier gibt man die Datenbankdaten ein
Code:
<?php
//Verbindung zur MySQL Datenbank
$verbindung = mysql_connect ("localhost", "Datenbankbenutzer", "Passwort")
    or die ("Verbindung zum SERVER konnte nicht hergestellt werden.");

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

Wäre es eigentlich ratsam ein "Passwort vergessen" hinzumachen und die E.Mailadresse einzuspeichern? Wie könnte ich dies machen? Smileys folgen noch^^ Hab den Smiley-Script schon in meinem Gästebuch --> einfach kopieren. Zuerst möchte ich des mit dem Benutzer hinbekommen.
 
ich kann keinen Benutzer in die Datenbank erstellen. Da kommt folgendes:

"Fehler beim Speichern des Benutzernames. Zurück"

Also keinerlei Fehlermeldung. (eintragen.php)

Edit: Ich habe die Datenbank mal geleert und dann des ganze nochmals versucht

Folgender Fehler: Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /users/climbonline/www/test_chat/eintragen.php on line 16
 
Zuletzt bearbeitet von einem Moderator:
nachdem ich des gelöscht habe kommt, dass dort keine tabelle ist. Also ne komplett leere Datenbank. Des von dir macht dann keinen Sinn mi dem PHP-Code, oder?
 
Es gibt keine Tabelle? Na dann ist klar dass du nichts reinschreiben kannst. Du kannst auch nichts in ein Regal legen, wenn du kein Regal hast.
 
das heisst ich muss die Tabelle "online" und "chat" manuell erstellen. Vielen Dank. Edit: Und wie muss des dann aussehen?

Also ich meine, klar, beim Chat sieht die so aus:

Code:
CREATE TABLE `online` (
  `id` int(8) NOT NULL default '0',
  `user` text NOT NULL,
  `time` varchar(25) NOT NULL default '',
  FULLTEXT KEY `aspizius` (`user`)
) TYPE=MyISAM;

CREATE TABLE `chat` (
  `id` int(8) NOT NULL default '0',
  `absender` text NOT NULL,
  `time` varchar(25) NOT NULL default '',
  `nachricht` text NOT NULL,
  `status` char(1) NOT NULL default '',
  `empfänger` text NOT NULL
) TYPE=MyISAM;

Aber wie bekomme ich des da noch mit dem Login rein?

ist dies dann so korrekt?

Code:
CREATE TABLE `online` (
`id` int(8) NOT NULL default '0',
`user` varchar (150) NOT NULL default '',
`passwort` varchar (32) NOT NULL default '',
`time` varchar(25) NOT NULL default '',
FULLTEXT KEY `aspizius` (`user`)
) TYPE=MyISAM;

CREATE TABLE `chat` (
`id` int(8) NOT NULL default '0',
`absender` text NOT NULL,
`time` varchar(25) NOT NULL default '',
`nachricht` text NOT NULL,
`status` char(1) NOT NULL default '',
`empfänger` text NOT NULL
) TYPE=MyISAM;
 
Zuletzt bearbeitet von einem Moderator:
Jep, so ist das.
Am besten machst du das mit phpmyadmin. Aber bevor du damit anfängst ließ dich in das Thema Datenbanken ein und mach dir Gedanken zur Datenbankstruktur, sonst machst du dir nacher noch mehr Probleme.

Danke? Dann klick doch mal auf den Danke-Button :-)
 
also das mit dem Login hat jetzt geklappt. Hab jetzt mal 3 Benutzer angemeldet und 3 Browser verwendet. Wenn jetzt aber Gustav an Peter schreibt kann das Walter mitlesen. Es steht zudem nicht vor dem Text, wer dies gesagt hat. Ich denke aber, dass ich des jetzt hinbekomme
 

Neue Beiträge

Zurück