Jump to content

PHP Micro Chat Question


coverberg

Recommended Posts

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
Share on other sites

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
Share on other sites

  • 4 months later...

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
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.