Php Can';不要跟随其他用户

Php Can';不要跟随其他用户,php,mysql,sql,database,Php,Mysql,Sql,Database,所以我有一个跟踪系统,允许你跟踪用户。下面是follow.php <?php error_reporting(0); session_start(); include_once 'db.php'; $username = htmlspecialchars($_GET['fuser'], ENT_QUOTES, 'UTF-8'); $follower = $_SESSION['user']; $type = 'Following'; if($username == $follow

所以我有一个跟踪系统,允许你跟踪用户。下面是
follow.php

<?php
error_reporting(0);

session_start();

include_once 'db.php';

$username =  htmlspecialchars($_GET['fuser'], ENT_QUOTES, 'UTF-8');
$follower = $_SESSION['user'];
$type = 'Following';


if($username == $follower){
    header('Location: index.php');
}


if($_SESSION['loggedIn'] == true && $follower != $username){
    $result = $con->prepare("SELECT * FROM followers WHERE follow_to = :post_id");
    $result->bindParam(':post_id', $username);
    $result->execute();
    $reprint = $result->rowCount();
}

if($result->rowCount() < 1){
    //Notifcation handler 
    $notf = $con->prepare("INSERT INTO notifications (from_user, to_user, type) VALUES (:cuser, :tuser, :type)");
    $notf->bindValue(':cuser', $_SESSION['user'], PDO::PARAM_STR);
    $notf->bindValue(':tuser', $username, PDO::PARAM_STR);
    $notf->bindValue(':type', $type, PDO::PARAM_STR);
    $notf->execute();

    //Insert into followers
    $stmt = $con->prepare("INSERT INTO followers (follow_from, follow_to) VALUES (:ff, :ft)");
    $stmt->bindValue(':ff', $follower, PDO::PARAM_STR);
    $stmt->bindValue(':ft', $username, PDO::PARAM_STR);
    $stmt->execute();

}
//Display follower
$stmt1 = $con->prepare("SELECT COUNT(*) AS count FROM followers WHERE follow_to = :username");
$stmt1->bindValue(':username', $username, PDO::PARAM_STR);
$stmt1->execute();
$likes = $stmt1->fetchAll(PDO::FETCH_ASSOC);

$qry = $con->prepare("SELECT follow_from, follow_to FROM followers");
$qry->execute();
$followers = $qry->fetchAll(PDO::FETCH_ASSOC);
header('Location: ' . $_SERVER['HTTP_REFERER']);
exit();

?>

我想这可能是我的问题。有什么想法吗

我建议做以下更改。在您最初的帖子中,您正在追随者表格中查找follow_to就是您希望追随的人的任何记录。这意味着,如果其他人正在跟踪此用户,根据您的逻辑,新的跟踪操作将不会发生

我修改了您的初始sql以检查记录,其中登录的用户已与请求的用户匹配

我正在添加一个初始化为0的$reprint变量。如果没有用户登录,则不会发生任何事情。如果用户已登录,但followers表中不存在记录,则会将新条目插入followers和notification中

否则,它不会插入脚本并执行脚本的其余部分

<?php
error_reporting(0);

session_start();

include_once 'db.php';

$username =  htmlspecialchars($_GET['fuser'], ENT_QUOTES, 'UTF-8');
$follower = $_SESSION['user'];
$type = 'Following';


if($username == $follower){
    header('Location: index.php');
}

$reprint = 0;

if($_SESSION['loggedIn'] == true && $follower != $username){
    $result = $con->prepare("SELECT * FROM followers WHERE follow_to = :post_id and follow_from = :from");
    $result->bindParam(':post_id', $username);
    $result->bindParam(':from', $follower);
    $result->execute();
    $reprint = $result->rowCount();
}

if($reprint < 1){
    //Notifcation handler 
    $notf = $con->prepare("INSERT INTO notifications (from_user, to_user, type) VALUES (:cuser, :tuser, :type)");
    $notf->bindValue(':cuser', $_SESSION['user'], PDO::PARAM_STR);
    $notf->bindValue(':tuser', $username, PDO::PARAM_STR);
    $notf->bindValue(':type', $type, PDO::PARAM_STR);
    $notf->execute();

    //Insert into followers
    $stmt = $con->prepare("INSERT INTO followers (follow_from, follow_to) VALUES (:ff, :ft)");
    $stmt->bindValue(':ff', $follower, PDO::PARAM_STR);
    $stmt->bindValue(':ft', $username, PDO::PARAM_STR);
    $stmt->execute();

}
//Display follower
$stmt1 = $con->prepare("SELECT COUNT(*) AS count FROM followers WHERE follow_to = :username");
$stmt1->bindValue(':username', $username, PDO::PARAM_STR);
$stmt1->execute();
$likes = $stmt1->fetchAll(PDO::FETCH_ASSOC);

$qry = $con->prepare("SELECT follow_from, follow_to FROM followers");
$qry->execute();
$followers = $qry->fetchAll(PDO::FETCH_ASSOC);
header('Location: ' . $_SERVER['HTTP_REFERER']);
exit();

?>


$follower=$\u会话['user']会话['user']
中有什么?当前登录的用户。在您的第一条SQL语句中,用户登录了@lifequery,您不需要检查Follow_From=$Follower和Follow_to=$Username的表Followers吗?您只需检查Follow_To=$Username的位置。然后我得到
$reprint
并将其传递给您@我只是想澄清一下。这是正确的吗$follower是登录的用户$用户名是登录用户希望跟踪的人。我可以问一下你做了什么吗?
<?php
error_reporting(0);

session_start();

include_once 'db.php';

$username =  htmlspecialchars($_GET['fuser'], ENT_QUOTES, 'UTF-8');
$follower = $_SESSION['user'];
$type = 'Following';


if($username == $follower){
    header('Location: index.php');
}

$reprint = 0;

if($_SESSION['loggedIn'] == true && $follower != $username){
    $result = $con->prepare("SELECT * FROM followers WHERE follow_to = :post_id and follow_from = :from");
    $result->bindParam(':post_id', $username);
    $result->bindParam(':from', $follower);
    $result->execute();
    $reprint = $result->rowCount();
}

if($reprint < 1){
    //Notifcation handler 
    $notf = $con->prepare("INSERT INTO notifications (from_user, to_user, type) VALUES (:cuser, :tuser, :type)");
    $notf->bindValue(':cuser', $_SESSION['user'], PDO::PARAM_STR);
    $notf->bindValue(':tuser', $username, PDO::PARAM_STR);
    $notf->bindValue(':type', $type, PDO::PARAM_STR);
    $notf->execute();

    //Insert into followers
    $stmt = $con->prepare("INSERT INTO followers (follow_from, follow_to) VALUES (:ff, :ft)");
    $stmt->bindValue(':ff', $follower, PDO::PARAM_STR);
    $stmt->bindValue(':ft', $username, PDO::PARAM_STR);
    $stmt->execute();

}
//Display follower
$stmt1 = $con->prepare("SELECT COUNT(*) AS count FROM followers WHERE follow_to = :username");
$stmt1->bindValue(':username', $username, PDO::PARAM_STR);
$stmt1->execute();
$likes = $stmt1->fetchAll(PDO::FETCH_ASSOC);

$qry = $con->prepare("SELECT follow_from, follow_to FROM followers");
$qry->execute();
$followers = $qry->fetchAll(PDO::FETCH_ASSOC);
header('Location: ' . $_SERVER['HTTP_REFERER']);
exit();

?>