connect_error) { throw new Exception($conn->connect_error); } $conn->set_charset("utf8mb4"); } catch (Exception $e) { error_log("Error BD Reglamento: " . $e->getMessage()); $conn = false; } /* ========================================================= 2. FILTRO ANTI-ROBOTS ========================================================= */ $user_agent = $_SERVER['HTTP_USER_AGENT'] ?? ''; $es_robot = false; $bots_conocidos = ['bot', 'crawl', 'spider', 'slurp', 'google', 'facebook', 'ahrefs', 'semrush']; foreach ($bots_conocidos as $bot) { if (stripos($user_agent, $bot) !== false) { $es_robot = true; break; } } /* ========================================================= 3. CONTADOR Y REGISTRO (SOLUCIÓN AL ERROR 508) ========================================================= */ $archivo = "contador_visitas_reglamento.txt"; // Archivo único para esta sección $visitas_base = 6633; if (!$es_robot && !isset($_SESSION['visitado_reglamento'])) { $_SESSION['visitado_reglamento'] = true; // A) Manejo de archivo con BLOQUEO EXCLUSIVO (LOCK_EX) if (!file_exists($archivo)) { file_put_contents($archivo, $visitas_base, LOCK_EX); } $f = fopen($archivo, "r+"); if ($f) { flock($f, LOCK_EX); // Pone orden en la fila de escritura $visitas = (int)fread($f, filesize($archivo) + 1); if ($visitas < $visitas_base) $visitas = $visitas_base; $visitas++; rewind($f); fwrite($f, $visitas); fflush($f); flock($f, LOCK_UN); // Libera el archivo fclose($f); } // B) Registro en BD con Sentencia Preparada (Ligero y Seguro) if ($conn) { $ip = $_SERVER['REMOTE_ADDR']; if (!empty($_SERVER['HTTP_CLIENT_IP'])) $ip = $_SERVER['HTTP_CLIENT_IP']; elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) $ip = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0]; $sistema = "PC / Laptop"; if (strpos($user_agent, 'Android') !== false) $sistema = 'Celular Android'; elseif (strpos($user_agent, 'iPhone') !== false) $sistema = 'iPhone'; $hostname = gethostbyaddr($ip); if ($hostname && (strpos($hostname, 'icloud') !== false || strpos($hostname, 'mask') !== false)) { $sistema .= " (Modo Privado)"; } $pagina_texto = "Reglamento Interno"; $dispositivo_completo = $sistema . " (" . substr($user_agent, 0, 100) . ")"; // Las sentencias preparadas ahorran recursos críticos de CPU $stmt = $conn->prepare("INSERT INTO log_visitas (ip_usuario, dispositivo, pagina_visitada) VALUES (?, ?, ?)"); if ($stmt) { $stmt->bind_param("sss", $ip, $dispositivo_completo, $pagina_texto); $stmt->execute(); $stmt->close(); } } } else { $visitas = file_exists($archivo) ? (int)file_get_contents($archivo) : $visitas_base; } /* ========================================================= 4. CIERRE FORZADO DE CONEXIÓN (LIBERA EL PROCESO 508) ========================================================= */ if ($conn) { $conn->close(); // Vital para que el hosting no se bloquee } $visitas_formateadas = number_format($visitas, 0, ',', '.'); ?>
El presente Reglamento Interno tiene por objetivo regular la organización y funcionamiento del establecimiento, promoviendo una sana convivencia escolar y el desarrollo integral de nuestros estudiantes.
El uso del uniforme es obligatorio para desarrollar la identidad y formalidad (Reglamento Art. XI):
Las faltas se clasifican en Leves, Graves y Gravísimas. Se sancionará especialmente:
Más de un siglo de tradición formando a los profesionales que la región y el país necesitan, con un sello valórico y técnico de alto nivel.
Nuestra HistoriaAños de Tradición
Titulados anuales
Convenios Empresa
Docentes Idóneos