coverberg Posted January 14, 2010 Share Posted January 14, 2010 Hi, I copied some code for a PHP chat file. The index page (index.php) sends the different users' posts to another short PHP file (message.php) which then writes them onto a blank html document (msg.html) which is viewable on the index page. The problem I am encountering is that I can't get the html document to reset after the session is over. The posts are viewable by whoever logs on next which isn't what I want. Does anyone know an easy way to fix this??? The code is as follows: index.php - <?php session_start(); function createForm(){ ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <table align="center"> <tr><td colspan="2">Please enter a nickname to login.</td></tr> <tr><td>Your name: </td> <td><input class="text" type="text" name="name" /></td></tr> <tr><td colspan="2" align="center"> <input class="text" type="submit" name="submitBtn" value="Login" /> </td></tr> </table> </form> <?php } if (isset($_GET['u'])){ unset($_SESSION['nickname']); } // Process login info if (isset($_POST['submitBtn'])){ $name = isset($_POST['name']) ? $_POST['name'] : "Unnamed"; $_SESSION['nickname'] = $name; } $nickname = isset($_SESSION['nickname']) ? $_SESSION['nickname'] : "Hidden"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> <html> <head> <title>Black Bear Lodge Instant Messenger</title> <link href="style/style.css" rel="stylesheet" type="text/css" /> <script language="javascript" type="text/javascript"> <!-- var httpObject = null; var link = ""; var timerID = 0; var nickName = "<?php echo $nickname; ?>"; // Get the HTTP Object function getHTTPObject(){ if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP"); else if (window.XMLHttpRequest) return new XMLHttpRequest(); else { alert("Your browser does not support AJAX."); return null; } } // Change the value of the outputText field function setOutput(){ if(httpObject.readyState == 4){ var response = httpObject.responseText; var objDiv = document.getElementById("result"); objDiv.innerHTML += response; objDiv.scrollTop = objDiv.scrollHeight; var inpObj = document.getElementById("msg"); inpObj.value = ""; inpObj.focus(); } } // Change the value of the outputText field function setAll(){ if(httpObject.readyState == 4){ var response = httpObject.responseText; var objDiv = document.getElementById("result"); objDiv.innerHTML = response; objDiv.scrollTop = objDiv.scrollHeight; } } // Implement business logic function doWork(){ httpObject = getHTTPObject(); if (httpObject != null) { link = "message.php?nick="+nickName+"&msg="+document.getElementById('msg').value; httpObject.open("GET", link , true); httpObject.onreadystatechange = setOutput; httpObject.send(null); } } // Implement business logic function doReload(){ httpObject = getHTTPObject(); var randomnumber=Math.floor(Math.random()*10000); if (httpObject != null) { link = "message.php?all=1&rnd="+randomnumber; httpObject.open("GET", link , true); httpObject.onreadystatechange = setAll; httpObject.send(null); } } function UpdateTimer() { doReload(); timerID = setTimeout("UpdateTimer()", 5000); } function keypressed(e){ if(e.keyCode=='13'){ doWork(); } } //--> </script> </head> <body onload="UpdateTimer();"> <div id="main"> <div id="caption">Black Bear Lodge Instant Messenger</div> <div id="icon"> </div> <?php if (!isset($_SESSION['nickname']) ){ createForm(); } else { $name = isset($_POST['name']) ? $_POST['name'] : "Unnamed"; $_SESSION['nickname'] = $name; ?> <div id="result"> <?php $data = file("msg.html"); foreach ($data as $line) { echo $line; } ?> </div> <div id="sender" onkeyup="keypressed(event);"> Your message: <input type="text" name="msg" size="30" id="msg" /> <button onclick="doWork();">Send</button> </div> <?php } ?> </div> </body> message.php - <?php if (isset($_GET['msg'])){ if (file_exists('msg.html')) { $f = fopen('msg.html',"a+"); } else { $f = fopen('msg.html',"w+"); } $nick = isset($_GET['nick']) ? $_GET['nick'] : "Hidden"; $msg = isset($_GET['msg']) ? htmlspecialchars($_GET['msg']) : "."; $line = "<p><span class=\"name\">$nick: </span><span class=\"txt\">$msg</span></p>"; fwrite($f,$line."\r\n"); fclose($f); echo $line; } else if (isset($_GET['all'])) { $flag = file('msg.html'); $content = ""; foreach ($flag as $value) { $content .= $value; } echo $content; } ?> Quote Link to comment Share on other sites More sharing options...
coverberg Posted January 14, 2010 Author Share Posted January 14, 2010 index.php - <?php session_start(); function createForm(){ ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <table align="center"> <tr><td colspan="2">Please enter a nickname to login.</td></tr> <tr><td>Your name: </td> <td><input class="text" type="text" name="name" /></td></tr> <tr><td colspan="2" align="center"> <input class="text" type="submit" name="submitBtn" value="Login" /> </td></tr> </table> </form> <?php } if (isset($_GET['u'])){ unset($_SESSION['nickname']); } // Process login info if (isset($_POST['submitBtn'])){ $name = isset($_POST['name']) ? $_POST['name'] : "Unnamed"; $_SESSION['nickname'] = $name; } $nickname = isset($_SESSION['nickname']) ? $_SESSION['nickname'] : "Hidden"; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> <html> <head> <title>Black Bear Lodge Instant Messenger</title> <link href="style/style.css" rel="stylesheet" type="text/css" /> <script language="javascript" type="text/javascript"> <!-- var httpObject = null; var link = ""; var timerID = 0; var nickName = "<?php echo $nickname; ?>"; // Get the HTTP Object function getHTTPObject(){ if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP"); else if (window.XMLHttpRequest) return new XMLHttpRequest(); else { alert("Your browser does not support AJAX."); return null; } } // Change the value of the outputText field function setOutput(){ if(httpObject.readyState == 4){ var response = httpObject.responseText; var objDiv = document.getElementById("result"); objDiv.innerHTML += response; objDiv.scrollTop = objDiv.scrollHeight; var inpObj = document.getElementById("msg"); inpObj.value = ""; inpObj.focus(); } } // Change the value of the outputText field function setAll(){ if(httpObject.readyState == 4){ var response = httpObject.responseText; var objDiv = document.getElementById("result"); objDiv.innerHTML = response; objDiv.scrollTop = objDiv.scrollHeight; } } // Implement business logic function doWork(){ httpObject = getHTTPObject(); if (httpObject != null) { link = "message.php?nick="+nickName+"&msg="+document.getElementById('msg').value; httpObject.open("GET", link , true); httpObject.onreadystatechange = setOutput; httpObject.send(null); } } // Implement business logic function doReload(){ httpObject = getHTTPObject(); var randomnumber=Math.floor(Math.random()*10000); if (httpObject != null) { link = "message.php?all=1&rnd="+randomnumber; httpObject.open("GET", link , true); httpObject.onreadystatechange = setAll; httpObject.send(null); } } function UpdateTimer() { doReload(); timerID = setTimeout("UpdateTimer()", 5000); } function keypressed(e){ if(e.keyCode=='13'){ doWork(); } } //--> </script> </head> <body onload="UpdateTimer();"> <div id="main"> <div id="caption">Black Bear Lodge Instant Messenger</div> <div id="icon"> </div> <?php if (!isset($_SESSION['nickname']) ){ createForm(); } else { $name = isset($_POST['name']) ? $_POST['name'] : "Unnamed"; $_SESSION['nickname'] = $name; ?> <div id="result"> <?php $data = file("msg.html"); foreach ($data as $line) { echo $line; } ?> </div> <div id="sender" onkeyup="keypressed(event);"> Your message: <input type="text" name="msg" size="30" id="msg" /> <button onclick="doWork();">Send</button> </div> <?php } ?> </div> </body> [/size] Quote Link to comment Share on other sites More sharing options...
laurent Posted May 22, 2010 Share Posted May 22, 2010 Did you figure out a way to make this work? I'm having the same problem and can't fix this on my own. Let me know if you found a solution. I also wouldn't mind having a sound play every time a new message shows on the chat list. Thanks! L. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.