mixsn.com"); // ホームページタイトル define ("CO_HP_TITLE","勝手に連想ゲーム"); // データファイルの名称 define ("CO_DB_FILE","../db_data/word.db"); // 回答ジャーナルテキスト保存フォルダー define ("CO_ANS_LOG_PATH","logdata/"); // 連想ゲーム用データファイル保存フォルダー define ("CO_ANS_FILE_PATH","data/"); // 連想ゲーム用データファイル最大作成件数 //define ("CO_ANS_FILE_COUNT",10); // データファイルは ans_1 の様に1~作成される、増やす時には予めアンサー用のファイルを作成しておく必要性がある define ("CO_ANS_FILE_COUNT",5); // データファイルは ans_1 の様に1~作成される、増やす時には予めアンサー用のファイルを作成しておく必要性がある // 連想ゲーム用データファイル最大作成件数 define ("CO_LOOP_BREAK_COUNT",5); // 同じ回答が繰り返された時にことばを分岐するためのブレイク回数 // 笑っていいとも=>タモリ笑っていいとも=>タモリの 様にループしたら、笑っていいとも以外の回答が出るまで、データの更新を行なわない // ファイル読込み時の最大バッファ define ("CO_FILE_READ_MAX",2048); mb_internal_encoding ("UTF-8"); // 内部エンコーディングをUTF-8に変更 mb_regex_encoding ("UTF-8"); // 内部エンコーディングをUTF-8に変更 /* * POST・GETされたデータを入手する */ $GB_POST = chg_from($_POST); $GB_GET = chg_from($_GET); // POST・GET共に同じキーが有った時には // POSTを優先させる foreach ( $GB_POST as $key => $value ){ $GB_GET[$key] = $value; } $flg = false; // セッションIDが有る if (isset($GB_GET["sid"])){ // セッションIDをセットする if (trim($GB_GET["sid"])<>""){ session_id ($GB_GET["sid"]); } } // google 対策 if(eregi("Mediapartners-Google", $_SERVER["HTTP_USER_AGENT"])){ session_id ("google"); } //セッションの開始 session_start(); // google 対策 if(eregi("Mediapartners-Google", $_SERVER["HTTP_USER_AGENT"])){ $_SESSION['sid'] = "google"; } // セッションIDのチェック if ( isset($_SESSION['sid']) ){ if (isset($GB_GET["act"])){ if ($GB_GET["act"]){ if ( $GB_GET["act"] == "csid" ){ // セッションIDが保存されているので、普通にトップページにジャンプする location_disp(CO_HTML_URL,CO_HP_URL); } } } } else { // セッションIDがセットされていない。 // セッションIDをセットして、再度入り直しをさせる if (isset($GB_GET["act"])){ if ( $GB_GET["act"] == "csid" ){ // クッキーチェックの為に入り直しをした // セッションIDが保存されていないので、URLにセッションIDを付加する $_SESSION['sid'] = session_id(); location_disp(CO_HTML_URL."?sid=".session_id(),CO_HP_URL); } } $_SESSION['sid'] = session_id(); location_disp(CO_HTML_URL."?act=csid",CO_HP_URL); } // 回答された文字を強制的に、全角・大文字に変換する // 空白は取り除く if ( isset($GB_GET["aword"])){ if( trim($GB_GET["aword"]) != "" ){ $GB_GET["aword"] = check_word($GB_GET["aword"]); } else { $GB_GET["aword"] = ""; } } // セッションに必要なデータを保持しておく // 年齢の整形(セッションに保持する) if( isset($GB_GET["age"]) ){ if ( 0 < $GB_GET["age"] && $GB_GET["age"] <= 99 ){ $_SESSION['age'] = $GB_GET["age"]; } else { $_SESSION['age'] = 0; } } else { if (isset($_SESSION['age'])){ } else { $_SESSION['age'] = 0; } } // 性別の整形(セッションに保持する) if( isset($GB_GET["age"]) ){ switch ( $GB_GET["sex"] ){ case 1: $_SESSION['sex'] = 1; break; case 2: $_SESSION['sex'] = 2; break; default: $_SESSION['sex'] = 0; break; } } else { if (isset($_SESSION['sex'])){ } else { $_SESSION['sex'] = 0; } } // 今回のページをセクションに保存しておく if( isset($GB_GET["fno"]) ){ $_SESSION['fno'] = $GB_GET["fno"]; } // コンテンツ文字列を一時的に保持しておくサイト $GB_HTTP_DATA = ""; // メイン処理 main($GB_GET); function main($form){ // ヘッダーの表示 //make_db(); disp_html_head(); $initdispflg = true; if (isset($form["act"])){ if (isset($form["aword"])){ if ($form["aword"] != "" ){ if ( $form["aword"] == $form["mword_0"]){ // 同じ時には、結果表示を行なわない } else { // 連想ゲームのけっかを表示する $initdispflg = false; html_top($form); // 勝手に連想ゲームトップ html_ans($form); // 勝手に連想ゲーム回答入力欄 html_list($form); // 勝手に連想ゲーム回答表示部 html_top5($form); // 連想上位5位と、次の連想上位5を表示する // リクエスト先のURL if( isset($form["sid"])){ $reqlink = CO_RE_URL."?sid=".$form["sid"]; } else { $reqlink = CO_RE_URL; } vecho("もう一回行なう
"); // つぶやき掲示板への誘導 vecho("つぶやき掲示板良ければ一言つぶやいて"); vecho("\n
"); // フッタの表示 html_ad(); disp_html_fut($form); vechoflash(); data_save($form); // 連想ゲームデータを保存する } } } } // 回答を表示しなった時には、初期画面を表示する if ( $initdispflg == true ){ // 連想ゲームの初期画面を表示する html_top($form); // 勝手に連想ゲームトップ html_comment($form); // 勝手に連想ゲーム回答入力欄 html_input($form); // 勝手に連想ゲーム回答入力欄 html_finfo($form); // 案内の表示 // フッタの表示 html_ad(); disp_html_fut($form); vechoflash(); } } /**************************************** *勝手に連想ゲームトップ * ****************************************/ function html_top($form){ vecho("
"); vecho("

