Foros del Web » Programando para Internet » PHP »

ayuda con login

Estas en el tema de ayuda con login en el foro de PHP en Foros del Web. Hola, tengo un problema, estoy desarrollando un sitio con php y mysql. Lo que pasa es que tengo un formulario de registro de usuarios, al ...
  #1 (permalink)  
Antiguo 14/06/2008, 12:03
 
Fecha de Ingreso: junio-2008
Mensajes: 52
Antigüedad: 15 años, 10 meses
Puntos: 0
ayuda con login

Hola, tengo un problema, estoy desarrollando un sitio con php y mysql. Lo que pasa es que tengo un formulario de registro de usuarios, al registrarse se les envia un e-mail para que activen su cuenta todo esto funciona perfectamente, tengo en mi bd una columna llamada 'estado' que esta en 1 al registrarse y al activar el link se actualiza en 0.
Lo que quiero hacer es restringir a los usuarios que estan en estado 1 que ingresen al sitio hasta que confirmen he intentado de varias maneras y no puedo solo me autentifica el primer registro les dejo mi formulario de login

Código PHP:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Comiendo en morelia</title>
<link href="styles.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<body>
<div id="header">
<h1 class="logo"></h1>
<div id="login">
<?php require_once('includes/log.php'); ?>
</div>
</div>        
<div id="contenido"> 
<div id="content">
    <center>
     <form action="login1.php" method="post" name="login">// aqui llamo login1.php que es el que procesa el formulario
      <table width="310" border="1">
      <tr><td width="150">Nombre de Usuario:</td><td width="144"> 
<input type="text" name="username" autocomplete="off" /></td>
        </tr>
       <tr>
       <td>Password:</td>
         <td><input type="password" name="password" autocomplete="off" /></td>
        </tr>
        <tr>
        <td colspan="2"><input type="submit" name="ingresar" value="Entrar" />
           <input name="reset" type="reset" value="Borrar Todo" /></td>
          </tr>
                      </table>
                 </form>
                </center>
                </div>
</body>
</html>
en el action del formulario tengo login1.php que pongo a continuacion:

