0

ネットでチュートリアルをやってチャットルームを作ってみました。

まず、chatroom という名前の MYSQL でデータベースを作成し、chtime、nick、words の 3 つの列を持つ chat という名前のデータシートを作成します。

次に、login.php、main.php、display.php、speak.php の 4 つの PHP ファイルを作成しますが、display と speak に関する問題が発生します。話すことがうまくいかず、何も言わずに新しいウィンドウをポップアップ表示するだけです。

どこに問題があるのか​​わからない?

数日間修正しようとしましたが、無駄でした。私のエラーはどこですか?

以下は私のコードです:

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 に答える