Foros del Web » Programando para Internet » PHP »

Acceso Con Contraseña

Estas en el tema de Acceso Con Contraseña en el foro de PHP en Foros del Web. Hola. Estoy intentando crear un cogido PHP para que al abrir la pagina me pida una contraseña y al introducirla y validarla que la compruebe ...
  #1 (permalink)  
Antiguo 11/01/2008, 10:56
 
Fecha de Ingreso: enero-2008
Mensajes: 9
Antigüedad: 16 años, 10 meses
Puntos: 0
Acceso Con Contraseña

Hola.
Estoy intentando crear un cogido PHP para que al abrir la pagina me pida una contraseña y al introducirla y validarla que la compruebe de un fichero txt y posteriormente si es correcto se visualicen los datos.
El codigo lo he empezado así pero no logro terminarlo.

.................................................. ......................................
div id="content_main">
<?php if ($_POST["password"]=="") { ?>
<p align="center">
Para acceder a esta sección debes introducir la contraseña:</p>
<form method="post" action="junta.php" class="pivot-search">
<p align="center">Contraseña: <input type="password" name="password" size="12">
<input type="Submit" value="Enviar"></p>
</form>

.....................

<?php }else{
$password=file("passwords.txt");
$i=0; $permission=false;



<p><h1>Junta Directiva</h1></p>
  #2 (permalink)  
Antiguo 11/01/2008, 11:59
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Acceso Con Contraseña

¿Que duda tienes?

Saludos.
  #3 (permalink)  
Antiguo 11/01/2008, 12:36
 
Fecha de Ingreso: enero-2008
Mensajes: 9
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Acceso Con Contraseña

he empezado por aquí pero no se continuar. Soy novato en PHP y no me manejo muy bien. Despues de estas dos lineas me pierdo y no se que codigo falta

<?php }else{
$password=file("passwords.txt");
$i=0; $permission=false;
...
...
....
....
  #4 (permalink)  
Antiguo 11/01/2008, 13:03
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Acceso Con Contraseña

Pues te faltaria ciclar usando un foreach, o un for o un while, luego compruebas el password que te envien sea igual al que te estan enviando, algo asi:
Código PHP:
$pass $_POST['password'];
foreach( 
$file as $pwd ) {
       if( 
$pass == $pwd ) {
            
// si existe
       
}

Saludos.
  #5 (permalink)  
Antiguo 11/01/2008, 13:32
 
Fecha de Ingreso: enero-2008
Mensajes: 9
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Acceso Con Contraseña

Al ejecutarlo se traga cualquier contraseña, con lo cual no lo valida y además me da el siguiente mensaje:

Warning: Invalid argument supplied for foreach()

Ahora mismo el archivo llamado junta.php está así ¿donde esta fallando?

.........................

<div id="content_main">
<?php if ($_POST["password"]=="") { ?>
<p align="center">
Para acceder a esta sección debes introducir la contraseña:</p>
<form method="post" action="junta.php" class="pivot-search">
<p align="center">Contraseña: <input type="password" name="password" size="12">
<input type="Submit" value="Enviar"></p>
</form>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
</p>

<?php }else{
$password=file("passwords.txt");
$i=0; $permission=false;
$pass = $_POST['password'];
foreach( $file as $pwd ) {
if( $pass == $pwd ) {
// si existe
}
}
{
?>




<p><h1>Junta Directiva</h1></p>
<p><table width="99%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="48%"><div align="right">Presidente:</div></td>
<td width="2%">&nbsp;</td>
<td width="50%">D xxxxxxx</td>
</tr>
</table>
</p>
<br/>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
</p>
<?php } ?>
<?php } ?>



</body>
</html>
  #6 (permalink)  
Antiguo 11/01/2008, 13:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Acceso Con Contraseña

Si lees el flujo del programa $file tiene que corresponder al resultado de la funcion file("passwords.txt"). De lo contrario no podra ciclar por los passwords.

Saludos.
  #7 (permalink)  
Antiguo 11/01/2008, 13:43
 
Fecha de Ingreso: enero-2008
Mensajes: 9
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Acceso Con Contraseña

No entiendo lo que quieres decir ¿que no está validando la clave introducida con el fichero txt?
  #8 (permalink)  
Antiguo 11/01/2008, 13:49
 
Fecha de Ingreso: enero-2008
Mensajes: 9
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Acceso Con Contraseña

El codigo que tenia en un principio era para que se accediera con una sola clave. Mi idea es que puedan acceder a visualizar varias claves, NO UNA SOLA, por eso he creado un fichero txt que tiene este formato:


passwords.txt:
12345678A
22222222B
...
....

el archivo junta.php estaba de la siguiente manera:

<div id="content_main">
<?php if ($_POST["password"]=="") { ?>
<p align="center">
Para acceder a esta sección debes introducir la contraseña:</p>
<form method="post" action="junta.php" class="pivot-search">
<p align="center">Contraseña: <input type="password" name="password" size="15">
<input type="Submit" value="Enviar"></p>
</form>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>
</p>

<?php }else{
$password=$_POST["password"];
if ($password=="aaaaaa"){ $permission="yes";}
if ($permission=="yes"){
?>
  #9 (permalink)  
Antiguo 11/01/2008, 14:45
 
Fecha de Ingreso: noviembre-2005
Mensajes: 222
Antigüedad: 19 años
Puntos: 2
Re: Acceso Con Contraseña

aqui declaras $password=file("passwords.txt");, pero luego no vuelves a usar esa variable
  #10 (permalink)  
Antiguo 11/01/2008, 15:58
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Acceso Con Contraseña

Lo que te comento es que la función file("archivo") te regresa un arreglo, que es lo que esta en tu archivo separado por cada linea nueva. Tu tienes que ciclar ese arreglo en el foreach y ya dentro del foreach comparas con un if y checas si hay un password que sea igual al de tu entrada y entonces autorizas tu entrada.

Saludos.
  #11 (permalink)  
Antiguo 12/01/2008, 06:38
 
Fecha de Ingreso: enero-2008
Mensajes: 9
Antigüedad: 16 años, 10 meses
Puntos: 0
Re: Acceso Con Contraseña

Hola compañeros, estoy peleandome tal y como me decis y no logro hacerlo que funcione bien. Por mas que lo intento se sigue accediendo a la pagina con cualquier contraseña.
  #12 (permalink)  
Antiguo 12/01/2008, 07:50
 
Fecha de Ingreso: noviembre-2005
Mensajes: 222
Antigüedad: 19 años
Puntos: 2
Re: Acceso Con Contraseña

estoy probando los codigos que has puesto, para que funcione el primero debes poner:

<?php if ($_POST["password"]=="") {
echo '<div id="content_main">';
echo '<p align="center"> Para acceder a esta sección debes introducir la contraseña:</p>';
echo '<form method="post" action="junta.php" class="pivot-search">';
echo '<p align="center">Contraseña: <input type="password" name="password" size="15"> ';
echo ' <input type="Submit" value="Enviar"></p>';
echo '</form>';
echo '<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>';
echo '</p>';
echo '</div>';
}

else {
$password=$_POST["password"];
if ($password=="aaaaaa"){ $permission="yes";}
if ($permission=="yes"){ echo "es correcto";}
}
?>

ahora voy con el del archivo, pero sobre esta base no parece muy complicado
  #13 (permalink)  
Antiguo 12/01/2008, 09:10
 
Fecha de Ingreso: noviembre-2005
Mensajes: 222
Antigüedad: 19 años
Puntos: 2
Re: Acceso Con Contraseña

pues mira, si es algo complicado.

le meto este codigo pero solo coge el ultimo valor del archivo, debe ser cosa del foreach, que aunque me saca bien el valor en cada indice, la sentencia if solo la cumple al final.

<?php

if ($_POST["password"]=="") {
echo '<div id="content_main">';
echo '<p align="center"> Para acceder a esta sección debes introducir la contraseña:</p>';
echo '<form method="post" action="junta.php" class="pivot-search">';
echo '<p align="center">Contraseña: <input type="password" name="password" size="15"> ';
echo ' <input type="Submit" value="Enviar"></p>';
echo '</form>';
echo '<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>';
echo '</p>';
echo '</div>';
}

else {
$pass= $_POST['password'];
$password=file("password.txt");
foreach ( $password as $indice => $resultado) {
echo "tu elegiste ".$pass." y tenemos ".$resultado." en el indice ".$indice."<br>";
if ($resultado==$pass){
echo "<br><br> es correcto, el pass correcto es $resultado despues de elegir $pass";
}
}

}

?>
  #14 (permalink)  
Antiguo 12/01/2008, 11:12
 
Fecha de Ingreso: noviembre-2005
Mensajes: 222
Antigüedad: 19 años
Puntos: 2
De acuerdo Re: Acceso Con Contraseña

finalmente, y a falta de que un programador avanzado nos diga pq cojones no se cumple la condicion puedes usar este codigo siempre y cuando al final del password.txt pongas cualquier palabra que no sea un pass. Por ejemplo, "fin"

Código PHP:
<?php 

if ($_POST["password"]=="") {
    echo 
'<div id="content_main">';
    echo 
'<p align="center"> Para acceder a esta sección debes introducir la contraseña:</p>';
    echo 
'<form method="post" action="junta.php" class="pivot-search">';
    echo 
'<p align="center">Contraseña: <input type="password" name="password" size="15"> ';
    echo 
' <input type="Submit" value="Enviar"></p>';
    echo 
'</form>';
    echo 
'<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>';
    echo 
'</p>';
    echo 
'</div>';
}

else { 
    
$pass$_POST['password'];
    
$password=file("password.txt");
        foreach ( 
$password as $indice => $resultado) {
                if (
substr($resultado0, -1) == $pass )
                {
                    echo 
"<br><br> es correcto, el pass correcto es $resultado despues de elegir $pass";
                }
        }

}

?>
1 saludo
  #15 (permalink)  
Antiguo 12/01/2008, 13:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: Acceso Con Contraseña

No necesitas usar substr, compara directamente:
Código PHP:
if( trim$resultado ) == $pass ) {
    
// acceso correcto.

Saludos.
  #16 (permalink)  
Antiguo 12/01/2008, 13:51
 
Fecha de Ingreso: noviembre-2005
Mensajes: 222
Antigüedad: 19 años
Puntos: 2
Re: Acceso Con Contraseña

eso es lo que yo creia, pero solo coge el ultimo valor. con lo que he puesto yo, lo que hace es coger cualquier valor menos el ultimo, por lo que creo que dado el problema y sin saber la solucion es un buen parche
  #17 (permalink)  
Antiguo 12/01/2008, 15:51
(Desactivado)
 
Fecha de Ingreso: diciembre-2006
Mensajes: 529
Antigüedad: 17 años, 11 meses
Puntos: 11
Re: Acceso Con Contraseña

Hay un sistema muy desarrollado y esta muy bueno para gestióin de usuarios.
Puede informarte sobre el aquí:

http://www.artlantida.biz/laforma/lo...umentacion.htm

Se llama autentificator y es muy facil de usar.
Discontinuaron la descarga por una falla de seguridad pero yo lo tengo parchado.
Si te interesa me pasas tu email te lo mando.

Intenté subirlo a un servidor de D A T T A T E C que tengo contratado, pero... bue....
SAQUEN SUS CONCLUSIONES. Mejor por email...

Saludos!!

PD: es interesante como bloquean D A T T A T E C cuando lo escibo todo junto se reemplaza por *****. Raro, por qué está prohibido?
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 21:48.