Chatroom in Javascript en PHP

Status
Niet open voor verdere reacties.

wakmen

Terugkerende gebruiker
Lid geworden
3 jun 2011
Berichten
1.352
Beste leden

Ik ben een tijdje bezig om mij te verdiepen in website maken enz. Nu heb ik HTML en CSS redelijk onder de knie.
Ik wil graag een chatroom op een een website zetten die hemaakt in met PHP en Javascript. Ik heb de code al, maar de enige probleem is dat wanneer ik een bericht wil sturen ik een popup krijg en mijn naam moet invullen en mijn bericht wordt niet verzonden.
Hier is de HTML code:
HTML:
<!DOCTYPE html>

<html lang="be">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
	<title>3HA Chat</title>

<style type="text/css">
body{
	font-family: "Comic Sans MS", Helvetica, Arial, sans-serif;
	font-size: 14px;
	line-height: 32px;
	color: #333333;
	font-weight: normal;
}
.container{
	margin: 0 auto;
	width: 600px;
}
.logo{
	text-align: center;
}
.chat-zone{
	padding: 20px;
	height: 400px;
}
.chatmsg {
margin: 0 5px;
}
.chatmsg b{
	text-transform: uppercase;
	color: orange;
}
.chat{
	margin: 0 auto;
}
.chat #chatZone{
width: 500px;
height: 400px;
border: 1px solid #ddd;
border-radius: 7px;
overflow-y: scroll;
background: #333;
color: #fff;
}
.chat form{
	margin: 10px 0 0 0;
}
input[type="text"]{
border: 1px solid #cccccc;
box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
outline: none;
padding: 4px 6px;
font-size: 14px;
line-height: 20px;
color: #555555;
border-radius: 3px;
width: 425px;
}
input[type="submit"]{
display: block;
color: #fff;
font-weight: bold;
cursor: pointer;
margin: 5px 0 0 60px;
padding: 6px 10px;
border: 1px solid #777;
background: #333537;
border-radius: 5px;
}
</style>
	
</head>
<body>
	<div class="container">
			
		<div class="chat">
			<div id="chatZone" name="chatZone"></div>
				<form onsubmit="chat.sendMsg(); return false;">
					<label for="msg" style="float:left">Bericht:</label>
					<input type="text" id="msg" name="msg" autofocus placeholder="Type hier u bericht" />
					<input type="submit" />
				</form>
			</div>
	</div>
	<script type="text/javascript" src="chat.js"></script>
</body>

Javascript:
Code:
var ChatEngine=function(){
     var name=" ";
     var msg="";
     var chatZone=document.getElementById("chatZone");
     var oldata ="";
     var sevr=" ";
     var xhr=" ";
     //initialzation
     this.init=function(){
          if(EventSource){
          this.setName();
          this.initSevr(); 
          } else{
          alert("Gebruikt u wil de laatste versie van u brower?");
        }
     };
     //Setting user name
     this.setName=function(){
          name = prompt("Vul hier u naam in:","Chater");
          if (!name || name ==="") {
             name = "Chater";  
          }
          name = name.replace(/(<([^>]+)>)/ig,"");
     };
     //For sending message
     this.sendMsg=function(){ 
          msg=document.getElementById("msg").value;
          chatZone.innerHTML+='<div class="chatmsg"><b>'+name+'</b>: '+msg+'<br/></div>';
          oldata='<div class="chatmsg"><b>'+name+'</b>: '+msg+'<br/></div>';          
          this.ajaxSent();  
          return false;
     };
     //sending message to server
     this.ajaxSent=function(){
          try{
               xhr=new XMLHttpRequest();
          }
          catch(err){
               alert(err);
          }
          xhr.open('GET','chatprocess.php?msg='+msg+'&name='+name,false);
          xhr.onreadystatechange = function(){
               if(xhr.readyState == 4) {
                    if(xhr.status == 200) {
                         msg.value="";
                    }
               }     
          };
          xhr.send();
     };
     //HTML5 SSE(Server Sent Event) initilization
     this.initSevr=function(){
          sevr = new EventSource('chatprocess.php');
          sevr.onmessage = function(e){ 
          if(oldata!=e.data){
               chatZone.innerHTML+=e.data;
               oldata = e.data;
          }
          };     
     };
};
// Createing Object for Chat Engine
var chat= new ChatEngine();
chat.init();

PHP:
Code:
<?php
//creating Event stream 
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

$name=strip_tags($_GET['name']);
$msg=strip_tags($_GET['msg']);

function sendMsg($msg) {
  echo "data: $msg" . PHP_EOL;
  ob_flush();
  flush();
}
if(!empty($name) && !empty($msg)){
	$fp = fopen("_chat.txt", 'a');  
    fwrite($fp, '<div class="chatmsg"><b>'.$name.'</b>: '.$msg.'<br/></div>'.PHP_EOL);  
    fclose($fp);  
}

  if(file_exists("_chat.txt") && filesize("_chat.txt") > 0){  
   $arrhtml=array_reverse(file("_chat.txt"));
   $html=$arrhtml[0];
    
  }
  if(filesize("_chat.txt") > 10000){
    unlink("_chat.txt");
  }
  

sendMsg($html);

Waar kan de fout zitten?

Alvast bedankt
 
He Wakmen,

Ik heb jou scriptje even getest maar bij mij werkt alles perfect.

Hier aantal punten waar het aan zou kunnen liggen:
  • Bestandsnamen (De bestanden moeten de juiste benaming hebben het php bestand moet de naam "chatprocess.php" hebben en het javascript bestand "chat.js")
  • Bestandsrechten (Je moet zo wel schrijf en lees rechten hebben in de desbetreffende folder)
  • Bestand locaties (De bestanden moeten in de zelfde folder zitten)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan