向连接的用户发送消息
Send message to a connected user
我想从一个用户(用户 A)向另一个用户(用户 B)发送消息,这些用户已连接彼此在数据库中。更具体地说。
我们将用户的连接保存在我们称为 friends 的数据库中的 table 中。在此 table 中,我们有两列,username 和 friend.
我有用于在用户之间发送数据的代码,但它不执行任何检查以查看 用户 A 是否想要向其发送消息用户 B 相互连接。如果用户已连接,我想允许他们发送消息,如果他们未连接,我想回显一条通知,告知他们由于未连接而不允许发送消息。
我可以理解我想要一个 if
条件,在该条件下我执行检查以查看用户是否已连接并在下面具有适当的代码,如果未连接则输出上述通知。
如何创建此检查?
我正在使用 php 和 mysql
这是我的代码...
<?php
include_once 'header.php';
if (!$loggedin) die();
if (isset($_GET['view'])) {
$view = sanitizeString($_GET['view']);
} else {
$view = $username;
}
if (isset($_POST['text'])){
$text = sanitizeString($_POST['text']);
if ($text != ""){
$pm = substr(sanitizeString($_POST['pm']),0,1);
$time = time();
queryMysql("INSERT INTO messages VALUES(NULL, '$username', '$view', '$pm', $time, '$text')");
}
}
if ($view != "") {
if ($view == $username) {
$name1 = $name2 = "Your";
} else {
$name1 = "<a href='members.php?view=$view'>$view</a>'s";
$name2 = "$view's";
}
echo "<div class='main'><h3>$name1 Messages</h3>";
showProfile($view);
echo <<<_END
<form method='post' action='messages.php?view=$view'>
Type here to leave a message:<br />
<textarea name='text' cols='40' rows='3'></textarea><br />
Public<input type='radio' name='pm' value='0' checked='checked' />
Private<input type='radio' name='pm' value='1' />
<input type='submit' value='Post Message' /></form><br />
_END;
if (isset($_GET['erase'])) {
$erase = sanitizeString($_GET['erase']);
queryMysql("DELETE FROM messages WHERE id=$erase AND recip='$username'");
}
$query = "SELECT * FROM messages WHERE recip='$view' ORDER BY time DESC";
$result = queryMysql($query);
$num = mysql_num_rows($result);
for ($j = 0 ; $j < $num ; ++$j) {
$row = mysql_fetch_row($result);
if ($row[3] == 0 || $row[1] == $username || $row[2] == $username) {
echo date('M jS \'y g:ia:', $row[4]);
echo " <a href='messages.php?view=$row[1]'>$row[1]</a> ";
if ($row[3] == 0) {
echo "wrote: "$row[5]" ";
} else {
echo "whispered: <span class='whisper'>" . ""$row[5]"</span> ";
}
if ($row[2] == $username) {
echo "[<a href='messages.php?view=$view" . "&erase=$row[0]'>erase</a>]";
}
echo "<br>";
}
}
}
if (!$num) {
echo "<br /><span class='info'>No messages yet</span><br /><br />";
}
echo "<br /><a class='button' href='messages.php?view=$view'>Refresh messages</a>";
?>
</div><br /></body></html>
我的问题的检查系统如下,它有效..
<?php
include_once 'header.php';
if (!$loggedin) die();
if (isset($_GET['view'])) $view = sanitizeString($_GET['view']);
else $view = $username;
$result1 = mysql_num_rows(queryMysql("SELECT username,friend FROM friends
WHERE username='$username' AND friend='$view'"));
$result2 = mysql_num_rows(queryMysql("SELECT username,friend FROM friends
WHERE username='$view' AND friend='$username'"));
if (($result1 + $result2) > 1)
{
//REST OF THE CODE
}
?>
我们正在做的是,对于 result1,我们正在检查登录的用户名 ($username) 是否与查看的个人资料 ($view) 相关联,对于 result2,我们正在做相反的事情,更具体地说我们正在检查 result2,如果查看的个人资料 ($view) 的用户名与 ($username) 相关联,那么在 if 语句中我们检查这两个结果是否在 table 中有不止一行然后他们都连接了。
PS:抱歉我的英语不好
我想从一个用户(用户 A)向另一个用户(用户 B)发送消息,这些用户已连接彼此在数据库中。更具体地说。
我们将用户的连接保存在我们称为 friends 的数据库中的 table 中。在此 table 中,我们有两列,username 和 friend.
我有用于在用户之间发送数据的代码,但它不执行任何检查以查看 用户 A 是否想要向其发送消息用户 B 相互连接。如果用户已连接,我想允许他们发送消息,如果他们未连接,我想回显一条通知,告知他们由于未连接而不允许发送消息。
我可以理解我想要一个 if
条件,在该条件下我执行检查以查看用户是否已连接并在下面具有适当的代码,如果未连接则输出上述通知。
如何创建此检查?
我正在使用 php 和 mysql
这是我的代码...
<?php
include_once 'header.php';
if (!$loggedin) die();
if (isset($_GET['view'])) {
$view = sanitizeString($_GET['view']);
} else {
$view = $username;
}
if (isset($_POST['text'])){
$text = sanitizeString($_POST['text']);
if ($text != ""){
$pm = substr(sanitizeString($_POST['pm']),0,1);
$time = time();
queryMysql("INSERT INTO messages VALUES(NULL, '$username', '$view', '$pm', $time, '$text')");
}
}
if ($view != "") {
if ($view == $username) {
$name1 = $name2 = "Your";
} else {
$name1 = "<a href='members.php?view=$view'>$view</a>'s";
$name2 = "$view's";
}
echo "<div class='main'><h3>$name1 Messages</h3>";
showProfile($view);
echo <<<_END
<form method='post' action='messages.php?view=$view'>
Type here to leave a message:<br />
<textarea name='text' cols='40' rows='3'></textarea><br />
Public<input type='radio' name='pm' value='0' checked='checked' />
Private<input type='radio' name='pm' value='1' />
<input type='submit' value='Post Message' /></form><br />
_END;
if (isset($_GET['erase'])) {
$erase = sanitizeString($_GET['erase']);
queryMysql("DELETE FROM messages WHERE id=$erase AND recip='$username'");
}
$query = "SELECT * FROM messages WHERE recip='$view' ORDER BY time DESC";
$result = queryMysql($query);
$num = mysql_num_rows($result);
for ($j = 0 ; $j < $num ; ++$j) {
$row = mysql_fetch_row($result);
if ($row[3] == 0 || $row[1] == $username || $row[2] == $username) {
echo date('M jS \'y g:ia:', $row[4]);
echo " <a href='messages.php?view=$row[1]'>$row[1]</a> ";
if ($row[3] == 0) {
echo "wrote: "$row[5]" ";
} else {
echo "whispered: <span class='whisper'>" . ""$row[5]"</span> ";
}
if ($row[2] == $username) {
echo "[<a href='messages.php?view=$view" . "&erase=$row[0]'>erase</a>]";
}
echo "<br>";
}
}
}
if (!$num) {
echo "<br /><span class='info'>No messages yet</span><br /><br />";
}
echo "<br /><a class='button' href='messages.php?view=$view'>Refresh messages</a>";
?>
</div><br /></body></html>
我的问题的检查系统如下,它有效..
<?php
include_once 'header.php';
if (!$loggedin) die();
if (isset($_GET['view'])) $view = sanitizeString($_GET['view']);
else $view = $username;
$result1 = mysql_num_rows(queryMysql("SELECT username,friend FROM friends
WHERE username='$username' AND friend='$view'"));
$result2 = mysql_num_rows(queryMysql("SELECT username,friend FROM friends
WHERE username='$view' AND friend='$username'"));
if (($result1 + $result2) > 1)
{
//REST OF THE CODE
}
?>
我们正在做的是,对于 result1,我们正在检查登录的用户名 ($username) 是否与查看的个人资料 ($view) 相关联,对于 result2,我们正在做相反的事情,更具体地说我们正在检查 result2,如果查看的个人资料 ($view) 的用户名与 ($username) 相关联,那么在 if 语句中我们检查这两个结果是否在 table 中有不止一行然后他们都连接了。
PS:抱歉我的英语不好