2015-01-15 72 views
1

tutsplus,那裏你會找到一個教程,指導你完成如何創建一個簡單的網絡聊天的步驟。我試圖遵循所有的說法,但我在測試時發現了一個問題。看起來usermsg沒有被髮布到log.html文件中。PHP消息沒有寫入日誌文件 - tutsplus.com教程

這裏是index.php文件,在這種情況下被命名爲chat.php:

<?php 
    function loginForm() { 
     echo ' 
     <div id="loginform"> 
      <form action="chat.php" method="post"> 
       <p>Please enter your name to continue:</p> 
       <label for="name">Name:</label> 
       <input type="text" name="name" id="name"> 
       <input type="submit" name="enter" id="enter" value="enter"> 
      </form> 
     </div> 
     '; 
    } 

    if(isset($_POST['enter'])) { 
     if($_POST['name'] != "") { 
      $_SESSION['name'] = stripslashes(htmlspecialchars($_POST['name'])); 
     }else { 
      echo '<span class="error">Please type in a name</span>'; 
     } 
    } 

?> 
<!DOCTYPE html> 
<html> 
    <head> 
     <title>Basic Chat Service</title> 
     <meta charset="utf-8"> 
     <link rel="stylesheet" href="style.css" title="style" type="text/css" media="screen" charset="utf-8"> 
    </head> 
    <body> 
     <?php 
      if(!isset($_SESSION['name'])) { 
       loginForm(); 
      }else{ 
     ?> 
     <div id="wrapper"> 
      <div id="menu"> 
       <div class="welcome">Welcome, <?php echo $_SESSION["name"]; ?></div> 
       <div class="logout"><a href="#" id="exit">Exit Chat</a></div> 
       <div style="clear:both;"></div> 
      </div> 
      <div id="chatbox"><?php 
       if(file_exists("log.html") && filesize("log.html") > 0) { 
        $handle = fopen("log.html", "r"); 
        $contents = fread($handle, filesize("log.html")); 
        fclose($handle); 

        echo $contents; 
       } 
       ?></div> 
      <form name="message" action=""> 
       <input type="text" name="usermsg" id="usermsg" size="63"> 
       <input type="submit" name="submitmsg" id="submitmsg" value="Send"> 
      </form> 
     </div> 
     <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js" charset="utf-8"></script> 
     <script type="text/javascript"> 
      //jQuery Document 
      $(document).ready(function() { 
       $("#exit").click(function() { 
        var exit = confirm("Are you sure you want to logout?"); 
        if(exit == true) { 
         window.location = 'chat.php?logout=true'; 
        } 
       }); 

      $("#submitmsg").click(function() { 
       var clientmsg = $("#usermsg").val(); 
       console.log(clientmsg); 
       $.post("post.php", {text: clientmsg}); 
       $("#usermsg").attr("value", ""); 
       return false; 
      }); 

      function loadLog() { 
       var oldscrollHeight = $("#chatbox").attr("scrollHeight") - 20; 
       $.ajax({ 
        url:"log.html", 
        cache: false, 
        success: function(html){ 
          $("#chatbox").html(html); 

          var newscrollHeight = $("#chatbox").attr("scrollHeight") - 20; 
          if(newscrollHeight > oldscrollHeight) { 
           $("#chatbox").animate({scrollTop: newscrollHeight}, 'normal'); 
          } 
         } 
       }); 
      } 

      setInterval(loadLog, 2500); 
      });   
     </script>   
     <?php  
      } 
      if(isset($_GET['logout'])) { 
       $fp = fopen("log.html", 'a'); 
       fwrite($fp, '<div class="msgln"><i>User '.$_SESSION['name'].' has left the chat session.</i><br></div>'); 
       fclose($fp); 

       session_destroy(); 
       header("Location: chat.php"); 
      } 
     ?> 
    </body> 
</html> 

這裏是post.php中:

<?php 
    session_start(); 

    if(isset($_SESSION['name'])) { 
     $text = $_POST['text']; 

     $fp = fopen("log.html", 'a'); 
     fwrite($fp, "<div class='msgln'>(".date("g:i A").")<b>".$_SESSION['name']."</b>:".stripslashes(htmlspecialchars($text))."<br></div>"); 
     fclose($fp); 
    } 

?> 

我使用甲基苯丙胺和文件位於htdocs文件夾中,所以這不是問題。

在此先感謝您的幫助,如果您需要更多信息,請告知我們。

+2

做過任何基本的調試,就像從檢查的fopen返回值,看看你的文件曾經得到創建/附加?另外,你永遠不會在你的index.php中調用session_start(),這可能意味着你的chat.php只會完全跳過你的文件編寫代碼。 –

+0

這就是失蹤!我多次查看此代碼,並完全忘記了session_start()。把它變成一個答案。 – DAB

回答