PHP bzw JS: Chat

Fragen zum Thema HTML, JavaScript, PHP
Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

PHP bzw JS: Chat

Beitrag von naums » Do Jul 15, 2010 9:27 pm

Ich will eine Chat Homepage schreiben. (PHP/JS; der HTML teil is ja das einfachste) Ne Idee zum prinzip hatte ich dazu auch schon.

1. Einloggen im Chat: Eine Datei (mal chat.txt genannt) wird ausgelesen, dann Usernames, daten und Text zugeordnet und ausgegeben.
2. Schreiben: Die Datei chat.txt wird um das verändert was man selbst schreibt.
--> Aber jetzt muss ein Reload erfolgen, damit man auch das mitlesen kann was man selbst schreibt, ohne warten zu müssen, dass andre etwas schreiben.
3. Andre schreiben etwas. Also muss in intervallen die Datei chat.php abgefragt werden. bzw. Reloaded werden, wobei ich nicht genau weiß wie hoch diese Abtastrate sein sollte.

Ich brauche: ne möglichkeit die chat.php dynamisch zu laden (vom SERVER! Die Datei liegt auf dem Server, nicht auf einem Client.) bzw. aller X Sekunden die Datei abzufragen.
Und ich brauche ne möglichkeit, die Datei möglichst kurz zu halten, kp, 5KB oder so sollten reichen für einen Chat.

Kann mir einer von euch helfen?
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: PHP bzw JS: Chat

Beitrag von Xin » Do Jul 15, 2010 10:32 pm

naums hat geschrieben:Ich brauche: ne möglichkeit die chat.php dynamisch zu laden (vom SERVER! Die Datei liegt auf dem Server, nicht auf einem Client.) bzw. aller X Sekunden die Datei abzufragen.
Und ich brauche ne möglichkeit, die Datei möglichst kurz zu halten, kp, 5KB oder so sollten reichen für einen Chat.

Kann mir einer von euch helfen?
Ich würde hier vermutlich mit Hilfe von AJAX in sehr kurzen Abständen den Server fragen, ob es in meinem Chat etwas Neues gibt.
Wenn möglich würde ich dem Server beibiegen, dass er sich mit der Antwort Zeit lassen kann... solange er nicht antwortet, gibt's nix Neues.
So nach 5 Sekunden kann man dann mal "Nopes, nix Neues" antworten und der Client muss neu fragen.

Der Client kann bei einem HTTP-Chat nicht informiert werden, dass er was neues zu laden hat. Er muss also immer selbst neuladen und gucken, ob sich was geändert hat.
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: PHP bzw JS: Chat

Beitrag von naums » Fr Jul 16, 2010 11:56 am

okay. muss aber da die ganze seite neu geladen werden, oder gibts einen Befehl dafür, dass der Client die Datei chat.txt neu abfragt, und nur dann das neu ausgibt, was auf der basiert?
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Dubbel
Beiträge: 197
Registriert: So Jul 06, 2008 6:25 pm
Wohnort: Kopenhagen
Kontaktdaten:

Re: PHP bzw JS: Chat

Beitrag von Dubbel » Fr Jul 16, 2010 4:44 pm

Guck dir mal http://proggen.org/doku.php?id=ajax:first_steps an.

Du kannst per AJAX die chat.txt aufrufen und in z.B. in einem Div deiner Wahl ausgeben lassen. Das ist relativ ressourcenschonend, da keine PHP-Datei interpretiert werden muss.

Natürlich musst du, wenn der User Javascript deaktiviert hat auf

Code: Alles auswählen

<meta http-equiv="refresh" content="60">
zurückgreifen.

Dominik
Beiträge: 381
Registriert: Mo Jul 07, 2008 9:39 pm

Re: PHP bzw JS: Chat

Beitrag von Dominik » Sa Jul 17, 2010 6:59 am

Was spricht den gegen einen IRC chat?


mfg
Rechtschreibefehler sind gewollt und dienen der Unterhaltung

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: PHP bzw JS: Chat

Beitrag von Xin » Sa Jul 17, 2010 9:35 am

