function listCategorias() { $c = getConnection(); $query = "SELECT * FROM categorias"; $categorias = array(); if ($resultado = $c->query($query)) { while ($fila = $resultado->fetch_assoc()) { $categorias[] = $fila; } $resultado->free(); sendResult(array("categorias" => $categorias), "Ok"); } else { sendError("No se encontraron resultados"); } }
function listProductosPorCategoria() { $c = getConnection(); $id = (int) $c->real_escape_string(request('categoria_id')); $query = "SELECT * FROM productos WHERE categoria_id = {$id}"; $productos = array(); if ($resultado = $c->query($query)) { while ($fila = $resultado->fetch_assoc()) { $productos[] = array_map('utf8_encode', $fila); } $resultado->free(); sendResult(array("productos" => $productos), "Ok"); } else { sendError("No se encontraron resultados"); } }
function queryDatabase($sql_query) { $result = runQuery($sql_query); sendResult(null, $result->fetch_all(1)); }
function getData($code, $connection) { if (!isTokenUser()) { $code = 4; } switch ($code) { //////////////////////CASE -1///////////////////////////////////// //Si entra aqui es porque ningun dato de S_POST coincide con una acción valida. Ya que el $dataCode por defecto es -1 case -1: $response = array("error" => 1030, "description" => "Error no se ejecuto ninguna acción, verifica los parametros de entrada."); break; //////////////////////CASE 0///////////////////////////////////// //Obtenemos las opciones a mostrar de un pregunta y las devolvemos en un array en formato json //////////////////////CASE 0///////////////////////////////////// //Obtenemos las opciones a mostrar de un pregunta y las devolvemos en un array en formato json case 0: if ($connection) { $id_pregunta = $_POST["id_pregunta"]; $dataOptions = $connection->query("SELECT * FROM " . TABLE_PREFIX . TABLE_OPCIONES . " where id_pregunta = " . $id_pregunta); $data; /* * obtenemos los datos de la base de datos en un array asociativo. */ while ($fila = $dataOptions->fetch_assoc()) { $data[] = $fila; } //dado que los valores de la base de datos vienen en codificacion utf-8, hay que transformar aquellas columnas con campos de texto. $dataResponse = codificationArray($data, "m_option"); //para la variable m_option de la tabla n_opciones se codifica en utf-8 $response = $dataResponse; } else { $response = array("error" => 1020, "description" => "Error conexión no establecida"); } break; //////////////////////CASE 1///////////////////////////////////// //Devolvemos la pregunta dado una paginacion ( con un LIMIT en la select filtramos la paginación) . //////////////////////CASE 1///////////////////////////////////// //Devolvemos la pregunta dado una paginacion ( con un LIMIT en la select filtramos la paginación) . case 1: if (!isTokenTest()) { createTokenTest(getTokenUser()); } else { if (isTokenTest() && isset($_POST["isFirstSelectedTest"]) && $_POST["isFirstSelectedTest"] == "true") { //$response = array("error" => 1200, "Error token desincronizado"); $response = array("error" => 1200, "desError" => "Test desincronizado", "page" => getPage(), "category" => getCategory(), "token_test" => getTokenTest(), "token_user" => getTokenUser()); break; } } //sincronizamos el avanze de paginas if (!isPage()) { createPage(intval($_POST["pagination"])); } else { if (isset($_SESSION["is_page_refresh"]) && $_SESSION["is_page_refresh"] && getPage() < intval($_POST["pagination"])) { createPage(intval(getPage()) + 1); } else { if (isset($_SESSION["is_page_refresh"]) && $_SESSION["is_page_refresh"]) { createPage(intval(getPage())); } else { createPage(intval(getPage()) + 1); } } } if (!isCategory()) { //si no esta sincroniada la categoria se sincroniza createCategory(intval($_POST["id"])); } if ($connection) { $pagination = getPage(); //numero de pagina. $id = $_POST["id"]; //id categoria: 1- ingles, 2- aleman... $result = $connection->query("SELECT * FROM " . TABLE_PREFIX . TABLE_PREGUNTAS . " where id_title = " . $id . " LIMIT " . $pagination . ",1"); $countLengthData = $connection->query("SELECT count(id) as count FROM " . TABLE_PREFIX . TABLE_PREGUNTAS . " where id_title = " . $id); $data = array(); while ($fila = $result->fetch_assoc()) { $data[] = $fila; } $dataResponse = codificationArray($data, "question"); //para la variable question de la tabla n_preguntas se codifica en utf-8 $dataLength = $countLengthData->fetch_assoc(); $dataResponse[1] = $dataLength; //numero de preguntas para la categoria actual if (!isCountQuestion()) { createCountQuestion($dataLength); } $dataResponse[2] = getTokenTest(); $dataResponse[3] = getTokenUser(); $response = $dataResponse; } else { $response = array("error" => 1020, "description" => "Error conexión no establecida"); } break; //////////////////////CASE 2///////////////////////////////////// // Actualizamos el progresso del cliente. //////////////////////CASE 2///////////////////////////////////// // Actualizamos el progresso del cliente. case 2: if (isPage()) { $canContinue = false; if (isset($_POST["pageUpdate"]) && $_POST["pageUpdate"]) { if (intval(getPage()) == intval($_POST["pageUpdate"])) { $canContinue = true; } else { $canContinue = false; } } else { $canContinue = true; } if ($canContinue === true) { if (isset($_SESSION["u_email"])) { $emailClient = $_SESSION["u_email"]; $id_question = $_POST["id_question"]; $id_option = $_POST["id_option"]; if ($connection) { if (!isset($_SESSION["id_cliente"])) { $resultQueryClientes = $connection->query("select id from " . TABLE_PREFIX . TABLE_CLIENTES . " WHERE email = '{$emailClient}'"); $responseQueryClientes = $resultQueryClientes->fetch_assoc(); $_SESSION["id_cliente"] = $responseQueryClientes["id"]; } $query = "SELECT count(o.id) as count\n\t\t\t\t\t\t\t\t\t\t FROM " . TABLE_PREFIX . TABLE_PREGUNTAS . " p inner join " . TABLE_PREFIX . TABLE_OPCIONES . " o\n\t\t\t\t\t\t\t\t\t\t on o.id_pregunta = p.id\n\t\t\t\t\t\t\t\t\t\t where {$id_option}. = (select id_opcion from " . TABLE_PREFIX . TABLE_RESPUESTA . " where id_pregunta = {$id_question})"; $resultCountCorrect = $connection->query($query); $countCorrectOption = $resultCountCorrect->fetch_assoc(); $codeTemp = getTokenTest(); $id_client = $_SESSION["id_cliente"]; $id_category = getCategory(); $date_update = date("Y-m-d H:i:s"); $insert = $connection->query("INSERT INTO " . TABLE_PREFIX . TABLE_HISTORY_TEST . " (id_client,id_option,id_question,id_title,code_validation,m_date) VALUES({$id_client},{$id_option},{$id_question},{$id_category},'{$codeTemp}','{$date_update}')"); //obtenemos el numero de preguntas de esta categoria. $countQuestionResult = $connection->query("SELECT count(id) as count FROM " . TABLE_PREFIX . TABLE_PREGUNTAS . " where id_title = " . $id_category); $countQuestionTemp = $countQuestionResult->fetch_assoc(); $countQuestion = $countQuestionTemp["count"]; if (intval($countCorrectOption["count"] > 0)) { //si es mayor que cero significa que es la que tenemos marcada como buena en la base de datos. if (!isset($_SESSION["correctCount"])) { //si el correctCount no está creado aún lo creamos con valor a 1 porque yá tenemos una respuesta correcta. $_SESSION["correctCount"] = 1; } else { //si ya estaba activo, solo incrementamos su valor en 1. $_SESSION["correctCount"] = intval($_SESSION["correctCount"]) + 1; } $dataUpdate = array("check" => $_SESSION['correctCount']); } else { $dataUpdate = array("check" => -1); //editamos el mensaje de respuesta. } } else { $dataUpdate = array("error" => 1020, "description" => "Error conexión no establecida"); } } else { $dataUpdate = array("error" => 1050, "description" => "Error de session, la sessión ha expirado."); } } else { $dataUpdate = array("error" => 1200, "desError" => "Test desincronizado", "page" => getPage(), "category" => getCategory(), "token_test" => getTokenTest(), "token_user" => getTokenUser()); } $response = $dataUpdate; break; } else { $response = array("error" => 1050, "description" => "Error de session, la sessión ha expirado."); break; } case 3: //aqui el cliente a finalizado el test y mostramos el detalle de los resultados. $id_client = $_SESSION["id_cliente"]; $date_update = date("Y-m-d H:i:s"); $id_category = getCategory(); $puntuacion = $_SESSION["correctCount"]; $token_test = getTokenTest(); $result = $connection->query("INSERT INTO " . TABLE_PREFIX . TABLE_HISTORY . " (id_client,id_title,code_validation,m_date,points) VALUES ({$id_client},{$id_category},'{$token_test}','{$date_update}',{$puntuacion})"); if ($result) { $response = array("check" => "register inserted.", "data" => array("num_question" => getCountQuestion(), "correctCount" => getCorrectCount())); } else { $response = array("error" => $connection->error); } $dataEndTest = isEndTest($id_category, $token_test, $connection); if ($dataEndTest) { $_SESSION["end_test"] = true; sendResult($_SESSION["u_email"], "Resultado del Test en GRUPOIOE", showResume($dataEndTest, $connection)); } break; case 4: //aqui no existe el token de usuario, la sesion posiblemente haya expirado. $response = array("error" => 1100, "description" => "Error token expirado"); break; case 5: //aqui devolvemos si hay un test activo o no. $response = array("isTestActive" => isTokenTest()); break; case 6: //aqui estamos devolviendo los datos desde la cache de la sesion. if (isTestFinished()) { $response = array("cache" => "get data from cache.", "data" => array("num_question" => getCountQuestion(), "correctCount" => getCorrectCount())); } else { $response = array("page" => getPage(), "category" => getCategory(), "token_test" => getTokenTest(), "token_user" => getTokenUser()); } break; //////////////////////DEFAULT///////////////////////////////////// //cualquier accion no contemplada entrara aqui. //////////////////////DEFAULT///////////////////////////////////// //cualquier accion no contemplada entrara aqui. default: $response = array("error" => 1040, "description" => "Error de PHP, error inesperado"); break; } $connection->close(); echo json_encode($response); }
*/ ini_set('default_charset', 'UTF-8'); if (preg_match('/\\b(gzip|deflate)\\b/i', $_SERVER['HTTP_ACCEPT_ENCODING'], $matches)) { // 圧縮可能であれば圧縮する ini_set("zlib.output_compression", "On"); } $outputData = array(); $searchWord = $_GET["q"]; if (strlen(trim($searchWord)) == 0) { return sendResult($outputData); } $searchWord = htmlspecialchars(trim($searchWord), ENT_QUOTES, 'UTF-8'); require "csis.php"; $dataSourceList = array("csisAddress" => new CSISAddressDataSource()); foreach ($dataSourceList as $key => $dataSource) { $result = $dataSource->search($searchWord); if ($result !== false) { $outputData = array_merge($outputData, $result); } } sendResult($outputData); /** * JSONデータを送信 */ function sendResult(&$result) { header('Content-type: application/json; charset=utf-8'); header('Access-Control-Allow-Origin: *'); $jsonData = json_encode($result); echo $jsonData; }
/** * 標高API */ function elevationAPI() { if (preg_match('/\\b(gzip|deflate)\\b/i', $_SERVER['HTTP_ACCEPT_ENCODING'], $matches)) { // 圧縮可能であれば圧縮する ini_set("zlib.output_compression", "On"); } $result = array("elevation" => "-----", "hsrc" => "-----"); $status = "OK"; if (isset($_GET['lon'])) { if (is_numeric($_GET['lon'])) { $lon = floatval($_GET['lon']); } else { $status = "ERROR"; } } if (isset($_GET['lat'])) { if (is_numeric($_GET['lat'])) { $lat = floatval($_GET['lat']); } else { $status = "ERROR"; } } $outtype = isset($_GET["outtype"]) ? $_GET["outtype"] : ""; if ($outtype != "JSON") { $callback = isset($_GET["callback"]) ? $_GET["callback"] : ""; if (!empty($callback)) { if (preg_match("/^([a-z]|[A-Z]|[_\$])([a-z]|[A-Z]|[_\$]|[0-9]){0,}\$/", $callback) === 0) { $status = "ERROR"; sendResult($result, ""); return; } } } if (isset($lon) && isset($lat)) { $lngRad = deg2rad($lon); $latRad = deg2rad($lat); $R = 128 / M_PI; $worldCoordX = $R * ($lngRad + M_PI); $worldCoordY = -1 * $R / 2 * log((1 + sin($latRad)) / (1 - sin($latRad))) + 128; $elevation = getElevation($worldCoordX, $worldCoordY, 15, 'dem5a', 1); $hsrc = "5m(レーザ)"; if ($elevation == NULL) { $elevation = getElevation($worldCoordX, $worldCoordY, 15, 'dem5b', 1); $hsrc = "5m(写真測量)"; } if ($elevation == NULL) { $elevation = getElevation($worldCoordX, $worldCoordY, 14, 'dem', 0); $hsrc = "10m"; } if ($elevation == NULL) { $elevation = "-----"; $hsrc = "-----"; $status = "NOTFOUND"; } $data = array("elevation" => $elevation, "hsrc" => $hsrc); $result = $data; } else { $status = "ERROR"; } sendResult($result, $callback); }
/** * カウンターAPI */ function counterAPI() { if (preg_match('/\\b(gzip|deflate)\\b/i', $_SERVER['HTTP_ACCEPT_ENCODING'], $matches)) { // 圧縮可能であれば圧縮する ini_set("zlib.output_compression", "On"); } if (defined("ACCEPTABLE_REFERER") && !isset($_SERVER["HTTP_REFERER"])) { // リファラーが設定されているのに、リクエストにリファラーが無い sendResult(); return; } $referer = $_SERVER["HTTP_REFERER"]; if (defined("ACCEPTABLE_REFERER") && strpos($referer, ACCEPTABLE_REFERER) === FALSE) { // 設定されているリファラーとリクエストのリファラーが一致しない sendResult(); return; } if (!defined("COUNTER_LOG")) { // ログの出力先が設定されていない sendResult(); return; } ini_set("date.timezone", "Asia/Tokyo"); $outputData = array(); $today = date("Ymd"); $yesterday = date("Ymd", strtotime("-1 days")); $totalNum = 1; $todayNum = 1; $yesterdayNum = 0; if (!file_exists(COUNTER_LOG)) { // 初期状態 $results = array("total" => $totalNum, $today => $todayNum, $yesterday => 0); if (file_put_contents(COUNTER_LOG, json_encode($results)) === FALSE) { // ログの出力が行えない sendResult(); return; } } else { $fp = fopen(COUNTER_LOG, "r+"); if ($fp && flock($fp, LOCK_EX)) { // ファイルからデータを読み込み $data = fread($fp, 1024); $results = json_decode($data, true); // データを更新して書き込み $totalNum = $results["total"] + 1; if (isset($results[$today])) { $todayNum = $results[$today] + 1; } if (isset($results[$yesterday])) { $yesterdayNum = $results[$yesterday]; } $newRecord = array("total" => $totalNum, $today => $todayNum, $yesterday => $yesterdayNum); rewind($fp); $fileSize = fwrite($fp, json_encode($newRecord)); ftruncate($fp, $fileSize); flock($fp, LOCK_UN); } else { // ログの出力が行えない sendResult(); } } $results = array("total" => $totalNum, "today" => $todayNum, "yesterday" => $yesterdayNum); $outputData["results"] =& $results; sendResult($outputData); }