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; } ?> Link to comment https://forums.phpfreaks.com/topic/188493-php-micro-chat-question/ 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] Link to comment https://forums.phpfreaks.com/topic/188493-php-micro-chat-question/#findComment-995123 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. Link to comment https://forums.phpfreaks.com/topic/188493-php-micro-chat-question/#findComment-1061831 Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.