Foros del Web » Programando para Internet » PHP »

Aclarando Conceptos de Algoritmos

Estas en el tema de Aclarando Conceptos de Algoritmos en el foro de PHP en Foros del Web. Antes que nada quiero agradecer a Erzengel por su ayuda en el ejercicio. Bueno aqui vamos de nuevo Estoy tratando de resolver un ejercicio en ...
  #1 (permalink)  
Antiguo 05/10/2005, 03:50
 
Fecha de Ingreso: octubre-2005
Mensajes: 23
Antigüedad: 12 años, 2 meses
Puntos: 0
Aclarando Conceptos de Algoritmos

Antes que nada quiero agradecer a Erzengel por su ayuda en el ejercicio.

Bueno aqui vamos de nuevo

Estoy tratando de resolver un ejercicio en PHP el cual les dejo a continuacion:

<html>
<head>
<title>Ejercicio</title>

</head>

<body>

<?php

/*************************************************
* EJERCICIO *
* *
* El siguiente programa contiene un algoritmo *
* mediante el cual verifica las contraseña *
* válidas para acceder. *
* Identificar (y explicar) el algoritmo y *
* determinar tres combinaciones de nombres de *
* usuario y contraseña válidos. *
*************************************************/

if(!$_POST['username']) { // Esta linea chequea si la variable $_POST['username'] contiene algo o esta vacia.

// En caso de que la variable este vacia ejecutará aquí

?>

<form method="post" name="formulario"><!--Accedemos al objeto "form" con el metodo "Post" y le asignamos el nombre "formulario" -->

<p><b>Usuario:</b> <input type="text" name="username" /><br /><!--Creamos un parrafo,luego metemos en negrita "Usuario:" y a continuacion abrimos la etiqueta "input" y mediante su parametros "type" y "name" le asignamos los valores "text" y "username" respectivamente -->

<b>Password:</b> <input type="password" name="password" /></p><!--Creamos un parrafo,luego metemos en negrita "Password:" y a continuacion abrimos la etiqueta "input" y mediante su parametros "type" y "name" le asignamos los valores "password" y "password" respectivamente -->

<p><input type="submit" value="Ingresar" /></p><!--Creamos un parrafo, a continuacion abrimos la etiqueta "input" y mediante su parametros "type" y "value" le asignamos los valores "submit" y "ingresar" respectivamente -->

</form>

<?php

} else {
// En caso de que la variable tenga algo entramos aquí


for($i = strlen ($_POST['username']); $i >= 0; $i--) {//La variable "i" es igual a la longitud de la cadena de la variable "Post['username']" y si la longitud de esta misma es mayor o igual a "0" a "i" se le resta una unidad.

$char = substr($_POST['username'], $i, 1); //La variable "char" es igual a la porcion de la cadena de la variable "Post['username']" especificada por los parametros "$i" y "1" siendo el primero la longitud y el segundo la posicion.

$lchar = strtolower ($char);//La variable "lchar" es igual a toda la cadena de la variable "char" pasada a minusculas

if ($lchar != "a" and $lchar != "e" and $lchar != "i" and $lchar != "o" and $lchar != "u")//si la variable "lchar" es desigual a ('a','e','i','o','u')

$c = $c . strtoupper($char); // La variable "c" es igual a toda la cadena de la variable "char" pasada a mayusculas

else//Si no

$c = $c . strtolower($char); // La variable "c" es igual a toda la cadena de la variable "char" pasada a minusculas
}

if ($_POST['password'] == $c)//si la variable "Post['password']" es igual a la variable "c"
$entro = true;// La variable "entro" es verdadera

if ($entro)//Si entro es verdadera

echo "<span style=\"color: #008800; font-weight: bold;\">ACCESS GRANTED</span>. Lo has logrado!";//Imprimo en pantalla "ACCESS GRANTED" "Lo has logrado!" con sus respectivos estilos y colores

else//Si no

echo "<span style=\"color: #ff0000; font-weight: bold;\">ACCESS DENIED</span>. El acceso no ha funcionado";//Imprimo en pantalla "ACCESS DENIED" "El acceso no ha funcionado" con sus respectivos estilos y colores
}
//Por consiguiente aqui dejo tres combinaciones validas de Usuarios y Passwords que son los siguientes:
1-Usuario:s Password:S 2-Usuario:r Password:R 3-Usuario:n Password:N
?>

</body>
</html>

Luego de que Erzengel me aclarara un punto critico en el ejercicio (por lo menos para mi) me han surgido nuevas dudas, aqui van:

1-Lo que hace que el bucle "for" se ejecute hacia atras, es la tercera expresion es decir "$i--"?

2-Si utilizamos como ejemplo de usuario la palabra demon y teniendo en cuenta la siguiente linea:
$char = substr($_POST['username'], $i, 1);
la primer letra que arrojara sera la letra "e"?

3-De ser asi, porque cuando debemos introducir el password este funciona con "NoMeD" (o sea demon al reves) y no con "eDNoM" siendo que "e" es la primer letra que nos arroja el substr y el bucle se ejecuta a la inversa?

Bueno un millon de gracias por las explicaciones y espero en algun momento poder serles de utilidad.

Salu2
Demonfire
  #2 (permalink)  
Antiguo 05/10/2005, 06:09
 
Fecha de Ingreso: julio-2005
Mensajes: 38
Antigüedad: 12 años, 4 meses
Puntos: 0
Buenos días

Cuando te dije que cogía la letra "e" en primer lugar era si ponias

usuario: demonfire
no demon

Saludos
  #3 (permalink)  
Antiguo 05/10/2005, 06:29
 
Fecha de Ingreso: julio-2005
Mensajes: 38
Antigüedad: 12 años, 4 meses
Puntos: 0
Respecto a la primera pregunta.

tal y como tienes el bucle, le estás diciendo que vaya desde el tamaño de la variable hasta 0. Por lo tanto desde (usuario:demonfire) 'e' hasta 'd'

Para solucionarlo¿?

Podrías invertir el bucle

for($i=0;$i < strlen ($_POST['username']); $i++)

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:54.