drupal 7.のコアポーリングモジュールに問題があります。匿名ユーザーが投票できるようにしたい投票があります。現在、1つの匿名投票があり、現在は匿名です視聴者は結果だけを見ることができます(ネットワークの外から見てみました)。
私たちはパーマをチェックしました、そして匿名は投票して結果を見ることができます(しかし投票を変更することはできません)。キャッシュをクリアしました。
匿名ユーザーに関して、投票はD7でどのように機能しますか?
問題は、ポーリングモジュールが匿名IPアドレスごとに1つの投票しか許可しないことです。ホスティングプロバイダーの場合、すべてのリクエストを同じIPアドレスからDrupalに送信するプロキシの一種を使用していると私は疑っています。
Poll Enhancements Module はこの動作を変更して、同じIPアドレスからの複数の匿名投票を許可します。このモジュールの説明ページのドキュメントも Poll Improvement Module がこれを解決する可能性があることを示唆していますが、現時点では製品リリースはありません。
私はブレントの答えを試してみましたが、これは私にとってはうまくいきません、それから私はコアD7のポーリングモジュールを変更しました。
このモジュールはipの投票をブロックし、次の行はこれを変更します。
ファイル:home_site/modules/poll/poll.module
関数 "poll_vote"を検索し、IPアドレスに乱数を追加して、次のようにdb_insertで置き換えます。
$ip_random = mt_Rand(0, 100000); $ip_real = ip_address(); $ip_new = $ip_real.".".$ip_random; global $user; db_insert('poll_vote') ->fields(array( 'nid' => $node->nid, 'chid' => $choice, 'uid' => $user->uid, 'hostname' => $ip_new, 'timestamp' => REQUEST_TIME, )) ->execute();
モジュールにはキャッシュがあり、ブラウザに投票した場合、再度投票することはできませんが、キャッシュを消去するか、ブラウザを閉じると、再度投票できます。
drupal 6バージョンのように機能する場合、データベースにはuidごとに1つの投票が格納されます。匿名ユーザーはユーザー0なので、すべての匿名投票は1人のユーザーと見なされます。