1

私のウェブサイトにツイッターのようなフォロワー機能を実装しようとしています。プラグインに次のような関数があります。

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()その値を function に渡し、その値を保存して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 に答える