php禁止重復(fù)投票的實(shí)現(xiàn)方法:首先把投的票放入set里;然后通過“$redis->sIsMember('question:vote:' . $questionId, $userId);”等方法實(shí)現(xiàn)禁止重復(fù)投票即可。
本文操作環(huán)境:windows7系統(tǒng)、PHP7.1版,DELL G3電腦
php怎么禁止重復(fù)投票?
無論是現(xiàn)實(shí)投票,還是網(wǎng)絡(luò)投票,都要保證投票者身份的唯一性。
一般我們會把投的票放入存儲中,但是放到數(shù)據(jù)庫里查詢起來顯然太慢了,而現(xiàn)在有了redis(http://redis.io),就可以把它放到set里了。
下面我用php代碼來演示這一過程,其它語言類同
$userId = '111'; $questionId = '222'; // 用戶111向問題222投票,那么我們把222的userId放到名為question:vote:111的set里 $redis->sAdd('question:vote:' . $questionId, $userId); // 判斷222用戶是否對111問題投過票了,只需判斷111是否被包含在question:vote:111的set里 $isVoted = $redis->sIsMember('question:vote:' . $questionId, $userId); // 我們還可以取消投票,只需要從set里移除這個元素 $redis->sRem('question:vote:' . $questionId, $userId);
所有的一切都在內(nèi)存中進(jìn)行,非常快速.
推薦學(xué)習(xí):《PHP視頻教程》