¿Se puede decir que quien escribe esto sabe programar?

Hace tiempo escribí la entrada No está mal, funciona, en la que mostraba la actitud de algunos alumnos a los que sólo les importa que su código funcione, no se molestan en pensar si el código está realmente bien o mal.

Para que lo entienda todo el mundo, es algo parecido a “excrivir un testo con faltas de hortografia”. Se entiende, ¿verdad? Pues está bien, diría alguno de mis alumnos.

Recientemente, mis alumnos (tercer curso) tenían que escribir un código en PHP para permitir el acceso de un usuario a la parte privada de una aplicación web: el típico login con nombre de usuario y contraseña. Más de un alumno (¿un 20%?) escribió lo siguiente o algo parecido:

$sentencia = "SELECT * FROM Usuarios";
$resultado = mysqli_query($link, $sentencia);
while($fila = mysqli_fetch_assoc($resultado)) {
 // $_POST["user"] y $_POST["password"] provienen del formulario de login
 if($fila["User"] == $_POST["user"] && $fila["Password"] == $_POST["password"]) {
   $_SESSION["Id"] = $fila["Id"];
   $_SESSION["Name"] = $fila["Name"];
 }
}
if(!empty($_SESSION["Id"])) {
 // Redirección página principal parte privada
}
else {
 // Redirección página principal parte pública
}

No nos fijemos en que no hay ninguna comprobación de los posibles errores que pueden ocurrir… eso es muy importante, pero no es lo que quiero destacar. ¿Cuál es el problema principal de este código?

Para un ojo educado en la programación, el código anterior es como “ber uvo escrito sin ache y con ube”.