File "buscarServidor.php.bak"

Full Path: C:/wamp64/www/sistemas/servidores/buscarServidor.php.bak
File size: 20.43 KB
MIME-type: text/x-php
Charset: utf-8

<?php
include("connection.php");
$con = connection();

// Manejar la actualización de datos
if(isset($_POST['actualizar'])) {
    $id = $_POST['id'];
    $nombre_servidor = $_POST['nombre_servidor'];
    $usuario_admin = $_POST['usuario_admin'];
    $contrasena = $_POST['contrasena'];
    $URL = $_POST['URL'];
    $base_datos = $_POST['base_datos'];
	$user_DB = $_POST['user_DB'];
    $contrasena_DB = $_POST['contrasena_DB'];
    
    $sql = "UPDATE servidores SET 
            nombre_servidor=?, usuario_admin=?, contrasena=?, 
            URL=?, base_datos=?, user_DB=?,contrasena_DB=? 
            WHERE id=?";
    $stmt = $con->prepare($sql);
    $stmt->bind_param("sssssssi", 
        $nombre_servidor, $usuario_admin, $contrasena, 
        $URL, $base_datos, $user_DB, $contrasena_DB, $id);
    $stmt->execute();
    
    // Recargar la página con los mismos parámetros de búsqueda
    header("Location: ".$_SERVER['PHP_SELF']."?URL=".urlencode($URL));
    exit();
}

$mostrarTabla = false;
$query = null;
$URL = isset($_GET['URL']) ? $_GET['URL'] : '';