勝手に連想ゲーム(かれこ)

"); vecho("
"); } /**************************************** *コメント表示 * ****************************************/ function html_comment($form){ vecho("
"); vecho("ことばの連想ゲームです、良ければ遊んでいって下さい
\n表示されていることばから連想されることばを入力するだけのゲームです。"); vecho("
"); } /**************************************** *入力欄表示 * ****************************************/ function html_input($form){ // 使用する連想ゲームのテキストファイル番号を選択する if ( isset($_SESSION['fno'])){ $fno = $_SESSION['fno']; $fno += 1; if ( $fno > CO_ANS_FILE_COUNT ){ $fno = 1; } } else { $fno = rand (1, CO_ANS_FILE_COUNT ); } $_SESSION['fno'] = $fno; $textarray = read_krw_file($fno); // リクエスト先のURL if( isset($form["sid"])){ $reqlink = CO_HTML_URL."?sid=".$form["sid"]; } else { $reqlink = CO_HTML_URL; } vecho("
"); vecho("
"); vecho (""); vecho (""); // 読み込んだデータをHTMLとして送信しておく // 元のデータが書き換わっても、結果表示が出来るようにする為 foreach ( $textarray as $key => $value ){ // ことば $keystr = "mword_".$key; $mvalue = $value["word"]; vecho (""); // 年齢 $keystr = "age_".$key; $mvalue = $value["age"]; vecho (""); // 性別 $keystr = "sex_".$key; $mvalue = $value["sex"]; vecho (""); // 登録日 $keystr = "dtime_".$key; $mvalue = $value["dtime"]; vecho (""); } $tarray = $textarray[0]; $dvalue = $tarray["word"]; vecho(""); vecho("$dvalue"); vecho(""); vecho("といえば"); vecho(""); // vecho(""); vecho("(".$_SESSION['fno'].")"); vecho("
\n"); // 年齢があれば表示する $agevalue = $_SESSION["age"]; if ( $agevalue == 0 ){ $agevalue = ""; } vecho("年齢"); $sexvalue = $_SESSION["sex"]; $sel0 = ""; $sel1 = ""; $sel2 = ""; switch ( $sexvalue ){ case 1: $sel1 = " selected=\"selected\""; break; case 2: $sel2 = " selected=\"selected\""; break; default: $sel0 = " selected=\"selected\""; break; } $str = <<< EOT  性別 EOT; vecho($str); vecho(""); vecho("絵文字は入力できません
\n"); vecho ("(年齢・性別は未記入でもOKです)
"); vecho("
"); vecho("
"); } /**************************************** * 広告の表示 * ****************************************/ function html_ad(){ vecho("
\n"); $str = <<< EOT EOT; vecho($str); vecho("
\n"); } /**************************************** *データ表示 * ****************************************/ function html_finfo($form){ vecho("
"); $str = <<< EOT 回答に何も記入せずに実行すると違うことばを表示します。
集計結果に関しての集計データの所有権は本サイト運営者に属します
ことばの関連付けがどのようになるかを調査するために開設したサイトになります
連想ゲームの集計結果はかれこアナライザー(PC用)で確認できます。
EOT; vecho($str); vecho("
"); } /**************************************** *履歴表示 * ****************************************/ function html_list($form){ // 表示に使用するデータを構築する $darray = array(); foreach ( $form as $key => $value ){ // ことばを探す if ( mb_strpos($key, "mword") !== false ){ $dwarray = explode("_", $key); if ( count($dwarray) > 1 ){ $no = $dwarray[1]; if ( isset($darray[$no]) ){ $wrkarray = $darray[$no]; } else { $wrkarray = array(); } $wrkarray["mword"] = $value; $darray[$no] = $wrkarray; } continue; } // 年齢を探す if ( mb_strpos($key, "age") !== false ){ $dwarray = explode("_", $key); if ( count($dwarray) > 1 ){ $no = $dwarray[1]; if ( isset($darray[$no]) ){ $wrkarray = $darray[$no]; } else { $wrkarray = array(); } $wrkarray["age"] = $value; $darray[$no] = $wrkarray; } continue; } // 性別を探す if ( mb_strpos($key, "sex") !== false ){ $dwarray = explode("_", $key); if ( count($dwarray) > 1 ){ $no = $dwarray[1]; if ( isset($darray[$no]) ){ $wrkarray = $darray[$no]; } else { $wrkarray = array(); } $wrkarray["sex"] = $value; $darray[$no] = $wrkarray; } continue; } // 日時を探す if ( mb_strpos($key, "dtime") !== false ){ $dwarray = explode("_", $key); if ( count($dwarray) > 1 ){ $no = $dwarray[1]; if ( isset($darray[$no]) ){ $wrkarray = $darray[$no]; } else { $wrkarray = array(); } $wrkarray["dtime"] = $value; $darray[$no] = $wrkarray; } continue; } } vecho("
"); // 今投稿された内容でデータを作成する $word = $form["aword"]; $sex = $_SESSION['sex']; $age = $_SESSION['age']; $dtime = strftime("%Y%m%d%H%M%S"); foreach($darray as $key => $value){ // 年齢の整形 if ( $age > 0 && $age < 100 ){ $agestr =$age."歳"; } else { $agestr = "秘密"; } // 性別の整形 $sexstr = "秘密"; switch ( $sex ){ case 1: $sexstr ="男性"; break; case 2: $sexstr ="女性"; break; default: break; } // 投稿日の整形 // 年を取り出す $dtimestr= substr($dtime,0,4)."/"; // 月を取り出す $dtimestr.= substr($dtime,4,2)."/"; // 日を取り出す $dtimestr.= substr($dtime,6,2)." "; // 時を取り出す $dtimestr.= substr($dtime,8,2).":"; // 分を取り出す $dtimestr.= substr($dtime,10,2); $motoword = $value["mword"]; if ( $motoword != "" ){ vecho ("
"); vecho($dtimestr." "); $str = "".$motoword."といえば".$word.""; vecho($str); vecho("(".$agestr); vecho(":".$sexstr); vecho(")
\n"); } $word = $motoword; $age = $value["age"]; $sex = $value["sex"]; $dtime = $value["dtime"]; } vecho ("
"); vecho("
"); } /**************************************** *トップ表示 * ****************************************/ function html_top5($form){ // 問い合わせのことばを入手 $mword = $form["mword_0"]; // 回答のことばを入手 // 今投稿された内容でデータを作成する $word = $form["aword"]; // 回答トップ5を入手する // データが入手できなかった時の対策を講じる $resarray = array(); $resarray = @db_gettop5($mword); // 次の回答トップ5を入手する $nextarray = array(); $nextarray = @db_gettop5($word); // 回答トップ5 vecho("
"); $str = "".$mword."より連想されたトップ5
\n"; vecho($str); if (count($resarray) > 0 ){ foreach($resarray as $key => $value ){ $rate = $value["rate"] * 100; $ratestr = sprintf("%3.1f%",$rate); $str = "".$ratestr." ".$value["word"]."
"; vecho($str); } } else { vecho("データが読めなかったか、データが無かったために表示できません"); } vecho("
"); vecho ("
"); // 次回答トップ5 vecho("
"); $str = "".$word."より連想されたトップ5
\n"; vecho($str); if (count($nextarray) > 0 ){ foreach($nextarray as $key => $value ){ $rate = $value["rate"] * 100; $ratestr = sprintf("%3.1f%",$rate); $str = "".$ratestr." ".$value["word"]."
"; vecho($str); } } else { vecho("データが読めなかったか、データが無かったために表示できません"); } vecho("
"); vecho ("
"); } /**************************************** *勝手に連想ゲームアンサー表示 * ****************************************/ function html_ans($form){ vecho("
"); vecho("直近の連想ゲームの結果は下記です"); vecho("
"); } /**************************************** *外部から送信された値を加工する * *文字コード体系をUTF-8に変換する * ****************************************/ function chg_from($array) { foreach($array as $key => $value){ if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // 文字列をUTF-8にエンコードして保存する。 $enc = mb_detect_encoding($value, "UTF-8,SJIS,auto"); if (isset($enc) and $enc != "UTF-8") { // UTF-8と違う。 if ( $enc <> "" ){ $value = mb_convert_encoding($value, "UTF-8", $enc); // UTF-8に変更する。 } } $array[$key] = $value; } return $array; } /**************************************** *HTMLのフッター部を表示する * ****************************************/ function disp_html_fut($form){ if( isset($form["sid"])){ $toplink = "".CO_HP_TITLE.""; } else { $toplink = "".CO_HP_TITLE.""; } $ownerlink = CO_OWNER_LINK; $str = <<< EOT
勝手にシリーズ
2008 (C)$toplink By $ownerlink
EOT; $car = ka_carrer_get(); if ( $car == "pc" ){ $str .= <<< EOT EOT; } vecho($str); } /**************************************** *連想ゲームのテキストファイルを読込む * ****************************************/ function read_krw_file($fno){ // ロックファイル名の作成 $lfilename = CO_ANS_FILE_PATH."lock_".$fno; // データファイル名の作成 $filename = CO_ANS_FILE_PATH."krw_".$fno; // ファイルロックを実行する $lfp = fopen($lfilename, file_exists($lfilename) ? 'r+' : 'w+'); if ( $lfp === false ){ error_disp("lopen error [".$fno."]"); } if ( flock($lfp, LOCK_EX) === false ){ error_disp("lock error [".$fno."]"); } // データを読み出す $fp = fopen($filename, file_exists($filename) ? 'r+' : 'w+'); if ( $fp === false ){ error_disp("open error [".$fno."]"); } // データフォーマット ことば、年齢、性別、登録年月日をカンマで区切っている $result=array(); while(feof($fp) <> true){ $buff = fgets($fp, CO_FILE_READ_MAX); $buff = preg_replace("/\r\n|\r|\n/", "", $buff); if (trim( $buff) <> "" ){ $darray = explode(",", $buff); // データを返せるように整形する if( count($darray) > 0 ){ $rarray = array(); for ( $i = 0 ; $i < 4 ; $i ++ ){ if (isset($darray[$i])){ $value = $darray[$i]; } else { $value = ""; } switch ( $i ){ case 0: // ことば $rarray["word"] = $value; break; case 1: // 年齢 if ( $value <> "" ){ $rarray["age"] = $value; } else { $rarray["age"] = 0; // 未登録にする } break; case 2: // 性別 if ( $value <> "" ){ $rarray["sex"] = $value; } else { $rarray["sex"] = 0; // 未登録にする } break; case 3: // 登録日 $rarray["dtime"] = $value; // 日付を表示しないようにする break; } } $result[count($result)] = $rarray; } } } fclose($fp); // ファイルロックを解除する flock($lfp, LOCK_UN); fclose($lfp); if ( count($result) == 0 ){ $rarray = array(); $rarray["word"] = "連想ゲームの最初のことばを入れて下さい"; $rarray["age"] = 0; $rarray["sex"] = 0; $rarray["dtime"] = ""; $result[count($result)] = $rarray; } return $result; } /**************************************** *連想ゲームのテキストファイルを更新する* ****************************************/ function upd_krw_file($form){ if ( isset($form["fno"]) ){ $fno = $form["fno"]; } else { // 元ファイル番号が無いので終了する return false; } if ( $fno < 1 or $fno > CO_ANS_FILE_COUNT ){ // 元ファイル番号がおかしいので処理を終了する return false; } // 回答のされたことば if ( isset($form["aword"]) ){ $aword = $form["aword"]; } else { // 回答されたことばがないので終了する return false; } // 特定の回答は保存しない if ( $aword =="03-5443-2601" || $aword =="0354432601" || $aword =="03-54432601" || $aword =="035443-2601 "){ return false; } // 年齢 if ( isset($form["age"]) ){ $age = $form["age"]; if($age==0){ $age=0; } } else { $age = 0; } // 性別 if ( isset($form["sex"]) ){ $sex = $form["sex"]; if($sex==0){ $sex=0; } } else { $sex = 0; } // ロックファイル名の作成 $lfilename = CO_ANS_FILE_PATH."lock_".$fno; // データファイル名の作成 $filename = CO_ANS_FILE_PATH."krw_".$fno; // ファイルロックを実行する $lfp = fopen($lfilename, file_exists($lfilename) ? 'r+' : 'w+'); if ( $lfp === false ){ error_disp("lopen error [".$fno."]"); } if ( flock($lfp, LOCK_EX) === false ){ error_disp("lock error [".$fno."]"); } // データを読み出す $fp = fopen($filename, file_exists($filename) ? 'r+' : 'w+'); if ( $fp === false ){ error_disp("open error [".$fno."]"); } // データフォーマット ことば、年齢、性別、登録年月日をカンマで区切っている $result=array(); while(feof($fp) <> true){ $buff = fgets($fp, CO_FILE_READ_MAX); $buff = preg_replace("/\r\n|\r|\n/", "", $buff); if (trim( $buff) <> "" ){ $darray = explode(",", $buff); // データを返せるように整形する if( count($darray) > 0 ){ $rarray = array(); for ( $i = 0 ; $i < 4 ; $i ++ ){ if (isset($darray[$i])){ $value = $darray[$i]; } else { $value = ""; } switch ( $i ){ case 0: // ことば $rarray["word"] = $value; break; case 1: // 年齢 if ( $value <> "" ){ $rarray["age"] = $value; } else { $rarray["age"] = 0; // 未登録にする } break; case 2: // 性別 if ( $value <> "" ){ $rarray["sex"] = $value; } else { $rarray["sex"] = 0; // 未登録にする } break; case 3: // 登録日 $rarray["dtime"] = $value; // 日付を表示しないようにする break; } } $result[count($result)] = $rarray; } } } // ファイルに書込 // ファイルポインターを先頭に持っていく rewind($fp); set_file_buffer($fp, 0); // 書込みを実施するか否かの判断を行なう(先行で登録されていたら、登録を行なわない) // ファイルにデータが無い時には、無条件で書き出す if ( count($result) <= 0 ){ $fwstr =$aword.",".$age.",".$sex.",".strftime("%Y%m%d%H%M%S"); //ファイルを書き出す fputs($fp, $fwstr . "\n"); // ファイルロックを解除する flock($lfp, LOCK_UN); fclose($lfp); return false; } else { // 問い合わせのことばと、ファイル上のことばが一緒かどうかを確認する if ($form["mword_0"] == $result[0]["word"]){ $fwstr =$aword.",".$age.",".$sex.",".strftime("%Y%m%d%H%M%S"); //ファイルを書き出す fputs($fp, $fwstr . "\n"); } else { // ファイルクローズ fclose($fp); // ファイルロックを解除する flock($lfp, LOCK_UN); fclose($lfp); return true; } } $count = 0; foreach ($result as $key => $value){ $fwstr =$value["word"].",".$value["age"].",".$value["sex"].",".$value["dtime"]; //ファイルを書き出す fputs($fp, $fwstr . "\n"); $count ++; if ($count >= 19 ){ break; } } //ファイルサイズを変更する ftruncate($fp, ftell($fp)); // ファイルクローズ fclose($fp); // ファイルロックを解除する flock($lfp, LOCK_UN); fclose($lfp); if ( count($result) == 0 ){ $rarray = array(); $rarray["word"] = "連想ゲームの最初のことばを入れて下さい"; $rarray["age"] = 0; $rarray["sex"] = 0; $rarray["dtime"] = ""; $result[count($result)] = $rarray; } return true; } /**************************************** *回答をログファイルに保存する * * 同時にSQL文を返す(ログファイルはSQL文で作成される * ****************************************/ function add_krw_log($inssql){ // ログファイル名 $logfile = CO_ANS_LOG_PATH.strftime("%Y%m%d").".log"; // データをジャーナルDBに書き出す // データを書出 $fp = fopen($logfile, 'a'); if ( $fp === false ){ error_disp("open error [log]"); } fputs($fp,$inssql."\n"); fclose($fp); } /**************************************** *回答をログファイルに保存する * * 同時にSQL文を返す(ログファイルはSQL文で作成される * ****************************************/ function make_sql_log($form){ // 回答のされたことば if ( isset($form["aword"]) ){ $aword = $form["aword"]; } else { // 回答されたことばがないので終了する // データがおかしいので処理を中止する return ""; } // 年齢 if ( isset($form["age"]) ){ $age = $form["age"]; if($age==0){ $age=0; } } else { // データがおかしいので処理を中止する return ""; } // 性別 if ( isset($form["sex"]) ){ $sex = $form["sex"]; if($sex==0){ $sex=0; } } else { // データがおかしいので処理を中止する return ""; } if ( isset($form["mword_0"])) { $mword = $form["mword_0"]; } else { // データがおかしいので処理を中止する return ""; } $date = strftime("%Y%m%d"); $dtime = strftime("%Y%m%d%H%M%S"); $ssid = session_id(); $sql = "INSERT INTO ANSJOUR (WORD,AWORD,AGE,SEX,SSID,REGDATE,REGDTIME) VALUES ("; $sql .= "'".sqlite_escape_string($mword)."',"; $sql .= "'".sqlite_escape_string($aword)."',"; $sql .= $age.","; $sql .= $sex.","; $sql .= "'".$ssid."',"; $sql .= $date.","; $sql .= $dtime.");"; return $sql; } /**************************************** *指定したことばの回答上位5位を入手する* ****************************************/ function db_gettop5($word){ // 検索用SQL $sql="SELECT * FROM ANSWORD WHERE OWORD='".sqlite_escape_string($word)."'"." ORDER BY COUNT DESC limit 0,5"; // 総回答数集計用SQL $asql="SELECT SUM(COUNT) AS ALLCOUNT FROM ANSWORD WHERE OWORD='".sqlite_escape_string($word)."'"; $result = array(); // テーブルをオープンする $con = sqlite_open(CO_DB_FILE); // 総回答数を求める $table = sqlite_query($asql ,$con ); if ( sqlite_num_rows($table) <= 0){ sqlite_close($con); return $result; } $array = sqlite_fetch_array($table,SQLITE_ASSOC); $allcount = $array["ALLCOUNT"]; $table = sqlite_query($sql ,$con ); while($array = sqlite_fetch_array($table,SQLITE_ASSOC)){ $warray = array(); // 回答のことば $warray["word"] = $array["AWORD"]; // 比率 if ( $allcount > 0 ){ $warray["rate"] = $array["COUNT"] / $allcount; } else { $warray["rate"] = 0; } $result[count($result)] = $warray; } sqlite_close($con); return $result; } /**************************************** *連想ゲームデータを保存する * ****************************************/ function upd_db($inssql, $form){ // 回答のされたことば if ( isset($form["aword"]) ){ $aword = $form["aword"]; } else { // 回答されたことばがないので終了する // データがおかしいので処理を中止する return ""; } // 年齢 if ( isset($form["age"]) ){ $age = $form["age"]; if($age==0){ $age=0; } } else { // データがおかしいので処理を中止する return ""; } // 性別 if ( isset($form["sex"]) ){ $sex = $form["sex"]; if($sex==0){ $sex=0; } } else { // データがおかしいので処理を中止する return ""; } if ( isset($form["mword_0"])) { $mword = $form["mword_0"]; } else { // データがおかしいので処理を中止する return ""; } // 処理に使用するSQL文を一式作成する。 // ことば回答用のテーブル // 検索用SQL $kssql = "SELECT * FROM ANSWORD WHERE OWORD ='".sqlite_escape_string($mword)."' AND AWORD='".sqlite_escape_string($aword)."'"; // 追加用SQL $kisql = "INSERT INTO ANSWORD (OWORD,AWORD,COUNT) VALUES ('".sqlite_escape_string($mword)."','".sqlite_escape_string($aword)."',1);"; // 更新用SQL $kusqls = "UPDATE ANSWORD SET COUNT="; $kusqle = " WHERE OWORD='".sqlite_escape_string($mword)."' AND AWORD='".sqlite_escape_string($aword)."'"; $dtimes = strftime("%Y%m%d%H%M%S"); // ことばテーブル // 検索用SQL $wssql="SELECT * FROM WORD WHERE WORD='".sqlite_escape_string($aword)."'"; // 追加用SQL $wisql="INSERT INTO WORD (WORD,AWCOUNT, ACOUNT,REGDATE,LSTDATE) VALUES ('".sqlite_escape_string($aword)."',0,0,".$dtimes.",".$dtimes.")"; // 更新用SQL $wusqls = "UPDATE WORD SET AWCOUNT="; $wusqle = " WHERE WORD='".sqlite_escape_string($aword)."'"; // ことばの種類の検索 $qwcountsql = "SELECT COUNT(*) AS AWCOUNT, SUM(COUNT) AS ACOUNT FROM ANSWORD WHERE OWORD='".sqlite_escape_string($aword)."'"; // 更新用SQL $con = sqlite_open(CO_DB_FILE); $table = sqlite_query("BEGIN" ,$con ); // ジャーナルにデータを登録する $errmes = ""; if ( @sqlite_exec($con , $inssql ) === false ){ sqlite_exec("COMMIT",$con); sqlite_close($con); return false; } // ことばのつながりテーブルにデータの有無を確認する $table = sqlite_query($kssql ,$con ); if ( sqlite_num_rows($table) > 0){ // データが有った $darray = sqlite_fetch_array($table,SQLITE_ASSOC); $count = $darray["COUNT"] + 1; $kusqls .= $count.$kusqle; $table = sqlite_query($kusqls ,$con ); } else { // データが無かった=>データ作成 $table = sqlite_query($kisql ,$con ); } // ことばテーブルの更新 $table = sqlite_query($wssql ,$con ); if ( sqlite_num_rows($table) > 0){ // データが有った //echo "
-------------------------
\n"; //echo "qwcountsql:$qwcountsql
\n"; $tables = sqlite_query($qwcountsql ,$con ); $darray = sqlite_fetch_array($tables,SQLITE_ASSOC); //echo "
-------------------------
\n"; //print_r($darray); $wusqls .= $darray["AWCOUNT"].", ACOUNT=".$darray["ACOUNT"].$wusqle; //echo "wusqls:$wusqls
\n"; $table = sqlite_query($wusqls ,$con ); } else { // データが無かった=>データ作成 $table = sqlite_query($wisql ,$con ); } $table = sqlite_query("COMMIT" ,$con ); sqlite_close($con); return true; } /**************************************** *連想ゲームデータを保存する * ****************************************/ function data_save($form){ // 答えのことば $aword = $form["aword"]; // 年齢 $age = $form["age"]; // 性別 $sex = $form["sex"]; // 連想ゲームファイル $fno = $form["fno"]; // 質問のことば $qword = $form["aword"]; $sql = make_sql_log($form); if ( $sql == "" ){ return $sql; } // 連想ゲームテキストファイルにデータを保存する if ( upd_krw_file($form) == true ){ // DBの更新を行なう。 if ( upd_db($sql, $form) == true ){ // ログファイルにSQL文を保存する add_krw_log($sql); } } } /**************************************** *ことばを一定の条件で整形する * *小文字=>大文字 * *半角=>全角 * ****************************************/ function check_word($word){ // 小文字を大文字に変換する $word = mb_strtoupper($word); // 半角を全て全角に変換する $word = mb_convert_kana($word,"KVA"); // 半角英記号を全角英記号に変換する $word = han_meta_to_jen_meta($word); // 改行を消去する $word = preg_replace("/\r\n|\r|\n/","",$word); return $word; } /**************************************** *データベースの有無を元にして構築する * ****************************************/ function make_db(){ if (file_exists(CO_DB_FILE) == false ){ $con = sqlite_open(CO_DB_FILE); $table = sqlite_query("BEGIN" ,$con ); // ことばのつながりテーブル $sql = ""; $sql .= "CREATE TABLE ANSWORD ( "; $sql .= "UID INTEGER NOT NULL PRIMARY KEY, "; // ユニークID $sql .= "OWORD TEXT, "; // 元のことば $sql .= "AWORD TEXT, "; // 回答のことば $sql .= "COUNT INTEGER "; // 回答数 $sql .= "); "; $table = sqlite_query($sql ,$con ); // インデックスを作成する。 // 元のことば $sql = "CREATE INDEX ANSWORD_1 ON ANSWORD (OWORD);"; $table = sqlite_query($sql ,$con ); // 回答のことば $sql = "CREATE INDEX ANSWORD_2 ON ANSWORD (AWORD);"; $table = sqlite_query($sql ,$con ); // 回答数 $sql = "CREATE INDEX ANSWORD_3 ON ANSWORD (COUNT);"; $table = sqlite_query($sql ,$con ); // 元と回答のことば $sql = "CREATE UNIQUE INDEX ANSWORD_4 ON ANSWORD (OWORD,AWORD);"; $table = sqlite_query($sql ,$con ); // ことばテーブル $sql = ""; $sql .= "CREATE TABLE WORD ( "; $sql .= "UID INTEGER NOT NULL PRIMARY KEY, "; // ユニークID $sql .= "WORD TEXT, "; // ことば $sql .= "AWCOUNT INTEGER,"; // 回答されたことばの数 $sql .= "ACOUNT INTEGER,"; // 総回答数(出口) $sql .= "REGDATE INTEGER,"; // 新規登録日 $sql .= "LSTDATE INTEGER"; // 最終出現日(最終回答日) $sql .= "); "; $table = sqlite_query($sql ,$con ); // ことば $sql = "CREATE INDEX WORD_1 ON WORD (WORD);"; $table = sqlite_query($sql ,$con ); // 回答されたことばの数 $sql = "CREATE INDEX WORD_3 ON WORD (AWCOUNT);"; $table = sqlite_query($sql ,$con ); // 総回答数(出口) $sql = "CREATE INDEX WORD_4 ON WORD (ACOUNT);"; $table = sqlite_query($sql ,$con ); // 回答ジャーナル $sql = ""; $sql .= "CREATE TABLE ANSJOUR ( "; $sql .= "UID INTEGER NOT NULL PRIMARY KEY, "; // ユニークID $sql .= "WORD TEXT, "; // 元のことば $sql .= "AWORD TEXT, "; // 回答のことば $sql .= "AGE INTEGER, "; // 年齢 0:無回答 0<>年齢 $sql .= "SEX INTEGER,"; // 性別 0:無回答 1:男性 2:女性 $sql .= "SSID TEXT,"; // セッションID $sql .= "REGDATE INTEGER,"; // 新規登録日 $sql .= "REGDTIME INTEGER"; // 新規登録日時 $sql .= "); "; $table = sqlite_query($sql ,$con ); // ログ用のインデックス $sql = "CREATE UNIQUE INDEX ANSJOUR_1 ON ANSJOUR (WORD,AWORD,SSID);"; // $sql = "CREATE UNIQUE INDEX ANSWORD_4 ON ANSWORD (OWORD,AWORD);"; $table = sqlite_query($sql ,$con ); $table = sqlite_query("COMMIT" ,$con ); sqlite_close($con); } } // User-Agentを元に、携帯キャリアとPCの判断を行う。 function ka_carrer_get(){ if(eregi("DoCoMo", $_SERVER["HTTP_USER_AGENT"])){ return "i"; } else if( eregi("J-PHONE", $_SERVER["HTTP_USER_AGENT"]) || eregi("Vodafone", $_SERVER["HTTP_USER_AGENT"]) || eregi("SoftBank", $_SERVER["HTTP_USER_AGENT"])){ return "sb"; } else if(eregi("KDDI", $_SERVER["HTTP_USER_AGENT"])){ return "au"; } return "pc"; } /* *エラーの表示を行う。(処理終了) */ function error_disp($errormess="",$message="システムにて異常が発生いたしました\nサービスがご提供出来ません\nご了承下さい。",$returl = ""){ if ( $errormess <> "" ){ $message .= "\nエラーコード[".$errormess."]\n状況やエラーコードをご連絡頂けると助かります"; } else { } $message = preg_replace("/\r\n|\r|\n/","
",htmlspecialchars($message)); if( isset($form["sid"])){ $homeurldisp = "".CO_HP_TITLE.""; } else { $homeurldisp = "".CO_HP_TITLE.""; } $homeurl = CO_HTML_URL; $homeurldisp = htmlspecialchars(CO_HTML_URL); echo <<< EOT
$message

ホームページへ移動:$homeurldisp EOT; exit; } /**************************************** * 半角英記号を全角英記号に変換する * ****************************************/ function han_meta_to_jen_meta($str){ $replace_of = array( "!","\"","#","$","%","&","'", "(",")","*","+",",","-",".", "/",":",";","<","=",">","?", "[","\\","]","^","_","{","|", "}","~"); $replace_by = array( "!","”","#","$","%","&","’", "(",")","*","+",",","=",".", "/",":",";","<","=",">","?", "[","¥","]","^","_","{","|", "}","~"); $_result = str_replace($replace_of, $replace_by, $str); return $_result; } /**************************************** *HTMLのフッター部を表示する * * ヘッダー情報を元にジャンプを実施する * * この関数は戻らずに終了します。 * * URLに日本語等の文字を使用するな・・・てなことで * * 関数は利用してください。 * ****************************************/ function location_disp($move_url,$home_url=null){ $homeulrdisp = htmlspecialchars($home_url); $moveulrdisp = htmlspecialchars($move_url); header("Location: ".$move_url); echo <<< EOT URL移動クッションページ このページはURLを移動するためのクッションページです。
このページが表示されるブラウザーをご利用の場合サービスが正常にご提供できない場合があります。
あしからずご了承下さい。
This page is a cushion page to move URL.
There is the case that service cannot offer the browser how this page is displayed to in the case of the use normally.
Please understand it I beg you to understand my position


移動先URL(move URL): $moveulrdisp
EOT; if ( $home_url <> null ){ echo <<< EOT ホームページへ移動:$homeulrdisp EOT; } echo <<< EOT EOT; exit; } /**************************************** *HTMLのヘッダー部を表示する * ****************************************/ function disp_html_head($title=CO_HP_TITLE){ $str = <<< EOT $title EOT; vecho($str); } // プログラム内では、echoの使用を禁じて、vechoを使用させる // 最後に送信データを送信出来るように将来的に対応を考えての処置です。 function vecho($value){ global $GB_HTTP_DATA; $GB_HTTP_DATA .=$value; } // メモリーにためていたコンテンツを表示する。 function vechoflash(){ global $GB_HTTP_DATA; echo $GB_HTTP_DATA; $GB_HTTP_DATA = ""; } ?>