Dominik hat geschrieben:Was spricht den gegen einen IRC chat?
Die Frage finde ich gut...
IRC, Skype, MSN, Web???
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: PHP bzw JS: Chat

Beitrag von naums » Sa Jul 17, 2010 11:17 am

... gesundheit? :lol:

Mal im Ernst: Ich will meine Seiten komplett selbst schreiben, deshalb nehme ich auch kein CMS sondern schreibe meine Seiten selbst, und nehme auch kein vorgefertigtes Forum, sondern schreibe das auch selbst, weil es mir spaß macht :)
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
Xin
nur zu Besuch hier
Beiträge: 8862
Registriert: Fr Jul 04, 2008 11:10 pm
Wohnort: /home/xin
Kontaktdaten:

Re: PHP bzw JS: Chat

Beitrag von Xin » Sa Jul 17, 2010 11:53 am

naums hat geschrieben:weil es mir spaß macht :)
Der sinnvollste Grund zu programmieren. :-)
Merke: Wer Ordnung hellt ist nicht zwangsläufig eine Leuchte.

Ich beantworte keine generellen Programmierfragen per PN oder Mail. Dafür ist das Forum da.

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: PHP bzw JS: Chat

Beitrag von naums » So Jul 18, 2010 8:18 pm

okay... ich hab mal experimentiert.

Folgender Code:

Code: Alles auswählen

<SCRIPT type="text/javascript">
time = 0;

function prepare()
{
  time=2;
  chatload();
}

function chatload() 
{
  if (time == 0) 
  {
    load_file('chat.txt', 'chat');
    prepare();
  }

  if (time > 0) 
  { 
    setTimeout('chatload()',1000);
  }
  time--;
}

chatload();
</SCRIPT>


<a href="javascript:load_file('chat.txt','chat');">[REFRESH]</A>

<div id="chat" height="500px" width="100%" overflow="auto"></div>

<form method="post" action="changeChat.php">
<pre>
<P>Ihr Eintrag: <BR />   <input type="text" name="chat" value=""></P>
<input type="submit" name="submit" value="Abschicken">
</pre>
</form>
In der Chat.txt steht bissl was drinne 30 Byte mehr net. Trotzdem friert der FF ein. Was kann ich dagegen tun? Liegt das am JS setTimeout?
.globl truth
truth:
mov r0, #42
mov pc, lr

Benutzeravatar
naums
Beiträge: 740
Registriert: Sa Jan 02, 2010 10:40 pm
Kontaktdaten:

Re: PHP bzw JS: Chat

Beitrag von naums » So Jul 18, 2010 10:12 pm

okay. geht jetzt.

Folgender Code (das Formular wird überprüft):

Code: Alles auswählen

<?php
  if (is_array($_POST))
  {
      $post=$_POST;
  }
  else
  {
      $post=$HTTP_POST_VARS;
  };
  if (isset($post["chat"]))
  {
      $text=$post["chat"];
  } 
  else
  {
      $text=NULL;
  };
  
$db=new mysqli("localhost", "naums", "letsfetz", "naums-project");
  
include("chklogin.php");
  
if ($login!=NULL and $text!=NULL)
{
    $file=fopen("chat.txt", "w+");
	if (filesize("chat.txt")==0)
	{
	    $size=1;
	}
	else
	{
	    $size=filesize("chat.txt");
	};
	
	$FileText=fread($file, $size);

	$time=date("H:i:s", time());
	$NewText='['.$time.'] '.$login.' : '.$text."<BR />\n".$FileText;
	
	fwrite($file, $NewText);
	fclose();
	
	header("location:index.php?position=chat");
}
else
{
    header("location:index.php?position=chat");
};
?>
chat.txt ist keinesfalls leer, aber warum ist filesize("chat.txt") leer? Mittels die() ausgegeben, aber es wurde nichts ausgeben. Wo liegt der Fehler? filesize("chat.txt") sollte eigentlich ne Größe ausgeben. tuts aber net. chat.txt ist in dem Ordner. Was is falsch?
.globl truth
truth:
mov r0, #42
mov pc, lr

Antworten