ランダムジャンプ2〜均等に複数のリンク先へジャンプする〜

プログラミング

ランダムジャンプ2〜均等に複数のリンク先へジャンプする〜

概要

以下のようにをクリックすると訪問順に4つのリンクにランダムではなく順番にアクセスするものを作成した。(均等に割り当てられる)

ランダムジャンプ2

ソースコード

count.datとindex.phpは同じディレクトリ。ここではcssは省略する。

count.datは訪問者数を格納する。(初期値では0)

0

index.phpは以下のようにphpとjavascriptを使って作成する。(cssは省略)

<?php
  //カウント数が記録してあるファイルを読み書きできるモードで開く
  $fp = fopen('count.dat', 'r+b');

  //ファイルを排他ロックする
  flock($fp, LOCK_EX);

  //ファイルからカウント数を取得する
  $count = fgets($fp);

  //カウント数を1増やす
  $count++;
?>

<!DOCTYPE html>
<html lang="ja">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta http-equiv="Content-Script-Type" content="text/javascript">
    <title>ランダムジャンプ2</title>
    <script type="text/javascript">
    <!--
      var mylink = new Array(
        "https://www.youtube.com/watch?v=vLV0UZ308bQ&t=155s",
        "https://tomomon.jp/travel/my_secret_place/",
        "https://tomomon.jp/travel/travel_ranking/",
        "https://tomomon.jp/programming/ksnctf5/"
      );
      function divide_links(num) {
        location.href = mylink[num];
      }
    // -->
    </script>
  </head>
  <body>
    <div class="link">
      <!-- ファイルから取得したカウント数を表示する -->
      <a href="javascript:divide_links(<?php echo $count%4 ;?>);">ここをクリックしてください。</a>
    </div>
  </body>
</html>

<?php
  //ポインターをファイルの先頭に戻す
  rewind($fp);

  //最新のアクセス数をファイルに書き込む
  fwrite($fp, $count);

  //ファイルのロックを解除する
  flock($fp, LOCK_UN);

  //ファイルを閉じる
  fclose($fp);
?>

コメント

タイトルとURLをコピーしました