web-dev-qa-db-ja.com

ユーザーがすでに投票したかどうかを確認

私はWordpressの投票システムを書いています。ユーザーが既に投票したかどうかを確認し、彼/彼女にメッセージを見せる必要があります。しかし、私はそれがどのようにできるのか正確にはわからない!私の解決策の1つは、テーブル(wp_voters)を作成し、各ユーザーのIPアドレスとポーリングIDを入力することです。

$user_ip = $_SERVER['REMOTE_ADDR'];

しかし、実際にはうまくいきません。 1人のユーザーに対して、2つ以上のIPアドレスを割り当てます。どうやってこの問題に対処できますか?ありがとう、

2
inverted_index

WordPress でそのような機能のためのテーブルを作成することは効率的な動きではありません。私は以下のアプローチを使ってこれをすることを好むでしょう。

  1. あなたの有権者情報のための カスタム投稿タイプ を作成してください。このために、 Generate WPポストタイプジェネレータ を試すことができます。

  2. ユーザーがサイトにアクセスしたとき。 wp insert postadd_post_meta を使って ポストメタ でIPと評価を保存します。このようにして、バックエンドでもリストを見ることができます。

  3. ユーザーがあなたのサイトを訪れるたびに、 WP Query を使ってそのIPを持つユーザーがいるかどうかチェックします。もしそれが存在すれば、情報を追加する必要はなく、それ以外の場合はステップ2で自分の情報を追加します。

これはあなたのユーザーのIPアドレスを取得する簡単な関数です。

function get_the_user_ip() {

    if ( ! empty( $_SERVER['HTTP_CLIENT_IP'] ) ) {
    //check ip from share internet
    $ip = $_SERVER['HTTP_CLIENT_IP'];
    } elseif ( ! empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
    //to check ip is pass from proxy
    $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
    } else {
    $ip = $_SERVER['REMOTE_ADDR'];
    }

    return $ip;

} 

これでうまくいくことを願っています。

3