// Verificar si se ha enviado una búsqueda
if(isset($_POST['buscar']) && !empty($_POST['URL'])) {
    $URL = $_POST['URL'];
    $mostrarTabla = true;

	
    // Usamos LIKE para búsqueda parcial y agregamos % alrededor del valor
    $URL_like = "%".$URL."%";
    $sql = "SELECT * FROM servidores WHERE URL LIKE ? ORDER BY id DESC";
    $stmt = $con->prepare($sql);
    $stmt->bind_param("s", $URL_like);
    $stmt->execute();
    $query = $stmt->get_result();	
}
?>
<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta name="description" content="Consulta de IP Servidor">
    <meta name="keywords" content="html, css, bases de datos, php">
    <meta name="author" content="Sebastian Obando">
    <meta name="copyright" content="Sebastian Obando">
    <meta name="google" content="notranslate">
    <title>IP Servidor</title>
    <link rel="icon" type="image/png" href="../img/icono1.png">
    
    <!-- Carga de jQuery y DataTables -->
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://cdn.datatables.net/1.11.5/js/jquery.dataTables.js"></script>
    <link rel="stylesheet" href="https://cdn.datatables.net/1.11.5/css/jquery.dataTables.css">
    <!-- Font Awesome para íconos -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0/css/all.min.css">
    <style>
        body {
            font-family: Arial, sans-serif;
            margin: 0;
            padding: 20px;
        }
        .container {
            max-width: 1200px;
            margin: 0 auto;
        }
        .search-form {
            background-color: #f8f9fa;
            padding: 20px;
            border-radius: 5px;
            margin-bottom: 20px;
            box-shadow: 0 2px 4px rgba(0,0,0,0.1);
        }
        .search-form h3 {
            margin-top: 0;
            color: #333;
        }
        .form-group {
            margin-bottom: 15px;
        }
        .form-group label {
            display: block;
            margin-bottom: 5px;
            font-weight: bold;
        }
        .form-group input[type="text"] {
            width: 100%;
            padding: 8px;
            border: 1px solid #ddd;
            border-radius: 4px;
            box-sizing: border-box;
            font-size: 16px;
        }
        .form-group input[type="submit"] {
            background-color: coral;
            color: white;
            border: none;
            padding: 10px 15px;
            border-radius: 4px;
            cursor: pointer;
            font-size: 16px;
        }
        .form-group input[type="submit"]:hover {
            background-color: coral;
        }
        .button-container {
            margin: 15px 0;
        }
        .button-container input[type="button"] {
            padding: 8px 15px;
            margin-right: 10px;
            cursor: pointer;
            background-color: coral;
            color: white;
            border: none;
            border-radius: 4px;
        }
        .button-container input[type="button"]:hover {
            background-color: coral;
        }
        .no-results {
            padding: 20px;
            background-color: #f8d7da;
            color: #721c24;
            border-radius: 5px;
            margin-top: 20px;
        }
        .info-message {
            padding: 20px;
            background-color: #d1ecf1;
            color: #0c5460;
            border-radius: 5px;
            margin-top: 20px;
        }
        .users-table {
            width: 100%;
            overflow-x: auto;
        }
        table.display {
            width: 100%;
            border-collapse: collapse;
        }
        table.display th, table.display td {
            padding: 8px;
            text-align: left;
            border: 1px solid #ddd;
        }
        table.display th {
            background-color: #f2f2f2;
        }
        .copyright {
            text-align: center;
            margin-top: 30px;
            color: #666;
            font-size: 14px;
        }
        /* Estilos para los botones */
        .btn-editar {
            padding: 5px 10px;
            background-color: coral;
            color: white;
            border: none;
            border-radius: 4px;
            cursor: pointer;
        }
        .btn-editar:hover {
            background-color: #e55b4a;
        }
        .btn-copiar {
            margin-left: 5px;
            padding: 3px 8px;
            background-color: #4CAF50;
            color: white;
            border: none;
            border-radius: 3px;
            cursor: pointer;
        }
        .btn-copiar:hover {
            background-color: #45a049;
        }
        .btn-mostrar {
            margin-left: 5px;
            padding: 3px 8px;
            background-color: #2196F3;
            color: white;
            border: none;
            border-radius: 3px;
            cursor: pointer;
        }
        .btn-mostrar:hover {
            background-color: #0b7dda;
        }
        .contrasena-oculta {
            filter: blur(4px);
            user-select: none;
            display: inline-block;
            min-width: 100px;
        }
        /* Notificación estilo toast */
        .toast {
            position: fixed;
            bottom: 20px;
            right: 20px;
            background-color: #4CAF50;
            color: white;
            padding: 10px 20px;
            border-radius: 5px;
            z-index: 1000;
            display: none;
        }
        /* Estilos para el modal */
        .modal {
            display: none;
            position: fixed;
            z-index: 1000;
            left: 0;
            top: 0;
            width: 100%;
            height: 100%;
            background-color: rgba(0,0,0,0.5);
        }
        .modal-content {
            background-color: #fefefe;
            margin: 10% auto;
            padding: 20px;
            border: 1px solid #888;
            width: 60%;
            border-radius: 5px;
            box-shadow: 0 4px 8px 0 rgba(0,0,0,0.2);
        }
        .close {
            color: #aaa;
            float: right;
            font-size: 28px;
            font-weight: bold;
            cursor: pointer;
        }
        .close:hover {
            color: black;
        }
        .modal-row {
            display: flex;
            flex-wrap: wrap;
            margin-bottom: 15px;
        }
        .modal-col {
            flex: 1;
            min-width: 200px;
            padding: 0 10px;
            margin-bottom: 10px;
        }
        .modal-col label {
            display: block;
            margin-bottom: 5px;
            font-weight: bold;
        }
        .modal-col input {
            width: 100%;
            padding: 8px;
            border: 1px solid #ddd;
            border-radius: 4px;
        }
    </style>
