我在网上尝试教程来构建聊天室。
首先,我在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
答案 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);
}
?>