Php 显示好友请求
我一直在努力打造一个类似于facebook的社交网络,以便在我的家庭服务器上使用。但是,在用户配置文件的“通知”选项卡中显示好友请求时,我遇到了一个问题Php 显示好友请求,php,facebook,Php,Facebook,我一直在努力打造一个类似于facebook的社交网络,以便在我的家庭服务器上使用。但是,在用户配置文件的“通知”选项卡中显示好友请求时,我遇到了一个问题 <?php //Check for notifications script $Request = "Requests"; $Pending = "Pending"; $nCheck = mysqli_query($Connect,"SELECT * FROM friends WHERE rTo = '$U
<?php
//Check for notifications script
$Request = "Requests";
$Pending = "Pending";
$nCheck = mysqli_query($Connect,"SELECT * FROM friends WHERE rTo = '$Uname' AND Status = '$Pending'");
$nNum = mysqli_num_rows($nCheck);
if($nNum != 0){
if($nNum === 1){
$Request = "Request";
}
else
{
$Request = "Requests";
}
echo"<p style=\"font-family: Tahoma; margin-left: 20px;\">You Have <b>$nNum</b> Friend $Request</p><hr />";
while($row = mysqli_fetch_assoc($nCheck)){
$dbFrom = $row['rFrom'];
$dbId = $row['id'];
$dbStatus = $row['Status'];
for($i = 0; $i < 1; $i++){
echo"<p style=\"font-family: Tahoma; margin-left: 20px;\">$dbFrom wants to be your friend <form action=\"\" method=\"POST\"><input type=\"submit\" name=\"A\" value=\"Accept\"></form> <form action=\"\" method=\"POST\"><input type=\"submit\" name=\"D\" value=\"Decline\"></form></p>";
}
}
}
else
{
echo "<p style=\"font-family: Tahoma; margin-left: 20px;\">You Have <b>0</b> Friend $Request</p>";
}
?>
同样
试试这个
$A = "Accepted";
$D = "Declined";
if($Accepted){
$addFriend = mysqli_query($Connect,"UPDATE friends SET Status = '$A' WHERE id='$dbId' AND rFrom = '$dbFrom'");
header("Location: Notification.php");
}
else if($Declined){
$addFriend = mysqli_query($Connect,"UPDATE friends SET Status = '$D' WHERE id='$dbId' AND rFrom = '$dbFrom'");
header("Location: Notification.php");
}
也
试试这个
$A = "Accepted";
$D = "Declined";
if($Accepted){
$addFriend = mysqli_query($Connect,"UPDATE friends SET Status = '$A' WHERE id='$dbId' AND rFrom = '$dbFrom'");
header("Location: Notification.php");
}
else if($Declined){
$addFriend = mysqli_query($Connect,"UPDATE friends SET Status = '$D' WHERE id='$dbId' AND rFrom = '$dbFrom'");
header("Location: Notification.php");
}
如果两个代码示例都存在于一个文件中,这就可以解释您的问题。
您可以更新您的好友表:
$addFriend = mysqli_query($Connect,"UPDATE friends SET Status = '$A' WHERE rTo = '$Uname' AND rFrom = '$dbFrom'");
如果$dbFrom
值来自:
while($row = mysqli_fetch_assoc($nCheck)){
$dbFrom = $row['rFrom'];
这意味着您只需更新最后一行。
我建议您也将$dbForm
与这两个表单一起发布
PS:然后开始使用PDO。如果两个代码示例都存在于一个文件中,这将解释您的问题。
您可以更新您的好友表:
$addFriend = mysqli_query($Connect,"UPDATE friends SET Status = '$A' WHERE rTo = '$Uname' AND rFrom = '$dbFrom'");
如果$dbFrom
值来自:
while($row = mysqli_fetch_assoc($nCheck)){
$dbFrom = $row['rFrom'];
这意味着您只需更新最后一行。
我建议您也将$dbForm
与这两个表单一起发布
PS:并开始使用PDO。
- 利用事先准备好的陈述。您没有受到SQL注入的保护(详细信息:)
- 不要使用字符串来设置状态。使用数值定义状态。这使它更容易处理
- 使用单引号
“
可以避免在源代码中转义HTML的所有双引号”
。编码指南中经常建议使用其他字符串连接方法
- 不推荐使用内联CSS格式化。请改用外部CSS样式表
- 当您不需要完整的数据集时,不要从数据库中获取整个数据集。始终只获取您需要的数据。不建议使用
*
。例如,您不需要$row['Status']
和$row['id']
,但仍然将其无理由保存在变量中
- 不要使用
@
运算符。请改为验证您的POST数据
- 你的for循环没有任何意义。它不会有多个遍历
- 为了解决您当前的主要问题,我将为好友请求分配ID,以便唯一地标识系统当前正在处理的好友请求
- 另外,不要在查询中使用用户名,而是使用用户名。否则,您将面临主题数据库规范化方面的问题
- 无需使用header()返回notifications.php。在验证POST数据并相应更新好友请求后,您可以轻松地继续构建notifications.php-view
- 使用准备好的语句。您不会受到SQL注入的保护(详细信息:)
- 不要使用字符串来设置状态。使用数字值来定义状态。这使其更易于处理
- 使用单引号
“
避免在源代码中转义HTML的所有双引号”
。还有一些字符串连接的替代方法,这在编码指南中经常被推荐
- 不推荐使用内联CSS格式化。改用外部CSS样式表
- 当您不需要完整的数据集时,不要从数据库中获取整个数据集。始终只获取所需的数据。不建议使用
*
。例如,您不需要$row['Status']
和$row['id']
,但仍然无故将其保存在变量中
- 不要使用
@
运算符。改为验证您的POST数据
- 你的for循环没有任何意义。它不会有超过一次的运行
- 为了解决您当前的主要问题,我将为好友请求分配ID,以便唯一地标识系统当前正在处理的好友请求
- 另外,不要在查询中使用用户名,而是使用用户名。否则,您将面临主题数据库规范化方面的问题
- 无需使用header()返回notifications.php。在验证POST数据并相应地更新好友请求之后,您可以轻松地继续构建notifications.php-view
可能不需要进行类型安全比较,但无论如何使用它都很好。不过我同意其余的,所以我+1:)@luschn:同意,还可以阅读关于类型安全比较更好的性能的文章。现在我明白了,我会修正我的答案。谢谢你的反馈。为了让你能在我的决定背后找到一些合理性,我不担心mysql注入,因为它是一个家庭服务器。我还检索了整个数据集,这样我就可以更容易地向请求添加不同的方面,这样我就不会返回并添加它。最后,为了实验的目的,我在那里做了for循环。再次感谢您,可能不需要进行TypeSafe比较,但无论如何使用它都很好。不过我同意其余的,所以我+1:)@luschn:同意,还可以阅读关于类型安全比较更好的性能的文章。现在我明白了,我会修正我的答案。谢谢你的反馈。为了让你能在我的决定背后找到一些合理性,我不担心mysql注入,因为它是一个家庭服务器。我还检索了整个数据集,这样我就可以更容易地向请求添加不同的方面,这样我就不会返回并添加它。最后,为了实验的目的,我在那里做了for循环。再次感谢