異なる訪問者には異なるコンテンツが表示されますが、将来同じ訪問者が訪問した場合でも、キャッシュのクリアを除いてコンテンツは変更されません。
例
1. 5 つのコンテンツ A、B、C、D、および E があり、そのうちの 1 つが Web ページ上の 1 つ以上の場所に表示されます。
2. 最初の訪問者が Web ページにアクセスすると、コンテンツ A が表示されます。訪問者が今後再び Web ページを開くと、ブラウザのキャッシュをクリアしない限り、コンテンツ A が表示されます。
3. 2 番目の訪問者が Web ページにアクセスすると、コンテンツ B が表示されます。訪問者が今後再び Web ページを開くと、ブラウザのキャッシュをクリアしない限り、コンテンツ B が表示されます。
4. 。 。
5. 6 人目の訪問者が Web ページにアクセスすると、コンテンツ A が表示されます。訪問者が今後再び Web ページを開くと、ブラウザのキャッシュをクリアしない限り、コンテンツ A が表示されます。
6. 7 人目の訪問者が Web ページにアクセスすると、コンテンツ B が表示されます。訪問者が今後 Web ページを再度開くと、ブラウザのキャッシュをクリアしない限り、コンテンツ B が表示されます。
そのようなループ
は、5 つのコンテンツのうちの 1 つを順番に取得し、訪問者が来るたびに訪問者に表示し、5 つのコンテンツを取得した後にループすることに相当します。
この関数のコードはどのように記述すればよいですか?
------ソリューションのアイデア----------------------
この投稿は最終的に書かれましたby fdipzone 編集日 2015-04-06 17:24:06
<br />$arr = array('A','B','C','D','E');<br />$file = 'data.log';<br /><br />// 获取未显示过的page,如全部已显示,则重新赋值<br />if(file_exists($file)){<br /> $data = json_decode(file_get_contents($file),true);<br /> if(!$data){<br /> $data = $arr;<br /> }<br />}else{<br /> $data = $arr;<br />}<br /><br />// 判断用户是否访问过,如访问过直接显示上次访问的结果,否则抽取最前一页,写入用户cookies<br />if(isset($_COOKIE['show'])){<br /> $result = $_COOKIE['show'];<br />}else{<br /> $result = array_splice($data,0,1);<br /> $result = array_pop($result);<br /> setcookie('show',$result,time()+3600);<br /> file_put_contents($file, json_encode($data), true);<br />}<br /><br />echo $result;<br />
ログイン後にコピー
-----ソリューションのアイデア----- -- ----<br /><?php<br />$content = array('A', 'B', 'C', 'D', 'E');<br />!($cookie = intval($_COOKIE['content'])) && setcookie('content', $cookie = rand(0, count($content) - 1));<br />echo $content[$cookie];<br />
ログイン後にコピー