1

我正在尝试在我的网站中实现类似 Twitter 的追随者功能。我的插件中有这样的功能:

function current_profile_user_id() {
   return "current profile user id";
}
function button( $args = '' ) {
        $defaults = array(
            'leaderid'   => current_profile_user_id(),
            'followerid' => 'logged in user id'
        );
        return "HTML button";
    }

我可以通过使用函数参数从用户配置文件页面传递当前配置文件用户 ID 值的唯一方法。

假设$currentuser->ID返回当前配置文件页面用户值,但此变量仅在配置文件页面中可用。

谁能告诉我如何将该值传递给函数current_profile_user_id()、存储该值并返回 html 按钮?

请注意:我的许多其他函数也使用current_profile_user_id().

4

1 回答 1

2

您最好将值保存在会话中。一个函数可能依赖于全局范围,但它不会在页面之间保存。

你可以做类似的事情

function currentProfile($profile = False)
{
    if ($profile)
        $_SESSION['curr_profile'] = $profile;
    else
        if (isset($_SESSION['curr_profile']))
            return $_SESSION['curr_profile'];
    return $profile;
}

function current_profile_user_id()
{
    return currentProfile()->ID;
}

然后,尽快将配置文件保存在会话中

currentProfile($currentuser);

...应该工作。这样,您可以根据需要更改持久性curr_profile,而无需重新访问所有代码。

在一个可能相关的笔记上

(不太清楚你正在尝试做什么以及如何做,我希望这可能会变得有用)

因此,您有一个用户列表,并希望为每个用户显示一个“关注”模板。用户列表是从某种数据库中检索的,所以你会有类似的东西

while($user = $st->fetch(PDO::FETCH_ASSOC))
{
    // Populate the template

    // Append template to display code
}

在该模板中,您将拥有如下内容:

<a href="follow.php?id={$user['id']}">Follow {$user['name']}</a>

或者可能是一个 AJAX 调用将该用户添加到登录用户的关注列表而不刷新页面。无论如何,将调用一个服务器页面,该页面将收到一个会话 cookie和用户选择的 ID。

因此,该页面必须注意新的关注/取消关注,并且它将拥有所需的一切:

  1. 要关注的用户的ID,在$_REQUEST['id']
  2. 追随者的所有数据,在$_SESSION.

然后它可以执行,例如,一个查询,例如

 INSERT IGNORE INTO followers (follower, followee) VALUES ($id1, $id2);

持久化信息。

于 2012-11-03T13:15:10.107 回答