基礎から解る!PHP入門講座 プログラム入門に最適な言語、PHPを学ぼう

基礎から解る!PHP入門講座

プログラム入門に最適な言語、PHPを学ぼう      

 このサイトはPHPを独習する際に作成したスクリプトを基に、プログラム言語初心者のための入門講座として作成しました。PHPは初心者に親しみやすく、解りやすいプログラム言語です。これからプログラムを学ぶ人の参考になればと思います。


    ネズミ講プログラム

    <?php
    error_reporting(1);
    /*------------------------------------------------------*/
    $updir = "./chuchu";
    $top = "元締め";
    $enter = $_POST['enter'];
    $link = $_GET['name'];
    $mess = "";
    /*---------------------------------------------会員のファイル名を配列に入れる関数--*/
    function READ(){
      global $enter;
      global $updir;
      if($handle = opendir($updir)){
        $cnt=0;
        while (false !== ($file = readdir($handle))) {
          if($file == "." or $file == ".."){
          }else{
            $filenames[$cnt] = $file;
          }
        $cnt++;
        }
      closedir($handle);
      }
      rsort ($filenames);
      return $filenames;
    }
    /*----------------------------------------------改行や空白を削除する関数--*/
    function REFORM ($name){
      $name = str_replace("¥n", '', $name);
      $name = str_replace("¥r", '', $name);
      $name = str_replace(" ", '', $name);
      $name = str_replace(" ", '', $name);
    return $name;
    }
    /*------------------------------------------------------*/
    $filenames = READ();  //ファイル名を配列に入れる
    if($enter == "参加する"){
      $new = REFORM($_POST['new']);
      $inviter = $_POST['inviter'];
      $len = strlen($new);
      $new = strip_tags($new);
      /*-----------------------------------------同じ名前や文字数で書き込み可能かを調べる--*/
      $as = 0;
      while(isset($filenames[$as])){
        $name_check = file("$updir/$filenames[$as]");
        if($new == REFORM($name_check[0])){
          $mess = "$new さんはもう参加してますよ。";
          $check = "no";
          break;
        }else{
          $check = "ok";
        }
        $as++;
      }
      if($new == ""){
        $mess = "名前を教えてください。";
        $check = "no";
      }elseif($len > 14){
        $mess = "$new さんは名前が長すぎます。";
        $check = "no";
      }elseif($filenames == ""){
        $check = "ok";
      }
      /*--------------------------------------------ファイルを作り、名前と紹介者を書き込む--*/
      if($check == "ok"){
        $stamp = time();
        $save .= $new."¥n".$inviter;
        $filepointer=fopen("$updir/$stamp", "w+");
          flock($filepointer, LOCK_EX);
            fputs($filepointer,$save);
          flock($filepointer, LOCK_UN);
        fclose($filepointer);
      }
    }
    /*--------------------------------------------------もう一度ファイル名を配列に入れる--*/
    $filenames = READ();
    ?>

    <html><head>
    <meta http-equiv='Content-Type' content='text/html; charset=EUC_JP'>
    <meta http-equiv='Content-Style-Type' content='text/css'>
    <meta name='robots' content='index,ALL'>
    <meta name='description' content=''>
    <link rel='stylesheet' type='text/css' media='all' href='./style.css'>
    <title>ネズミ講プログラム</title></head>
    <body bgcolor='#ffffff' text='#000000' link='#0000FF' vlink='#008080' alink='#888888'>
    <center><div class='top'>ネズミ講プログラム</div>
    <?php
    echo "<div class='mess'>$mess</div>";
    if($link == ""){
    /*----------------------再帰関数----$parent は1人の名前で、名前を入れることでダウンを調べる--*/
      function LOOP($parent,$nee){
        global $updir;
        global $filenames;
        global $top;
        global $s_total;
        $kee = 1;
        $dr = 0;
        $ws = 1;
        while(isset($filenames[$dr])){  /*----------順にダウンがいるかどうかを調べる--*/
          $down2 = file("$updir/$filenames[$dr]");
          $down2[1] = REFORM($down2[1]);
          $parent = REFORM($parent);
            /*------------------------------紹介者に名前があれば再帰関数に突入--*/
            if($down2[1] == $top){
            }elseif($parent == $down2[1]){  /*-----$parentと全ファイル内の紹介者を照合する--*/
              /*------------------------------ダウンを右にずらすため空白を作る--*/
              $space = "";
              $gy = 0;
              while($gy < $nee){
                $space .= "  ";
              $gy++;
              }
              /*----------------------------------------------------------*/
              $s_total++;
              echo "<tr><td> $s_total</td><td>$space <b>$ws</b>";
              echo " - <a href='rat.php?name=".urlencode ($down2[0])."'>$down2[0]</td></tr>";
              $kee = $nee+1;
              $s_total = LOOP($down2[0],$kee);  /*----------再帰関数、自分自身を読みだす--*/
              $ws++;
            }else{  /*------------------------紹介者に名前がないので再帰関数は呼び出さない--*/
            }
        $dr++;
        }
        return($s_total);
      }
    /*--------------------------------------------------------------------------------------*/
      if($enter == "確認"){
        echo "<div class='mess'>100人になったとこで、摘発され解散となりました。</div><br>";
      }
      echo "<div class='mess'>紹介してもらう人をクリックしてください。</div>";
      echo "<table border='0' cellpadding='3' cellspacing='1'><tr><td>★</td><td>";
      echo "<a href='rat.php?name=".urlencode ("元締め")."'>元締め</a></td></tr>";
    /*-----------------------------------ここがメインの表示画面----会員表示のためのループ--*/
      $total = 0;  /*----------------------合計を調べる変数--*/
      $tr = 0;  /*----------データを順に読み込むための数字--*/
      $hg = 1;  /*----------------番号を表示するための数字--*/
      while(isset($filenames[$tr])){
      $s_total = 0;
        $down = file("$updir/$filenames[$tr]");
        $down[0] = REFORM($down[0]);  /*-------------関数の読み出し、改行や空白の削除--*/
        if($top == $down[1]){
          echo "<tr><td valign='top'><font color='red'><b>$hg</b></font></td>";
          echo "<td> <a href='rat.php?name=".urlencode ($down[0])."'>$down[0]</a></td></tr>";
          $total++;
          $kee = 1;
          $s_total = LOOP($down[0],$kee);  /*--------ループ関数を読み込む、ダウンの数を調べる--*/
          $total = $total + $s_total;
          $hg++;
        }
      $tr++;
      }
      echo "<tr><td> </td><td> <b>$total 人</b></td></tr></table>";
    /*---------------------------------------------100人になったらデータファイルを削除----*/  
      echo "<form action='rat.php' method='post'>";
      if($total == 100){
        echo "<br><div class='mess'>おめでとうございます。100人目の登録です!<br>";
        echo "確認をクリックしてください。</div><br>";
        $dl = 0;
        while(isset($filenames[$dl])){
          unlink("$updir/$filenames[$dl]");
        $dl++;
        }
        echo "<input type='submit' name='enter' value='確認'></form>";
      }else{
        echo "<input type='submit' name='enter' value='更新'></form>";
      }
    /*---------------------------------------------入力画面---新規登録名と紹介者を記録する--*/
    }elseif($link != ""){
      echo "<div class='mess'>$link さんのご紹介ですね。名前を記入してください。</div>";
      echo "<form action='rat.php' method='post'><input type='text' name='new'>";
      echo "<input type='hidden' name='inviter' value='$link'>";
      echo " <input type='submit' name='enter' value='参加する'></form>";
    }
    ?>

    </center></body></html>
    2023/9
    SUN MON TUE WED THU FRI SAT
              1 2
    3 4 5 6 7 8 9
    10 11 12 13 14 15 16
    17 18 19 20 21 22 23
    24 25 26 27 28 29 30


     フォクすけ©2006 Mozilla Japan



    制作:基礎から解るPHP入門講座 代表:FREEZE

    Copyright © 2005/2/28 flzPHP.All Rights Riserved