このサイトは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 |