このサイトはPHPを独習する際に作成したスクリプトを基に、プログラム言語初心者のための入門講座として作成しました。PHPは初心者に親しみやすく、解りやすいプログラム言語です。これからプログラムを学ぶ人の参考になればと思います。
Word Excel 二択クイズ TOP画面
<?php error_reporting(1); define("KANRININ","****"); //管理人の名前 define("PASS","****"); //管理人用パスワード /*--------------------------------------------------*/ $player = $_POST['player']; if($player == null){ $player =$_COOKIE['player']; if($player == "新規登録"){ $player = "ログイン"; } } setcookie("player",$player,time()+60*60); /*--------------------------------------------------WORD・EXCELの切替を保存*/ $office = $_POST['office']; if($office == null){ $office=$_COOKIE['office_select']; } setcookie("office_select",$office,time()+60*60); /*--------------------------------------------------クイズ終了後の科目情報の初期化*/ if($_GET['renew'] == "new"){ $office = null; } /*--------------------------------------------------名前とパスワード*/ $pass=$_COOKIE['password_quiz_ask']; $name=$_COOKIE['name']; if($pass == null or $name == null){ $name = $_POST['name']; $pass = $_POST['pass']; setcookie("password_quiz_ask", $pass, time()+60*60); setcookie("name", $name, time()+60*60); } /*--------------------------------------------------/トップテン 削除確認*/ $record = $_POST['record']; $again = $_POST['again']; /*--------------------------------------------------個人データの削除*/ $each_name = $_POST['each_name']; /*each_nameは削除用の名前*/ if($each_name == null){ $each_name = $_COOKIE['each_name']; } setcookie("each_name",$each_name, time()+60*60); /*--------------------------------一覧/削除の時は一時的に$each_name(個人名)を初期化しておく*/ $each = $_POST['each']; if($each == "一覧"){ $each_name = ""; } else if($each == "削除"){ $office = ""; } /*--------------------------------------------------試験時間の初期化*/ $start==null; setcookie("start_time"); /*-----------------------------------時間計測のためのクッキー、やり直しの場合にクッキーをクリア*/ $check_new = $_GET['check']; if($check_new == "new"){ setcookie("start_time"); } /*--------------------------------------------------ログオフの設定 全てのクッキーと変数を初期化*/ $select = $_POST['select']; if($select == "LOGOFF") { setcookie("password_quiz_ask"); /*クッキー"password"をクリア*/ setcookie("name"); /*クッキー"password"をクリア*/ setcookie("office_select"); setcookie("office"); setcookie("player"); setcookie("start_time"); setcookie("each_name"); $pass_ask = ""; /*パスワードデータをクリア*/ $name = ""; /*パスワードデータをクリア*/ $player = ""; $office = ""; $pass = ""; $start_time = ""; $each_name = ""; } /*-----------------------ファイルやフォルダの作成 初回の起動で必要なフォルダ・ファイルを作成する*/ if(!file_exists("./quiz")){ mkdir ("./quiz",0777); mkdir ("./quiz/name_EXCEL",0777); mkdir ("./quiz/name_WORD",0777); $handle = fopen("./quiz/list", "w+"); fclose($handle); $handle = fopen("./quiz/toptenWORD", "w+"); fclose($handle); $handle = fopen("./quiz/toptenEXCEL", "w+"); fclose($handle); $handle = fopen("./quiz/WORD", "w+"); fclose($handle); $handle = fopen("./quiz/EXCEL", "w+"); fclose($handle); } ?><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"><head> <meta http-equiv="Content-type" content="text/html; charset=EUC-JP"> <meta http-equiv="Content-Style-Type" content="text/css"> <link rel="stylesheet" href="./style.css"> <title>WORD&EXCEL2002 知識クイズ</title></head> <body><div class="file2"> <table width="700" border="0"><tr><td> <h3>WORD&EXCEL 2002 知識クイズ</h3></td> <td valign="top"><a href="../../file04.html">解説にもどる</a> <a href="../../../list.html">リストにもどる</a></td></tr></table> 名前とパスワードを記入してログインしてください。 初めての方は名前とパスワードを登録してください。<br> 名前は英数4文字以上15文字以下、パスワードは英数4文字です。<br> <form action="index.php" method="post"> <input type="radio" name="player" value="ログイン" checked>ログイン <input type="radio" name="player" value="新規登録">新規登録 <input type="radio" name="player" value="管理者">管理者<br> 名前 <input type="text" name="name" size="15"> パスワード <input type="password" name="pass" size="10"> <input type="submit" value="LOGIN/登録"> <?php if($name != null and $pass != null){ echo "<input type='submit' name= 'select' value='LOGOFF'>"; } ?></form> <?php /*--------------------------------------------------一般用の表示関数*/ function LOGIN(){ global $name; global $pass; global $player; echo "<table border='0'><tr><td>"; echo "<form action='quiz_ask.php' method='post'>問 題 "; echo "<input type='submit' name= 'office' value='WORD'> "; echo "<input type='submit' name= 'office' value='EXCEL'></form></td></tr></table>"; echo "1レベル5問出題されます。各レベルは4問以上正解でクリア。10問からランダムに5問が出題されます。<br>"; echo "全て二択問題で、クリアできなければそこで終了、全10レベルをクリアすると合格です。<br><br>"; echo "<table border='0'><tr><td>"; echo "<form action='index.php' method='post'>成績表 "; echo "<input type='submit' name= 'office' value='WORD'> "; echo "<input type='submit' name= 'office' value='EXCEL'> "; echo "<input type='submit' name= 'record' value='TOP20'>"; echo "</form></td></tr></table>"; } /*--------------------------------------------------管理者用の表示関数*/ function MASTER(){ global $name; global $pass; global $player; global $list_count; global $list_file; /*--------------------------------------------------*/ if($name == KANRININ and $pass == PASS){ echo "<table border='0'><tr><td>"; echo "<form action='quiz_ask.php' method='post'>問 題 "; echo "<input type='submit' name= 'office' value='WORD'> "; echo "<input type='submit' name= 'office' value='EXCEL'></form></td></tr></table>"; echo "1レベル5問出題されます。各レベルは4問以上正解でクリア。10問からランダムに5問が出題されます。<br>"; echo "全て二択問題で、クリアできなければそこで終了、全10レベルをクリアすると合格です。<br><br>"; echo "<table border='0'><tr><td><form action='index.php' method='post'>"; echo "<table border='0'><tr><td valign='bottom'>登録者数".$list_count."名</td>"; echo "<td align='right'>成</td><td>績</td><td align='center'>上位</td>"; echo "<td align='center'>データ</td><td>登録者</td></tr><tr><td>"; echo "<select name='each_name'>"; echo "<option></option>"; $stnum = 0; while($list_count > $stnum){ $text = split("&&",$list_file[$stnum]); echo "<option value='".$list_file[$stnum]."'>$text[0]</option>"; $stnum++; } echo "</select></td>"; echo "<td><input type='submit' name= 'office' value='WORD'></td>"; echo "<td><input type='submit' name= 'office' value='EXCEL'></td>"; echo "<td><input type='submit' name= 'record' value='TOP20'></td>"; echo "<td><input type='submit' name= 'each' value='削除'></td>"; echo "<td><input type='submit' name= 'each' value='一覧'></td></tr></table></form></td>"; echo "<td><form action='quiz_write.php' method='post'>"; echo "<table border='0'><tr><td align='right'>問題</td><td>作成</td></tr>"; echo "<input type='hidden' name='name' value=$name>"; echo "<input type='hidden' name='pass' value=$pass>"; echo "<td><input type='submit' name= 'office' value='WORD'></td>"; echo "<td><input type='submit' name= 'office' value='EXCEL'></td>"; echo "</tr></table></form></td></tr></table>"; /*--------------------------------------------------*/ } else if($name == "kanri" and $pass == "1234"){ echo "<table border='0'><tr><td>"; echo "<form action='quiz_ask.php' method='post'>問 題 "; echo "<input type='submit' name= 'office' value='WORD'> "; echo "<input type='submit' name= 'office' value='EXCEL'></form></td></tr></table>"; echo "1レベル5問出題されます。各レベルは4問以上正解でクリア。10問からランダムに5問が出題されます。<br>"; echo "全て二択問題で、クリアできなければそこで終了、全10レベルをクリアすると合格です。<br><br>"; echo "<table border='0'><tr><td><form action='index.php' method='post'>"; echo "<table border='0'><tr><td valign='bottom'>登録者数".$list_count."名</td>"; echo "<td align='right'>成</td><td>績</td><td align='center'>上位</td>"; echo "<td align='center'>データ</td><td>登録者</td></tr><tr><td>"; echo "<select name='each_name'>"; $stnum = 0; echo "<option></option>"; while($list_count > $stnum){ $text = split("&&",$list_file[$stnum]); echo "<option value='".$list_file[$stnum]."'>$text[0]</option>"; $stnum++; } echo "</select></td>"; echo "<td><input type='submit' name= 'office' value='WORD'></td>"; echo "<td><input type='submit' name= 'office' value='EXCEL'></td>"; echo "<td><input type='submit' name= 'record' value='TOP20'></td>"; echo "<td><input type='submit' name= 'each' value='削除'></td>"; echo "<td><input type='submit' name= 'each' value='一覧'></td></tr></table></form></td>"; echo "<td><form method='post'>"; echo "<table border='0'><tr><td align='right'>問題</td><td>作成</td></tr>"; echo "<td colspan='2'>デモ用なので作成画面には移動できません</td>"; echo "</tr></table></form></td></tr></table>"; } } /*--------------------------------------------------個人成績表の表示*/ function RESULT($name_in){ global $office; if(file_exists("./quiz/name_$office/$name_in") and $name_in !=null){ echo "名前:".$name_in." ".$office."成績表"; $result = file("./quiz/name_$office/$name_in"); $array_cnt = count($result); echo "<table border='1'>"; echo "<tr><td>DATE&TIME</td><td>LEVEL</td><td>POINT</td><td>TIME</td><td>BAR</td></tr>"; $cnt = 0; while($cnt < $array_cnt){ echo "<tr>"; $text = split("&&",$result[$cnt]); $rcnt = 0; while($rcnt < 4){ echo "<td align='center'>"; echo $text[$rcnt]." "; echo "</td>"; $rcnt ++; } $cnt ++; $text[2] *= 2; /*200ピクセルの幅に合うよう点数を二倍してグラフを作る*/ echo "<td width='200'><img src='bar.gif' width = $text[2] height='10'></td>"; echo "</tr>"; } echo "</table>"; } } /*--------------------------------------------------トップテン表示のための関数*/ function TOPTEN($office_topten){ /*読みこむたびに得点順に並べ上位20位のみを上書きする*/ echo $office_topten; $topten = file("./quiz/topten$office_topten"); rsort($topten,SORT_NUMERIC); /*ポイント・タイム・名前・日付・レベル*/ echo "<table border='1'>"; echo "<tr><td>NO</td><td>PNT</td><td>TIME</td><td>NAME</td><td>DATE</td><td>LVL</td><td>BAR</td></tr>"; $cnt = 0; while($cnt < 20){ $text = split("¥.",$topten[$cnt]); /*.(ドット)は¥でエスケープします*/ $text[1] = 1000 - $text[1]; /*テスト時間は短い方が上位なので1000からの差で順位を決める*/ if($text[2] == null){ break; } echo "<tr>"; $cnt++; /*$cntが0からなので、順位表示のため1を足し、表示後1を引く*/ echo "<td align='center'>$cnt</td>"; $cnt--; $rcnt = 0; while($rcnt < 5){ echo "<td align='center'>$text[$rcnt]</td>"; $rcnt ++; } echo "<td width='100'><img src='bar.gif' width = $text[0] height='10'></td>"; echo "</tr>"; $text[1] = 1000 -$text[1]; $cnt ++; } echo "</table>";
$filepointer=fopen("./quiz/topten$office_topten", "w+"); /*ここから書きこみ*/ flock($filepointer, LOCK_EX); $save_data = null ; for($acnt=0;$acnt<20;$acnt++){ $save_data = $save_data.$topten[$acnt]; } fputs($filepointer,$save_data); flock($filepointer, LOCK_UN); fclose($filepointer); } /*--------------------------------------------------*/ $updir = "quiz/list"; $name = htmlspecialchars($name, ENT_QUOTES); /*タグを無効化 */ $length = strlen($name); $length_p = strlen($pass); /*-------------------------ログオフの場合の表示、全ての変数が初期化されるため他は表示されない*/ if($select == "LOGOFF"){ echo "ログオフしました。お疲れ様。"; } /*--------------------------------------------------新規登録の場合の表示*/ if($player == "新規登録"){ if($name == "" or $pass == ""){ echo "名前とパスワードを記入してください。"; } else { $filepointer=fopen("./$updir", "a+"); /*同じ名前が存在するかの確認*/ while(!feof($filepointer)){ $fileline = fgets($filepointer); $text = split("&&",$fileline); if($name == $text[0]){ $select = "no"; break; } } If($select == "no"){ echo "その名前はすでにあります。ログオフして別の名前で登録してください。"; } else if(!ereg("([a-zA-Z0-9]{4,})",$name) or $length >= 15 ){ echo "$name は適正な名前ではありません。$length<br>"; echo "ログオフして、もう一度登録をお願いします。"; } elseif(!ereg("([a-zA-Z0-9]{4})",$pass) or $length_p != 4 ){ echo "$pass は適正なパスワードではありません。<br>"; echo "ログオフして、もう一度登録をお願いします。"; } else { echo "名前は $name 、パスワードは $pass ですね。"; echo "このデータを登録しました。<br>"; echo "このIDも使えますが、'kanri' '1234' でデモ用管理画面に入れます。"; $regi_date = date("y/m/d"); $data = $name."&&".$pass."&&".$regi_date; flock($filepointer, LOCK_EX); fputs($filepointer, $data."¥n"); flock($filepointer, LOCK_UN); LOGIN(); } fclose($filepointer); } /*--------------------------------------------------ログインの場合*/ } elseif ($player == "ログイン"){ $filepointer=fopen("./$updir", "r"); while(!feof($filepointer)){ $fileline = fgets($filepointer); /*登録された名前の確認*/ $text = split("&&",$fileline); if($name == $text[0] and $pass == rtrim($text[1])){ $match = "yes"; break; } } fclose($filepointer); if($match == "yes" and $name != null){ echo "$player 名前 $name パスワード **** を確認しました。<br><br>"; LOGIN(); } else { echo "名前かパスワードが違うようです。もう一度ためしてください。"; } if($record == "TOP20"){ echo "<table><tr><td valign='top'>"; TOPTEN("WORD"); /*TOP20の表示 変数でなく直接 "WORD" の文字を入れる */ echo "</td><td valign='top'>"; TOPTEN("EXCEL"); echo "</td></tr></table>"; } else { RESULT($name); } /*--------------------------------------------------管理者の場合*/ } else if($player == "管理者"){ $list_file = file("./$updir"); $list_count = count($list_file); $each_name_array = split("&&",$each_name); /*--------------------------------------------------登録者の削除*/ if($each == "削除"){ $delcheck = "yes"; if($name == KANRININ){ if($again == "はい"){ $key = array_search($each_name, $list_file); /*リストから名前を探しキーを返す*/ array_splice($list_file, $key,1); /*キーをもとに配列から名前を削除する*/ if(file_exists("./quiz/name_EXCEL/$each_name_array[0]")){ unlink("./quiz/name_EXCEL/$each_name_array[0]"); } if(file_exists("./quiz/name_WORD/$each_name_array[0]")){ unlink("./quiz/name_WORD/$each_name_array[0]"); } $filepointer=fopen("./quiz/list", "w+"); /*ここから書きこみ*/ flock($filepointer, LOCK_EX); $lcnt = 0; while($lcnt < $list_count){ fputs($filepointer, $list_file[$lcnt]); $lcnt ++; } flock($filepointer, LOCK_UN); fclose($filepointer); $delcheck = "no"; } } else { $demo="yes"; } /*--------------------------------------------------一覧表示*/ } else if($each == "一覧"){ $list_check = "yes"; $list_file = file("./quiz/list"); } $list_count = count($list_file); sort($list_file); MASTER(); /*--------------------------------------------------*/ if($delcheck == "yes"){ echo "<form action='index.php' method='post'>"; echo "<table border='0'><tr><td>$each_name_array[0] を削除しますか?</td><td>"; echo "<input type='hidden' name='each' value='削除'>"; echo "<input type='submit' name= 'again' value='はい'> "; echo "<input type='submit' name= 'each' value='キャンセル'></td></tr></table></form>"; if($demo=="yes"){ echo "デモ用の管理者画面なので削除できません"; } /*--------------------------------------------------*/ } else if($list_check == "yes"){ echo "登録者一覧 受験回数"; echo "<table border='1'><tr><td align='center' width='100'>登録日</td><td align='center' width='100'>ID</td>"; echo "<td align='center' width='100'>パスワード</td><td align='center' width='70'>WORD</td>"; echo "<td align='center' width='70'>EXCEL</td></tr>"; $lst_cnt = 0; while($lst_cnt < $list_count){ /*登録者の受験回数を数える*/ $list_data = split("&&",$list_file[$lst_cnt]); if(file_exists("./quiz/name_WORD/$list_data[0]")){ $try_word = file("./quiz/name_WORD/$list_data[0]"); $try_word_count = count($try_word); } else { $try_word_count = 0; } if(file_exists("./quiz/name_EXCEL/$list_data[0]")){ $try_excel = file("./quiz/name_EXCEL/$list_data[0]"); $try_excel_count = count($try_excel); } else { $try_excel_count = 0; } echo "<tr><td align='center'>$list_data[2]</td><td align='center'>$list_data[0]</td><td align='center'>"; if($name!= KANRININ){ echo "****"; /*デモ用管理画面ではパスワードを表示しない*/ } else { echo "$list_data[1]"; } echo "</td><td align='center'>$try_word_count</td><td align='center'>$try_excel_count</td></tr>"; $lst_cnt++; } echo "</table>"; /*--------------------------------------------------*/ } else if($record == "TOP20"){ echo "<table><tr><td valign='top'>"; TOPTEN("WORD"); echo "</td><td valign='top'>"; TOPTEN("EXCEL"); echo "</td></tr></table>"; /*--------------------------------------------------*/ } else { if($name == "kanri"){ echo "デモ用の管理画面のため他の成績を見ることはできません。<br>"; RESULT($name); } else { RESULT($each_name_array[0]); /*個人成績表の表示*/ } } }
?></body></html>
Word Excel 二択クイズ 出題画面
<?php error_reporting(1); /*--------------------------------------------------クッキーの設定*/ $office = $_POST['office']; if($office == null){ $office=$_COOKIE['office_select']; } setcookie("office_select", $office, time()+60*60); $pass_ask = $_POST['pass'];
$name = $_POST['name']; if($pass_ask == null or $name == null){ $pass_ask=$_COOKIE['password_quiz_ask']; $name=$_COOKIE['name']; } setcookie("password_quiz_ask", $pass_ask, time()+60*60); setcookie("name", $name, time()+60*60); /*--------------------時間計測のためのクッキー、やり直しの場合にクッキーをクリア*/ $check_new = $_GET[check]; if($check_new == "new"){ setcookie("start_time"); } ?><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"><head> <meta http-equiv="Content-type" content="text/html; charset=EUC-JP"> <meta http-equiv="Content-Style-Type" content="text/css"> <link rel="stylesheet" href="./style.css"> <title>EXCEL問題集</title></head> <body><div class="file2"> <?php /*--------------------------------------------------パスワード・名前入力画面*/ if($pass_ask == null or $office == ""){ echo "ログインは<a href='index.php'>こちら</a>からです。"; } else { $time_check = time(); /*--------------------------------------------------チェックファイルからの受け取り*/ $level_get = $_POST['level']; $right_cnt_before = $_POST['point']; $updir = "quiz/$office"; $enter = $_POST['enter']; $level = 1; $level += $level_get; /*--------------------------------------------------タイトル*/ echo "<span class='shadow'>¥n"; echo "$office 2002 QUIZ LEVEL $level</span>¥n"; /*--------------------------------------------------ここから問題の読みこみと5問の取りだし*/ if(file_exists("./$updir")){ /*一度すべての行を順に読みこむ*/ $filepointer=fopen("./$updir", "r"); while(!feof($filepointer)){ /*読みこんだ各行を配列に格納*/ $fileline = fgets($filepointer); $quest[] = $fileline; } fclose($filepointer); } array_pop($quest); /*最後の改行が空白の配列になるので削除*/ sort($quest,SORT_NUMERIC); /*要素でソートする(要素の初めは問題番号になっている)*/ $start = $level*10-10; /*レベル番号から開始番号を調べる*/ $quest = array_slice($quest, $start, 10); /*開始番号から10問を取り出す*/ srand((float)microtime() * 1000000); /*乱数を初期化*/ shuffle($quest); /*取り出した10問をシャッフル*/ /*--------------------------------------------------取り出した5問を表示する*/ echo "<form action='quiz_check.php' method='post'>¥n"; $qs_num = count($quest); $qs_cnt = 1; while($qs_cnt < 6){ $text = split("&&",$quest[$qs_cnt]); $quest_now[] = $text[0]; echo "<div class='nikki'>¥n"; echo "<b>$qs_cnt</b> $text[2] <br>¥n"; echo " <input type='radio' name='ans".$text[0]."' value='YES'>正しい¥n"; echo " <input type='radio' name='ans".$text[0]."' value='NO'>間違い</div>¥n"; $qs_cnt++; } /*--------------------------------------------------チェックファイルにデータを送る*/ $cont = 0; /*出題した問題番号、配列のままでは送れないので文字列にする*/ while($cont < 5){ $ary_send = $quest_now[$cont]; $send = $send."&".$ary_send; $cont++; } echo "<input type='hidden' name='right_cnt_before' value='".$right_cnt_before."'>¥n"; echo "<input type='hidden' name='level_now' value='".$level."'>¥n"; echo "<input type='hidden' name='quest_now' value='".$send."'>¥n"; echo "<input type='hidden' name='time_check' value='".$time_check."'>¥n"; echo "<input type='hidden' name='right_check' value='check'>¥n"; echo "<br><br> <input type='submit' name='enter' value='CHECK'></form>¥n"; /*--------------------------------------------------トップ画面で名前を入力しなかった場合*/ }
?></body></html>
Word Excel 二択クイズ チェック画面
<?php error_reporting(1); /*----------------------------------------------パスワードと名前のクッキーの設定*/ $office=$_COOKIE['office_select']; if($pass_ask==null){ $pass=$_COOKIE['password_quiz_ask']; $name=$_COOKIE['name']; } /*----------------------------------------------時間計測のためのクッキー*/ $time_check = $_POST['time_check']; $now = time(); $start=$_COOKIE['start_time']; if($start==null){ setcookie("start_time", $time_check, time()+60*60); $start = $time_check; } $take_time = $now - $start; $minute = (int)($take_time/60); $second = $take_time % 60 ; /*----------------------------------------------個人データとトップ20データの書きこみ*/ function WRITE(){ global $office; global $name; global $level; global $point; global $take_time; global $level; $time_ptn = date("Y/m/d H:i:s"); $filepointer=fopen("./quiz/name_$office/$name", "a+"); /*ここから書きこみ*/ flock($filepointer, LOCK_EX); fputs($filepointer,$time_ptn."&&".$level."&&".$point."&&".$take_time."¥n"); flock($filepointer, LOCK_UN); fclose($filepointer); $time_ptn = date("y/m/d"); $take_time = 1000 - $take_time ; /*-----------------ここから書きこみ 試験時間も考慮してソートするため.(ドット)で繋げます*/ $filepointer=fopen("./quiz/topten$office", "a+"); flock($filepointer, LOCK_EX); fputs($filepointer,$point.".".$take_time.".".$name.".".$time_ptn.".".$level."¥n"); flock($filepointer, LOCK_UN); fclose($filepointer); } /*----------------------------------------------*/ ?><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"><head> <meta http-equiv="Content-type" content="text/html; charset=EUC-JP"> <meta http-equiv="Content-Style-Type" content="text/css"> <link rel="stylesheet" href="./style.css"> <title>WORD/EXCEL問題集</title></head> <body><div class="file2"> <?php /*----------------------------------------------パスワード・名前入力画面*/ if($pass == null or $office == ""){ echo "<a href='index.php'>こちら</a>からログインしてください。"; } else { /*----------------------------------------------データの受け取り*/ $quest_now = $_POST['quest_now']; /*実施された問題番号*/ $level_now = $_POST['level_now']; $right_cnt_before = $_POST['right_cnt_before']; $updir = "quiz/$office"; $quest_num = split("&",$quest_now); /*問題番号を再び配列へ*/ $ans[1] = $_POST["ans$quest_num[1]"]; /*解答の受け取り、上の問題番号が form の name になっている*/ $ans[2] = $_POST["ans$quest_num[2]"]; $ans[3] = $_POST["ans$quest_num[3]"]; $ans[4] = $_POST["ans$quest_num[4]"]; $ans[5] = $_POST["ans$quest_num[5]"]; /*----------------------------------------------*/ echo "<span class='shadow'>¥n"; echo "$office 2002 QUIZ LEVEL $level_now </span><br><br>¥n"; /*----------------------------------------------問題と解答の読みこみ*/ if(file_exists("./$updir")){ $filepointer=fopen("./$updir", "r"); while(!feof($filepointer)){ /*一度すべての問題を順に読みこむ*/ $fileline = fgets($filepointer); $text = split("&&",$fileline); /*読み込んだデータから問題番号を取り出す$text[0]が番号*/ for($a = 1;$a < 6;$a++){ /*問題番号を実施した問題の番号と照合*/ if($text[0] == $quest_num[$a]){ /*同じ番号が見つかったら配列に入れる*/ $quest_ans[] = $a."&&".$fileline; } } } fclose($filepointer); }
/*----------------------------------------------ここから表示部分*/ sort($quest_ans,SORT_NUMERIC); $right_cnt = 0; $qs_cnt = 0; while($qs_cnt < 5){ $text = split("&&",$quest_ans[$qs_cnt]); $quest_ans[] = $text[0]; $qs_cnt ++; if($text[2] == $ans[$qs_cnt]){ $check = "○"; $right_cnt ++ ; } else { $check = "×"; } if($text[2] == "YES"){ $answer = "正しい"; } else { $answer = "間違い"; } echo "<div class='nikki2'><b>$text[0]</b>¥n <font color='red'><b>$check</b></font> $answer"; echo "<br>¥n問題 $text[3]<br><font color='blue'>解説 $text[4] </font></div>¥n"; } /*----------------------------------------------採点結果による表示*/ if($right_cnt < 4){ /*4問以上の正解がなかった場合*/ $right_cnt += $right_cnt_before; $point = $right_cnt/50*100; $level = $level_now -1; switch ($level){ /*switch を使った条件分岐*/ case $level = 0 ; $mess = "しっかりして!"; break; case $level = 1 ; $mess = "出直してきて!"; break; case $level = 2 ; $mess = "修行がたりませんよ!"; break; case $level = 3 ; $mess = "こんなことでは・・・"; break; case $level = 4 ; $mess = "あきらめないで!"; break; case $level = 5 ; $mess = "半分です。まだまだ!"; break; case $level = 6 ; $mess = "がんばれ〜"; break; case $level = 7 ; $mess = "がんばった。もう一度!"; break; case $level = 8 ; $mess = "後少しで全クリアッ!"; break; case $level = 9 ; $mess = "おしいっ!もうちょっと"; break; } /*----------------------------------------------点数データの書きこみ*/ WRITE(); /*----------------------------------------------レベル10まで行かなかった場合の表示*/ echo "<div style='font-size:16px;font-weight:bold;margin:15px'>終了!クリアレベル $level ¥n"; echo " $point 点です。".$name."さん、".$mess."</div>¥n"; echo " ". $minute."分".$second."秒 <a href='quiz_ask.php?check=new'>もう一度やる</a>¥n"; echo "<a href='index.php?check=new'>TOPに戻る</a>"; /*----------------------------------------------レベル10が終了した場合*/ } else { if($level_now == 10){ $right_cnt += $right_cnt_before; $point = $right_cnt/50*100; echo "<div style='font-size:16px;margin:15px;font-weight:bold;line-height:20px'>¥n"; echo "最終レベルをクリアしました。合格です!$right_cnt 問正解、$point 点です。<br>¥n"; echo $minute."分".$second."秒 <a href='quiz_ask.php'>もう一度</a>¥n"; echo "<a href='index.php'>TOPに戻る</a></div>"; $level="10"; WRITE(); /*----------------------------------------------レベルクリア、レベル9までの処理*/ } else { echo " $right_cnt 問正解です。"; $right_cnt += $right_cnt_before; echo "<form action='quiz_ask.php' method='post'>¥n"; echo "<input type='hidden' name='level' value='".$level_now."'>¥n"; echo "<input type='hidden' name='point' value='".$right_cnt."'>¥n"; echo " <input type='submit' name ='enter' value='次のレベル'>¥n"; } } /*----------------------------------------------採点結果表示*/ } ?></body></html>
Word Excel 二択クイズ 問題作成画面
<?php error_reporting(1); define("PASS","****"); /*----------------------------------------------パスワード”の設定*/ $pass=$_COOKIE['password_quiz_ask']; $name=$_COOKIE['name']; $office = $_POST['office']; if($office == null){ $office = $_COOKIE['office']; } setcookie("office",$office,time()+60*60); ?><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"><head> <meta http-equiv="Content-type" content="text/html; charset=EUC-JP"> <meta http-equiv="Content-Style-Type" content="text/css"> <link rel="stylesheet" href="./style.css"> <style type="text/css"> <!-- .nikki { font-size:12px;line-height:15px;text-align:left;width:660px;padding:7px;margin:0px; border-style:solid;border-width:1px;background-color:#ffffff;border-color:#abcdef;} //--> </style><title>WORD/EXCEL問題集</title></head> <body><div class="file2"> <?php if($pass != PASS){ echo "<a href='index.php'>TOP</a>"; } else if($pass == PASS){ /*----------------------------------------------LOGOFFの設定*/ echo "<table width='660' border='0'><tr style='margin:0px;font-size:15px'>"; echo "<td>クイズ入力 :".date("Y/m/d")."</td>"; echo "<td><a href='index.php?renew=new'>TOP</a></td></tr></table>"; /*----------------------------------------------*/ echo "<form action='quiz_write.php' method='post'>"; echo "<table border='0' width='660'><tr>"; echo "<td>番号 <select name='number'>"; echo "<option>"." " ."</option>"; $cnt = 1; while ($cnt < 101){ echo "<option value='$cnt'>".$cnt."</option>"; $cnt++; } echo "</select> 正解 <select name='answer'>"; echo "<option value='YES'>YES</option>"; echo "<option value='NO'>NO</option>"; echo "</select></td></tr>"; echo "<tr><td><textarea name='quiz' cols='90' rows='2'></textarea></td></tr>"; echo "<tr><td><textarea name='expln' cols='90' rows='2'></textarea></td></tr>"; echo "<tr><td><input type='submit' name='enter' value='書込/表示'> "; echo "<input type='submit' name='enter' value='消す!'></td></tr></table></form>"; $number = $_POST['number']; $answer = $_POST['answer']; $quiz = $_POST['quiz']; $expln = $_POST['expln']; $updir = "quiz/".$office; $data = $number."&&".$answer."&&".$quiz."&&".$expln."¥n"; $enter = $_POST['enter']; /*----------------------------------------------ここから削除*/ if ($enter == "消す!"){ $filepointer=fopen("./$updir", "r"); /*いったん読み出し*/ while(!feof($filepointer)){ $fileline = fgets($filepointer); $ary_num = split("&&",$fileline); /*配列に入れ*/ $quest_del[$ary_num[0]] = $fileline; } fclose($filepointer); $qs_num = count($quest_del); $qs_cnt = 1; while($qs_cnt < 101){ /*入力番号と同じ配列キーを削除*/ if($number == $qs_cnt){; $quest_del[$qs_cnt] = ""; break; } $qs_cnt++; } sort($quest_del); $filepointer=fopen("./$updir", "w+"); /*もう一度書きこみ*/ flock($filepointer, LOCK_EX); $qs_cnt = 0; while($qs_cnt <= $qs_num){ fputs($filepointer, $quest_del[$qs_cnt]); $qs_cnt++; } flock($filepointer, LOCK_UN); fclose($filepointer); /*----------------------------------------------ここから書き込み部分*/ } else if($enter == "書込/表示" and $data != null){ $filepointer=fopen("./$updir", "a+"); while(!feof($filepointer)){ $fileline = fgets($filepointer); $text = split("&&",$fileline); if($number == $text[0]){ $select = "no"; break; } } If($select != "no"){ flock($filepointer, LOCK_EX); fputs($filepointer, $data); flock($filepointer, LOCK_UN); fclose($filepointer); } else { echo "その番号はすでにあります"; } } /*----------------------------------------------ここから表示部分*/ if(file_exists("./$updir")){ $filepointer=fopen("./$updir", "r"); while(!feof($filepointer)){ $fileline = fgets($filepointer); $quest[] = $fileline; } fclose($filepointer); } sort($quest,SORT_NUMERIC); $qs_num = count($quest); $qs_cnt = $qs_num-1; while($qs_cnt > 0){ $text = split("&&",$quest[$qs_cnt]); echo "<div class='nikki'>"; echo "<b>$text[0]</b> $text[1] $text[2]<br> <font color=blue>$text[3] </font></div><br>"; $qs_cnt--; } } ?></div></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 |