0

私のサイトには、ユーザーが互いにメッセージを送受信できるメッセージング システムがあります。

私が今取り組んでいるのは、ユーザーが別のユーザーにメッセージを送信し、ユーザーがこのメッセージを読んだ場合、彼らはそれに返信できるということです。

テキスト領域にエコーアウトするメッセージコンテンツを使用して HTML フォームが設​​定されている時点で、ユーザーはこのコンテンツをテキスト領域から削除し、必要なものを再入力できます。

次に、サブミットを押すとすぐにこれが message_reply.php に移動し、元のメッセージ ID が存在する場所に新しいメッセージ コンテンツが挿入され、元のユーザーに送り返されます。 user_to_id と user_from_id が一致し、元の件名に :reply サフィックスを挿入し、'read_message' を更新して、enum 値を 1 から 0 に戻します (未読の場合と同様)。

私はphpとmysqlが初めてなので、これに苦労しています。誰かが私が何をする必要があるかを教えてください。

私のmysqlテーブルは「ptb_messages」と呼ばれ、次のようにレイアウトされています:

id  |  from_user_id(the person who sent msg) | to_user_id (recipient) | content | date_sent | read_message | deleted_to | deleted_from |

ここに私のHTMLフォームがあります:

<form action="message_reply.php?to=<?php echo "$profile_id"; ?>" method="post">
  <textarea name="textarea" id="textarea">
    <?php echo  "{$message['content']}"; ?>
  </textarea>
  <?php
    }
  ?>
  <input type="image" src="assets/img/icons/email_send.png"
         width="50" height="34" name="send_button" id="send_button">
</form>

mysql 関数 (message_reply.php)

<?php 
//We check if the form has been sent
if(isset($_POST['textarea'])) {
  $textarea = $_POST['textarea'];
  //We remove slashes depending on the configuration
  if(get_magic_quotes_gpc()) {
    $textarea = stripslashes($textarea);
    }
  //We check if all the fields are filled
  if($_POST['textarea']!='') {
    $sql = "UPDATE ptb_messages SET (id, from_user_id, to_user_id, textarea) VALUES (NULL, '".$_SESSION['user_id']."', '".$message['from_user_id']."', '".$textarea."');";
    mysql_query($sql, $connection);

    echo "<div class=\"infobox1\">The message has successfully been sent.</div>";
    }
  }

?>
4

1 に答える 1

1

HTML コードでは、画像はフォームを送信しないため、クリックしても何も起こりません。ボタンを追加するonclickか使用する必要がありsubmitます (CSS を使用して、送信ボタンに画像を表示できます)。

オンクリックの例:

<form id="need_an_id_here"
   action="message_reply.php?to=<?php echo "$profile_id"; ?>"
   method="post">
   ... your textarea
  <input type="image" src="assets/img/icons/email_send.png"
     width="50" height="34" name="send_button" id="send_button"
     onclick="document.getElementById('need_an_id_here').submit();">
</form>

また、差し迫った質問ではありませんが、コードはセキュリティの問題 (SQL インジェクション、XSS など) を起こしやすいです。プリペアド ステートメントに関するいくつかのチュートリアルを参照し、それをコードに適用する必要があります。

于 2013-02-11T02:57:04.873 に答える