Es imprescindible haber leído todos los Links de la columna PHP de la tabla de entrada.
Como leer archivos de una Base de Datos
Formulario simple de entrada
Este formulario simple, (como tal incompleto), sirve para que el Usuario o el programador pueda acceder a los archivos guardados con su nombre y clave.
La acción del Formulario (action) va dirigida a reciberegistrouno.php.
Enviamos dos variables a ser recibidas: "nombre" y "password".
Lo llamo formulario simple ya que faltan los script de validación, y 'un montón de cosas más...'
Pregunta Juan el Pregunton:
¿Para que esta página funcione, hago doble click sobre ella..?
No, no, y nooo...(el profesor le pega a Juan con el puntero en el Enter), esta página debe ser llamada así:
localhost/ejemplos/enviaregistrouno.html
Pregunta otra vez Juan, (con voz compunguida):
Pero..., si es un HTML, ¿por qué no puedo...?
(Al profesor se le hincha la panza y se le cae el último pelo...), y responde:
¡Porque va dirigida a un archivo PHP y este solo funciona en un servidor Local ó Remoto...., se entendió!
Código de reciberegistrouno.php (Versión Moderna)
Este es el código PHP que procesa el formulario y lee los archivos:
<?php
$nombre = $_POST['nombre'] ?? '';
$password = $_POST['password'] ?? '';
$nombre = htmlspecialchars($nombre);
$password = htmlspecialchars($password);
$nombre = strtolower($nombre);
$archivo = "bases/$nombre/$nombre.txt";
if (file_exists($archivo)) {
$contenido = file_get_contents($archivo);
echo "<h3>Datos del usuario: $nombre</h3>";
echo "<div style='background: #f5f5f5; padding: 15px; border-radius: 5px;'>";
echo nl2br(htmlspecialchars($contenido));
echo "</div>";
} else {
echo "<div style='background: #f8d7da; color: #721c24; padding: 15px; border-radius: 5px;'>";
echo "<h3>Error: Usuario no encontrado</h3>";
echo "<p>El usuario '$nombre' no existe en la base de datos.</p>";
echo "</div>";
}
?>
Este código PHP moderno incluye:
- Operador de fusión de null (??) para manejar valores POST
- Sanitización con
htmlspecialchars() para prevenir XSS
- Conversión a minúsculas para coincidir con la base de datos
- Verificación de existencia del archivo antes de intentar leerlo
- Manejo de errores con mensajes informativos
- Formateo del contenido con
nl2br() para mantener saltos de línea
Alternativa en PHP5 (solo para visualización)
Esta es la versión del código en PHP5 que podría haberse utilizado:
<?php
$nombre = $_POST['nombre'];
$password = $_POST['password'];
$nombre = strtolower($nombre);
$archivo = "bases/$nombre/$nombre.txt";
if (file_exists($archivo)) {
$contenido = file_get_contents($archivo);
echo "<h3>Datos del usuario: $nombre</h3>";
echo "<div>";
echo nl2br($contenido);
echo "</div>";
} else {
echo "<h3>Error: Usuario no encontrado</h3>";
echo "<p>El usuario '$nombre' no existe en la base de datos.</p>";
}
?>
Este código PHP5 muestra las diferencias con la versión moderna:
- No usa el operador de fusión de null (??) para valores POST
- Falta de sanitización con
htmlspecialchars() (vulnerabilidad XSS)
- No verifica si las variables POST están definidas antes de usarlas
- Mensajes de error menos informativos y sin estilo
- Potencial problema de seguridad al mostrar contenido sin sanitizar