Código PHP:
<?php
php ob_start
();
require_once(
"config.php"//aqui incluyo la conexion a BD
// creo un juego de registros seleccionando la columna estado
mysql_select_db($database_comiendo$comiendo);
$query_Recordset "SELECT usuarios.estado FROM usuarios";
$Recordset mysql_query($query_Recordset$comiendo) or die(mysql_error());
$row_Recordset mysql_fetch_assoc($Recordset);
$totalRows_Recordset mysql_num_rows($Recordset);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Comiendo en morelia</title>
<link href="styles.css" rel="stylesheet" type="text/css" media="screen" />
</head>
<body>
<div id="header">
            <h1 class="logo"></h1>
            <div id="login">
                <?php require_once('includes/log.php'); ?> 
            </div>
</div>        

<div id="contenido">

<?php
                
                               $estado
='1'
                               
$username $_POST['username'];
                
$password $_POST['password'];
                if(isSet(
$_POST['ingresar'])) {
                                if((
$row_Recordset['estado']) == $estado){
                                  echo 
'tienes que confirmar tu registro al email que te mandamos'
                                     } 
//aqui revisamos si confirmo su email
                
if(($username == "") or ($password == "")) {
                    
                             echo 
'<p>No haz escrito tus datos, por favor escribe tus datos para poder entrar a la Web.<br />' .  $error '</p>';
                    exit;
                } 
                else {
                    
$sqlnoreguser mysql_query("SELECT * FROM `usuarios` WHERE user='" $_POST['username'] . "'");
                    if(!
mysql_num_rows($sqlnoreguser)) {
                    echo 
'el nick que escribiste(<b><i>' . @$_POST['usuario'] . '</i></b>)no es correcto<br />' $error '';
                    exit;
                }
                    
$sqlnoregpass mysql_query("SELECT * FROM `usuarios` WHERE pass='" $_POST['password'] . "'");
                    if(!
mysql_num_rows($sqlnoregpass)) {
                    echo 
'Contrase&ntilde;a inv&aacute;lida, por favor revisa la contrase&ntide;a que escribiste<br />' $error '';
                    exit;
                }
                    
$sqllogin mysql_query("SELECT * FROM usuarios WHERE user='$username' AND pass='$password'");
                    if(
$user_ok mysql_fetch_array($sqllogin)) {
                    
session_register("usuario"); //Registramos la sesion de usuario 
                    
session_register("idusuario"); //Registramos el ID de usuario
                    
session_register("nivel");  //Registramos el nivel que tendra el usuario 
                    // Le damos los valores a las variables
                    
$_SESSION[usuario] = $user_ok["user"]; //damos el nick a la variable usuario
                    
$_SESSION[id] = $user_ok["idusuario"]; //damos la id del user a la variable idusuario
                    
$_SESSION['nivel'] = $user_ok["nivel"]; //damos el nivel del usuario a la variable nivel
                
}
                 else {
                echo 
'Datos incorrectos. <br />' $error '';
                }
                }        
                
mysql_free_result($sqllogin);
                echo 
'<script language="JavaScript">window.location.href = "index1.php";</script>';
                } 
                else {
                echo 
'Ha ocurrido un error mientras ingresabas, por favor int&eacute;ntalo de nuevo.<br />' $error '';
                }    
mysql_close(); 

?>                
</div>
</html>
<?php ob_flush(); ?>

Aqui es donde proceso el formulario mi problema es que solamente revisa el estado de el primer registro
Código PHP:
  if(($row_Recordset['estado']) == $estado){
                                  echo 
'tienes que confirmar tu registro al email que te mandamos'
                                     } 
para que entiendan mejor tengo la tabla usuarios
id user password estado
1 juan ***** 1
2 Alejandra ***** 0
3 Roberto ***** 0
4 Jose ***** 1

el problema es que si juan tiene estado uno nadie puede ingresar a la tabla pero si tiene 0 todos pueden ingresar solamente me identifica el primer registro y yo lo que quiero es que cunado se logueo alguien solo busque el estado de su registro.
Alguna idea se agradece.
  #2 (permalink)  
Antiguo 14/06/2008, 12:33
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: ayuda con login

Hola

mirate este post, en el se explica como evitar lo que dices

http://www.forosdelweb.com/f18/aport...e-mail-564126/

Un saludo
  #3 (permalink)  
Antiguo 14/06/2008, 19:36
 
Fecha de Ingreso: junio-2008
Mensajes: 52
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: ayuda con login

Hola gracias por la respuesta ya revise el link que me dejaste y si viene un ejemplo de lo que busco pero lo estuve probando y no me funciona me sigue saliendo igual que antes . Alguien tendra alguna idea de como lo podre hacer . Saludos¡
  #4 (permalink)  
Antiguo 14/06/2008, 19:53
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: ayuda con login

He estado haciendo pruebas en local y va perfecto tu codogo

haz un echo de esta variable a ver que te imprime en pantalla

Código PHP:
echo $row_Recordset['estado'];   




//y en esta linea tuya
$row_Recordset mysql_fetch_assoc($Recordset);

//cambiala por esta
$row_Recordset mysql_fetch_array($Recordset); 
  #5 (permalink)  
Antiguo 14/06/2008, 22:51
 
Fecha de Ingreso: junio-2008
Mensajes: 52
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: ayuda con login

Cambie la linea que me indicaste e imprimi la variable $row_recordset['estado'] y siempre me da cero, sigue el mismo problema si en la base de datos le cambio el valor a 1 al primer registro me imprime 1. Siempre me imprime el valor del primer registro.
Sigo buscando en foros y leyendo manuales pero no encuentro alguna solucion no soy muy experto en php tengo un nivel medio, si m pudieras dar otra sugerencia.
Y gracias por la ayuda.
  #6 (permalink)  
Antiguo 15/06/2008, 04:00
Avatar de jaronu  
Fecha de Ingreso: febrero-2008
Mensajes: 2.183
Antigüedad: 16 años, 2 meses
Puntos: 52
Respuesta: ayuda con login

$query_Recordset = "SELECT usuarios.estado FROM usuarios"

añadele un where a esta consulta

$username = $_POST['username'];

$query_Recordset = "SELECT usuarios.estado FROM usuarios WHERE user = '$username'"

Última edición por jaronu; 15/06/2008 a las 04:07
  #7 (permalink)  
Antiguo 15/06/2008, 13:09
 
Fecha de Ingreso: junio-2008
Mensajes: 52
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: ayuda con login

Hola ya agregue la clausula WHERE a mi consulta como dijiste y ya se resolvio el problema, Te lo agradezco me fuiste de gran ayuda.
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 15:21.