Descripción: Extraer columna de array multidimensional
Versión mínima: 5.5.0
Estado: ✅ Disponible y compatible
Descripción: Reemplazar elementos de array
Versión mínima: 5.3.0
Estado: ✅ Disponible y compatible
Descripción: Hash seguro de contraseñas
Versión mínima: 5.5.0
Estado: ✅ Disponible y compatible
Descripción: Verificar hash de contraseña
Versión mínima: 5.5.0
Estado: ✅ Disponible y compatible
Descripción: Bytes aleatorios criptográficamente seguros
Versión mínima: 7.0.0
Estado: ✅ Disponible y compatible
Descripción: Entero aleatorio criptográficamente seguro
Versión mínima: 7.0.0
Estado: ✅ Disponible y compatible
Descripción: Comparación segura de hashes
Versión mínima: 5.6.0
Estado: ✅ Disponible y compatible
Descripción: Manejo de múltiples conexiones cURL
Versión mínima: 5.5.0
Estado: ❌ No disponible
Descripción: Mensaje del último error JSON
Versión mínima: 5.5.0
Estado: ✅ Disponible y compatible
Descripción: Crear alias de clase
Versión mínima: 5.3.0
Estado: ✅ Disponible y compatible
Descripción: Conexión MySQL mejorada
Alternativas: pdo_mysql, mysql
Crítica: Sí
Estado: ✅ Cargada
Descripción: PDO para MySQL
Alternativas: mysqli, mysql
Crítica: Sí
Estado: ✅ Cargada
Descripción: Manejo de JSON
Alternativas: simplexml, dom
Crítica: Sí
Estado: ✅ Cargada
Descripción: Manejo de strings multibyte
Alternativas: iconv, recode
Crítica: Sí
Estado: ✅ Cargada
Descripción: Criptografía y SSL
Alternativas: mcrypt, hash
Crítica: Sí
Estado: ✅ Cargada
Descripción: Transferencia de archivos
Alternativas: file_get_contents, fopen, sockets
Crítica: No
Estado: ✅ Cargada
Descripción: Manejo de imágenes
Alternativas: imagick, gmagick
Crítica: No
Estado: ✅ Cargada
Descripción: Compresión ZIP
Alternativas: phar, rar
Alternativas Disponibles: phar
Crítica: No
Estado: ⚠️ No cargada (no crítica)
Usando Phar en lugar de Zip
<?php
// En lugar de ZipArchive
$phar = new PharData("archivo.tar");
$phar->extractTo("./destino/");
// Para crear archivos comprimidos
$phar = new PharData("archivo.tar");
$phar->addFromString("archivo.txt", "contenido");
// Para listar contenido
foreach ($phar as $archivo) {
echo $archivo->getFilename() . "\n";
}
Descripción: Manejo de XML
Alternativas: simplexml, dom
Crítica: No
Estado: ✅ Cargada
Descripción: Internacionalización
Alternativas: mbstring, iconv
Alternativas Disponibles: mbstring, iconv
Crítica: No
Estado: ⚠️ No cargada (no crítica)
foreach no se marcan como obsoletas, y las variables de bucles
se detectan correctamente.
Tipo: Sintaxis
Problema: Short tags <?= pueden no estar habilitados en el servidor
Severidad: MEDIA
<p><?= escaparHTML($totalNoticias) ?></p>
<p><?= escaparHTML($totalDetalles) ?></p>
<p><?= escaparHTML($totalCategorias) ?></p>
<p><?= escaparHTML($totalIconos) ?></p>
<strong>Error de BD:</strong> <?= escaparHTML($dbError) ?>
<strong>¡Éxito!</strong> <?= escaparHTML($success) ?>
<strong>Error:</strong> <?= escaparHTML($error) ?>
Tipo: Sintaxis
Problema: Short tags <?= pueden no estar habilitados en el servidor
Severidad: MEDIA
<p class="text-2xl font-bold"><?= escaparHTML($totalNoticias) ?></p>
<p class="text-2xl font-bold"><?= escaparHTML($totalDetalles) ?></p>
<strong>Error de BD:</strong> <?= escaparHTML($dbError) ?>
<?php if ($idCreated): ?>(ID #<?= escaparHTML($idCreated) ?>)<?php endif; ?>.
<?= escaparHTML($countParam) ?> bloques de contenido.
<?= escaparHTML($detallesParam ?: '0') ?> detalles asociados.
<?= escaparHTML($detallesParam ?: '0') ?> detalles han sido movidos a la papelera.
<i class="fas fa-check-circle mr-2"></i><strong>¡Éxito!</strong> <?= escaparHTML($mensaje) ?>
<i class="fas fa-check-circle mr-2"></i><strong>¡Éxito!</strong> <?= escaparHTML($mensaje) ?>
<i class="fas fa-exclamation-triangle mr-2"></i><strong>Error:</strong> <?= escaparHTML($error) ?>
placeholder="ID o parte del título" value="<?= escaparHTML($q ?: '') ?>">
<option value="1" <?= $filtroEstado === '1' ? 'selected' : '' ?>>Solo activas</option>
<option value="0" <?= $filtroEstado === '0' ? 'selected' : '' ?>>Solo inactivas
<option value="hoy" <?= $filtroFecha === 'hoy' ? 'selected' : '' ?>>Hoy</option>
<option value="semana" <?= $filtroFecha === 'semana' ? 'selected' : '' ?>>Esta semana
<option value="mes" <?= $filtroFecha === 'mes' ? 'selected' : '' ?>>Este mes</option>
<option value="anio" <?= $filtroFecha === 'anio' ? 'selected' : '' ?>>Este año</option>
<span class="ml-2 px-2 py-1 bg-blue-100 rounded">Búsqueda: <?= escaparHTML($q) ?></span>
<?= escaparHTML($estadoTexto) ?></span>
<?= escaparHTML($fechaTexto) ?></span>
<strong><?= escaparHTML($totalResultados) ?></strong>
noticia<?= $totalResultados != 1 ? 's' : '' ?>
encontrada<?= $totalResultados != 1 ? 's' : '' ?>
#<?= escaparHTML($idN) ?></td>
<div class="text-sm font-bold text-gray-900"><?= escaparHTML($tituloN) ?></div>
<?= escaparHTML(preview($descripcionN, 50)) ?>
<i class="fas fa-calendar mr-2"></i><?= escaparHTML($fechaN) ?>
<span class="badge <?= escaparHTML($categoriaColor) ?>">
class="<?= escaparHTML($categoriaIcon) ?> mr-1"></i><?= escaparHTML($categoriaNombre) ?>
<i class="fas fa-eye mr-2"></i><?= escaparHTML($vistasN) ?>
<a href="editarNoticia.php?id=<?= $idN ?>" class="btn btn-primary btn-sm"
<a href="editarNoticiaCompleta.php?id=<?= $idN ?>"
<a href="administracionNoticias.php?tab=detalles&filtroNoticia=<?= $idN ?>"
<a href="eliminarNoticia.php?id=<?= $idN ?>&tab=noticias"
onclick="return confirm('¿Eliminar la noticia #<?= $idN ?>?')"
<a href="cambiarEstadoNoticia.php?id=<?= $idN ?>&tab=noticias"
class="btn <?= $activoN ? 'btn-toggle-active' : 'btn-toggle-inactive' ?> btn-sm"
title="<?= $activoN ? 'Desactivar' : 'Activar' ?>">
<i class="fas <?= $activoN ? 'fa-toggle-on' : 'fa-toggle-off' ?>"></i>
Error listando noticias: <?= escaparHTML($e->getMessage()) ?>
<a href="crearDetalle.php?noticia_id=<?= $filtroId ?>&ret=<?= $ret ?>" class="btn btn-success">
<i class="fas fa-plus mr-2"></i>Agregar Detalle a #<?= $filtroId ?>
<option value="<?= $idOpt ?>" <?= $sel ?>>#<?= $idOpt ?> -
<?= escaparHTML($titOpt) ?>
placeholder="Ej. 1" value="<?= escaparHTML($filtroOrdenParam ?: '') ?>">
<h4>Noticia #<?= $noticiaId ?></h4>
<p><?= escaparHTML($tituloNoticia ?: 'Sin título') ?></p>
<a href="editardetallecompleto.php?id=<?= $noticiaId ?>&ret=<?= $ret ?>"
<a href="eliminarDetallesNoticia.php?noticia_id=<?= $noticiaId ?>&tab=detalles<?= ($filtroId ? ("&filtroNoticia=" . $filtroId) : ("&filtroNoticia=" . $noticiaId)) ?><?= ($filtroOrdenParam && strlen($filtroOrdenParam) > 0 ? ("&filtroOrden=" . escaparHTML($filtroOrdenParam)) : "") ?>"
onclick="return confirm('¿Eliminar TODOS los detalles de la noticia #<?= $noticiaId ?> sin eliminar la noticia resumida?')"
class="<?=
<?= strtoupper(str_replace("_", " ", $tipoD)) ?>
<span class="id-detalle">#<?= $detalleId ?></span>
class="<?= ($tipoD === "titulo_principal" || $tipoD === "titulo_secundario") ? "contenido-titulo" : "contenido-texto" ?>">
<?= escaparHTML(preview($contenido, 100)) ?>
Orden: <?= (int) $orden ?>
class="<?= escaparHTML($catIcon) ?> <?= escaparHTML($catColor) ?>"></i>
<?= escaparHTML($categoriaD) ?>
<a href="editarDetalle.php?id=<?= $detalleId ?>&ret=<?= $ret ?>"
<a href="eliminarDetalle.php?id=<?= $detalleId ?>&tab=detalles<?= ($filtroId ? ("&filtroNoticia=" . $filtroId) : "") ?><?= ($filtroOrdenParam && strlen($filtroOrdenParam) > 0 ? ("&filtroOrden=" . escaparHTML($filtroOrdenParam)) : "") ?>"
onclick="return confirm('¿Eliminar el detalle #<?= $detalleId ?>?')"
<?= ($filtroId ? "No se encontraron detalles para la noticia seleccionada." : "No hay detalles de noticias registrados en el sistema.") ?>
Error listando detalles: <?= escaparHTML($e->getMessage()) ?>
<?= ($filtroId ? "No se encontraron detalles para la noticia seleccionada." : "No hay detalles de noticias registrados en el sistema.") ?>
Tipo: Sintaxis
Problema: Short tags <?= pueden no estar habilitados en el servidor
Severidad: MEDIA
<span class="ml-2">El administrador <strong><?= escaparHTML($username ?: '') ?></strong> ha sido
<span class="ml-2">El administrador <strong><?= escaparHTML($username ?: '') ?></strong> ha sido
<span class="ml-2">El administrador <strong><?= escaparHTML($username ?: '') ?></strong> ha sido
<strong><?= escaparHTML($status ?: '') ?></strong> exitosamente.</span>
<i class="fas fa-<?= $errorIcon ?> mr-2 text-red-500"></i>
<span class="ml-2"><?= escaparHTML($errorMessage) ?></span>
<?= escaparHTML($userUsername) ?>
<div class="text-xs text-gray-500"><?= escaparHTML($nombreCompleto) ?></div>
<?= escaparHTML(trim($permiso)) ?>
class="fas fa-envelope mr-1 text-gray-400"></i><?= escaparHTML($email) ?>
class="fas fa-phone mr-1 text-gray-400"></i><?= escaparHTML($telefono) ?>
<input type="hidden" name="userId" value="<?= $id ?>">
<input type="hidden" name="nuevoEstado" value="<?= !$activo ? "1" : "0" ?>">
class="<?= $buttonClass ?> px-2 py-1 rounded transition duration-300"
onclick="return confirm('Estas seguro de que deseas <?= $confirmText ?> al administrador <?= escaparHTML($userUsername) ?>?')">
<i class="fas <?= $iconClass ?> mr-1"></i>
<?= $buttonText ?>
<a href="editarUsuario.php?id=<?= $id ?>"
<a href="eliminarUsuario.php?id=<?= $id ?>"
Error al cargar usuarios: <?= escaparHTML($e->getMessage()) ?>
<img src="<?= escaparHTML($rutaImagenModal) ?>" alt="Foto Actual"
La función curl_multi_handle requiere PHP 5.5.0+
Solución: Actualizar a PHP 5.5.0 o superior
Puedes usar phar en lugar de zip
Solución: Considerar usar las extensiones disponibles: phar
Puedes usar mbstring, iconv en lugar de intl
Solución: Considerar usar las extensiones disponibles: mbstring, iconv
Reemplazar funciones y sintaxis obsoletas
Solución: Usar funciones modernas equivalentes