</head>
<body>
    <div class="container">
        <h2>Consulta de Servidor Por IP</h2>
        
        <div class="search-form">
            <h3>Buscar Servidor Por IP</h3>
            <form method="POST" action="">
                <div class="form-group">
                    <label for="URL">IP:</label>
                    <input type="text" id="URL" name="URL" value="<?= htmlspecialchars($URL) ?>" placeholder="Ingrese la IP" required>
                </div>
                <div class="form-group">
                    <input type="submit" name="buscar" value="Buscar">
                </div>
            </form>
        </div>
        
        <div class="button-container">
            <input type="button" onclick="window.location.href='../index.php';" value="Menú">
            <input type="button" onclick="window.location.href='generarExcel.php';" value="Generar Excel">
        </div>
        
        <?php if($mostrarTabla): ?>
            <?php if($query && $query->num_rows > 0): ?>
                <div class="users-table">
                    <div style="overflow-x: auto;">
                        <table id="tablaPersonas" class="display">
                            <thead>
                                <tr>
                                    <th>ID</th>
                                    <th>Servidor</th>
                                    <th>Administrador</th>
                                    <th>Contraseña</th>
                                    <th>IP</th>
                                    <th>Base De Datos</th>
									<th>Usuario Base De Datos</th>
                                    <th>Contraseña DB</th>
                                    <th>Acciones</th>
                                </tr>
                            </thead>
                            <tbody>
                                <?php while ($row = $query->fetch_assoc()): ?>
                                    <tr>
                                        <td><?= $row['id'] ?></td>
                                        <td><?= htmlspecialchars($row['nombre_servidor']) ?></td>
                                        <td><?= htmlspecialchars($row['usuario_admin']) ?></td>
                                        <td>
                                            <span class="contrasena-oculta"><?= htmlspecialchars($row['contrasena']) ?></span>
                                            <button class="btn-copiar" onclick="copiarContrasena('<?= htmlspecialchars($row['contrasena'], ENT_QUOTES) ?>')">
                                                <i class="far fa-copy"></i> Copiar
                                            </button>
                                            <button class="btn-mostrar" onclick="mostrarContrasena(this)">
                                                <i class="far fa-eye"></i> Mostrar
                                            </button>
                                        </td>
                                        <td><?= htmlspecialchars($row['URL']) ?></td>
                                        <td><?= htmlspecialchars($row['base_datos']) ?></td>
										<td><?= htmlspecialchars($row['user_DB']) ?></td>
                                        <td>
                                            <span class="contrasena-oculta"><?= htmlspecialchars($row['contrasena_DB']) ?></span>
                                            <button class="btn-copiar" onclick="copiarContrasena('<?= htmlspecialchars($row['contrasena_DB'], ENT_QUOTES) ?>')">
                                                <i class="far fa-copy"></i> Copiar
                                            </button>
                                            <button class="btn-mostrar" onclick="mostrarContrasena(this)">
                                                <i class="far fa-eye"></i> Mostrar
                                            </button>
                                        </td>
                                        <td>
                                            <button class="btn-editar" onclick="openEditModal(
                                                '<?= $row['id'] ?>',
                                                '<?= htmlspecialchars($row['nombre_servidor'], ENT_QUOTES) ?>',
                                                '<?= htmlspecialchars($row['usuario_admin'], ENT_QUOTES) ?>',
                                                '<?= htmlspecialchars($row['contrasena'], ENT_QUOTES) ?>',
                                                '<?= htmlspecialchars($row['URL'], ENT_QUOTES) ?>',
                                                '<?= htmlspecialchars($row['base_datos'], ENT_QUOTES) ?>',
												'<?= htmlspecialchars($row['user_DB'], ENT_QUOTES) ?>',
                                                '<?= htmlspecialchars($row['contrasena_DB'], ENT_QUOTES) ?>'
                                            )">
                                                <i class="fas fa-edit"></i> Editar
                                            </button>
                                        </td>
                                    </tr>
                                <?php endwhile; ?>
                            </tbody>
                        </table>
                    </div>
                </div>
            <?php else: ?>
                <div class="no-results">
                    <p>No se encontraron registros por la IP: <strong><?= htmlspecialchars($URL) ?></strong></p>
                </div>
            <?php endif; ?>
        <?php else: ?>
            <div class="info-message">
                <p>Ingrese la IP para Consultar</p>
            </div>
        <?php endif; ?>
    </div>

    <!-- Modal para edición -->
    <div id="editModal" class="modal">
        <div class="modal-content">
            <span class="close" onclick="closeEditModal()">&times;</span>
            <h2>Editar Información del Servidor</h2>
            <form id="editForm" method="POST" action="">
                <input type="hidden" id="editId" name="id">
                
                <div class="modal-row">
                    <div class="modal-col">
                        <label>Nombre Servidor:</label>
                        <input type="text" id="editNombreServidor" name="nombre_servidor">
                    </div>
                    <div class="modal-col">
                        <label>Usuario Administrador:</label>
                        <input type="text" id="editUsuarioAdmin" name="usuario_admin">
                    </div>
                </div>
                
                <div class="modal-row">
                    <div class="modal-col">
                        <label>Contraseña:</label>
                        <input type="text" id="editContrasena" name="contrasena">
                    </div>
                    <div class="modal-col">
                        <label>IP (URL):</label>
                        <input type="text" id="editURL" name="URL">
                    </div>
                </div>
                
                <div class="modal-row">
                    <div class="modal-col">
                        <label>Base de Datos:</label>
                        <input type="text" id="editBaseDatos" name="base_datos">
                    </div>
					<div class="modal-col">
                        <label>Usuario Base de Datos:</label>
                        <input type="text" id="edituserDB" name="user_DB">
                    </div>
                    <div class="modal-col">
                        <label>Contraseña DB:</label>
                        <input type="text" id="editContrasenaDB" name="contrasena_DB">
                    </div>
                </div>
                
                <div style="text-align:right; margin-top:20px;">
                    <button type="button" onclick="closeEditModal()" style="padding:8px 15px; margin-right:10px; background-color:#ccc; color:#333; border:none; border-radius:4px; cursor:pointer;">
                        <i class="fas fa-times"></i> Cancelar
                    </button>
                    <button type="submit" name="actualizar" style="padding:8px 15px; background-color:coral; color:white; border:none; border-radius:4px; cursor:pointer;">
                        <i class="fas fa-save"></i> Actualizar
                    </button>
                </div>
            </form>
        </div>
    </div>

    <!-- Notificación toast -->
    <div id="toast" class="toast"></div>

    <!-- Script para inicializar DataTables y funciones personalizadas -->
    <script>
        $(document).ready(function () {
            <?php if($mostrarTabla && $query && $query->num_rows > 0): ?>
            $('#tablaPersonas').DataTable({
                "paging": true,
                "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "Todos"]],
                "searching": true,
                "language": {
                    "url": "//cdn.datatables.net/plug-ins/1.11.5/i18n/Spanish.json"
                },
                "order": [[0, 'desc']],
                "autoWidth": false,
                "responsive": true
            });
            <?php endif; ?>
        });

        // Función para abrir el modal de edición
        function openEditModal(id, nombre_servidor, usuario_admin, contrasena, URL, base_datos, contrasena_DB) {
            document.getElementById('editId').value = id;
            document.getElementById('editNombreServidor').value = nombre_servidor;
            document.getElementById('editUsuarioAdmin').value = usuario_admin;
            document.getElementById('editContrasena').value = contrasena;
            document.getElementById('editURL').value = URL;
            document.getElementById('editBaseDatos').value = base_datos;
			document.getElementById('edituserDB').value = user_DB;
            document.getElementById('editContrasenaDB').value = contrasena_DB;
            
            document.getElementById('editModal').style.display = 'block';
        }

        // Función para cerrar el modal de edición
        function closeEditModal() {
            document.getElementById('editModal').style.display = 'none';
        }

        // Función para copiar la contraseña al portapapeles
        function copiarContrasena(contrasena) {
            // Crear un elemento temporal para copiar
            const tempInput = document.createElement("input");
            tempInput.value = contrasena;
            document.body.appendChild(tempInput);
            tempInput.select();
            document.execCommand("copy");
            document.body.removeChild(tempInput);
            
            // Mostrar notificación
            mostrarToast("Contraseña copiada al portapapeles");
        }

        // Función para mostrar/ocultar la contraseña
        function mostrarContrasena(boton) {
            const contrasenaSpan = boton.parentElement.querySelector('.contrasena-oculta');
            const icono = boton.querySelector('i');
            
            if(contrasenaSpan.style.filter === 'blur(4px)' || !contrasenaSpan.style.filter) {
                contrasenaSpan.style.filter = 'none';
                icono.className = 'far fa-eye-slash';
                boton.innerHTML = '<i class="far fa-eye-slash"></i> Ocultar';
            } else {
                contrasenaSpan.style.filter = 'blur(4px)';
                icono.className = 'far fa-eye';
                boton.innerHTML = '<i class="far fa-eye"></i> Mostrar';
            }
        }

        // Función para mostrar notificación toast
        function mostrarToast(mensaje) {
            const toast = document.getElementById('toast');
            toast.textContent = mensaje;
            toast.style.display = 'block';
            
            setTimeout(() => {
                toast.style.display = 'none';
            }, 2000);
        }

        // Cierra el modal si se hace clic fuera del contenido
        window.onclick = function(event) {
            var modal = document.getElementById('editModal');
            if (event.target == modal) {
                closeEditModal();
            }
        }
    </script>
    
    <div class="copyright">
        &#169; Avicampo <?php echo date('Y'); ?>
    </div>
</body>
</html>