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()">×</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">
© Avicampo <?php echo date('Y'); ?>
</div>
</body>
</html>