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

4

2 回答 2

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 中。

于 2012-06-26T19:38:49.870 回答
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);
}
?>
于 2012-06-26T19:39:43.767 回答