在构建简单的聊天室时发送消息失败

时间:2012-06-26 19:27:59

标签: php

我在网上尝试教程来构建聊天室。

首先,我在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

2 个答案:

答案 0 :(得分: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。

答案 1 :(得分:1)

请确认您已阅读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);
}
?>