2012-06-26 49 views
0

我嘗試使用網絡上的教程構建聊天室。在建立聊天室時發送郵件失敗

首先我在MYSQL中創建一個名爲chatroom的數據庫,並在一個名爲chat的數據表中使用三列:chtime,nick,words。

然後,我寫了四個PHP文件,login.php,main.php,display.php,speak.php,但是有關顯示和說話的問題。我的發言不起作用,我只是彈出一個沒有任何文字的新窗口。

我不知道問題在哪裏?

我試圖修復它幾天,但徒勞無功。我的錯誤在哪裏?

以下是我的代碼:

的login.php http://codepad.org/WIfr3quz

Main.php http://codepad.org/b9pXuNl0

Display.php的 http://codepad.org/o7pf5G57

Speak.php http://codepad.org/wFDEMrNk

+1

解析錯誤:語法錯誤,上線25意外T_STRING Display.php根據調試 – bretterer

+0

但我的speak.php does not工作,並且我不知道什麼時候檢查行後Display.php的錯誤。 –

+0

顯示您的錯誤,並告訴我們它說了什麼。我們無法幫助您在本地主機上進行調試,而無需打開錯誤報告。 – bretterer

回答

1

請務必閱讀UP SQL注入

凡定義$words

if ($words){ 
    $link = mysqli_connect('localhost', 'xxx', 'xxx', 'ChatRoom'); 
     $time = date('Y-m-d-a:i:s'); 
     $str = "INSERT INTO chat(chtime,nick,words) values('$time','$nick','$words')" ; 
     mysqli_query($str,$link); 
     mysqli_close($link); 
} 

你應該這麼定義這些。不知道還有什麼要告訴你,沒有看到什麼樣的錯誤出現。這是我將開始雖然..使塊看起來像

if(isset($_POST['words'])) 
    $link = mysqli_connect('localhost', 'xxx', 'xxx', 'ChatRoom'); 
     $time = date('Y-m-d-a:i:s'); 
      $nick = 'NickName';//However you would get the nick for the user 
      $words = $link->real_escape_string($_POST['words']); 
     $str = "INSERT INTO chat(chtime,nick,words) values('$time','$nick','$words')" ; 
     mysqli_query($str,$link); 
     mysqli_close($link); 
} 
?> 
+0

我已經嘗試過$ _POST ['words'],但之後要輸入的列將會消失。 –

+0

咦?我沒有得到你要輸入的列意味着什麼會消失? – bretterer

+0

之後:http://postimage.org/image/lsgv1xnr1/ –

1

改變代碼中speak.php到:

<html> 
<head> 
<title>Speak</title> 
</head> 
<body> 
<?php 
    if ($words){ 
    $link = mysqli_connect('localhost', 'xxx', 'xxx', 'ChatRoom'); 
     $time = date('Y-m-d-a:i:s'); 
     $nick = $link->real_escape_string($_POST['nick']); 
     $words = $link->real_escape_string($_POST['words']); 
     $str = "INSERT INTO chat(chtime,nick,words) values('$time','$nick','$words')" ; 
     mysqli_query($str,$link); 
     mysqli_close($link); 
} 
?> 
<form action = "Speak.php" method = "post" target = " _self"> 
<input type = "text" name = "nick"> 
<input type = "text" name = "words"> 
<input type = "submit" value = "Speak"> 
</form> 
</body> 
</html> 

使用real_escape_string防止SQL代碼注入。
POST表單發送的值存儲在$ _POST中。

+0

之前定義'$ words'將永遠不會進入該塊,因爲如果($ words)將始終爲假。它將需要$ _POST ['words'] – bretterer