Foros del Web » Programando para Internet » PHP »

problema con Formulario php&mysql para login

Estas en el tema de problema con Formulario php&mysql para login en el foro de PHP en Foros del Web. Hola! Estoy haciendo una página en la cual el objetivo es que el administrador pueda dar de alta usuarios en una bd y dependiendo si ...
  #1 (permalink)  
Antiguo 16/04/2009, 09:25
 
Fecha de Ingreso: marzo-2009
Mensajes: 26
Antigüedad: 15 años, 1 mes
Puntos: 0
Exclamación problema con Formulario php&mysql para login

Hola!
Estoy haciendo una página en la cual el objetivo es que el administrador pueda dar de alta usuarios en una bd y dependiendo si son clientes los envien a una pagina digamos x.html, y a los socios a otra digamos xx.php.
Logré hacer el login simple sin comparar si es usuario o socio nada más para que hiciera login sin direccionar ni nada pero pues tengo que poner eso así que agregué al formulario unos checkbox uno con socio y otro con cliente pero no supe como sacar el valor para que lo lea el php. Luego agregué un list/menu con las mismas opciones pero tampoco funcionó porque no supe como hacerlo.
Si alguien me pudiera ayudar...!! Quisiera saber como obtener el valor ya sea del checkbox o del list/menú (no sé cual sea mejor) y saber como direccionarlos.
Ah por cierto que en la bd todos los usuarios que se den de alta tienen un campo en el que se define si son socios o clientes.
Espero que me puedan ayudar. Aquí les dejó mi código.

HTML
Código:
<p>Iniciar sesión</p>
<form id="form1" name="form1" method="post" action="iniciarsesion.php">
  <p>Usuario
    <input type="text" name="usuario" id="usuario" />
  </p>
  <p>Password 
    <input type="text" name="password" id="password" />
</p>
  <p>
    Socio
    <input type="checkbox" name="socio" id="socio" />
  Cliente
  <input name="cliente" type="checkbox" id="cliente" checked="checked" />
  </p>
  <p>
    <select name="grupo" id="grupo">
      <option value="cliente">Cliente</option>
      <option value="socio">Socio</option>
    </select>
  </p>
  <p>
    <input type="submit" name="submit" id="submit" value="Submit" />
  </p>
</form>
PHP
Código:
<?
// Configura los datos de tu cuenta
$dbhost='mysql4.freehostia.com';
$dbusername='sarmir_login';
$dbuserpass='8864341';
$dbname='sarmir_login';

session_start();

// Conectar a la base de datos
mysql_connect ($dbhost, $dbusername, $dbuserpass);
mysql_select_db($dbname) or die("No se pudo establecer la conexión: " .mysql_error());

if ($_POST['id']) {
//Comprobacion del envio del nombre de usuario y password
$id=$_POST['id'];
$password=$_POST['password'];
if ($password==NULL) {
echo "La password no fue enviada";
}else{
$query = mysql_query("SELECT * FROM usuarios WHERE id = '$id' ") or die(mysql_error());
$data = mysql_fetch_array($query);
if($data['password'] != $password) {
echo "Login incorrecto";
}else{
$query = mysql_query("SELECT * FROM usuarios WHERE id = '$id' ") or die(mysql_error());
$row = mysql_fetch_array($query);
$_SESSION["s_id"] = $row['id'];
echo "Has sido logueado correctamente ".$_SESSION['s_id']." y puedes acceder al sitio.";
}
if($_SESSION['grupo'] == Socio){
echo '<br><a href=index.html>Ir a pagina de Clientes</a>';
}else{
echo '<br><a href=insertar.php>Ir a pagina de Socios</a>';

}
}
}  

?>
  #2 (permalink)  
Antiguo 16/04/2009, 09:40
Avatar de gusma62  
Fecha de Ingreso: julio-2008
Ubicación: Tepatitlán, Jalisco, Mexico
Mensajes: 167
Antigüedad: 15 años, 9 meses
Puntos: 6
Respuesta: problema con Formulario php&mysql para login

Si dices que tienes almacenado previamente si son socios o clientes, te tiene que devolver la consulta sql eso. te recomiendo que uses:
Código:
$row = mysql_fetch_array($query, MYSQL_ASSOC);
Te debuelve un array asociativo muy facil de manejar. Y con eso haces las comparaciones necesarias para tu fin, por ejemplo:

Código:
if($row[pass])=$_POST['pass']){    }
if($row[grupo])= 'cliente'){    }
 else if($row[grupo])= 'socio'){   }
Tambien noto que consultas varias veces, eso no es necesario, con una es suficiente.
  #3 (permalink)  
Antiguo 16/04/2009, 10:41
 
Fecha de Ingreso: marzo-2009
Mensajes: 26
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: problema con Formulario php&mysql para login

Ooh si tienes razon lo de las querys jeje ya le cambié el codigo a como me dijiste pero como le hago para que me redireccione una vez que compare si es usuario o socio?
mira asi me quedo el codigo:
Código:
<?
// Configura los datos de tu cuenta


session_start();

// Conectar a la base de datos
mysql_connect('mysql4.freehostia.com', 'xx','xxxx');
mysql_select_db("db") or die("No se pudo establecer la conexión: " .mysql_error());

if ($_POST['id']) {
//Comprobacion del envio del nombre de usuario y password
	$id=$_POST['id'];
	$password=$_POST['password'];
	if ($password==NULL) {
		echo "La password no fue enviada";
	}
	else{
		$query = mysql_query("SELECT * FROM usuarios WHERE id = '$id' ") or die(mysql_error());
		$data = mysql_fetch_array($query, MYSQL_ASSOC);
		if($data['password'] != $password) {
			echo "Login incorrecto";
		}
		else{
			$row = mysql_fetch_array($query, MYSQL_ASSOC);
			if($row[pass])= $_POST['pass']){
				if($row[grupo]= 'Cliente']{
					$_SESSION["s_id"] = $row['id'];
					echo "Has sido logueado correctamente ".$_SESSION['s_id'].
					}
					else if($row[grupo])= 'Socio'){
					echo "Muy bien!! ".$_SESSION['s_id'].					
					}
		}
	}
}  

?>
  #4 (permalink)  
Antiguo 16/04/2009, 10:47
 
Fecha de Ingreso: marzo-2009
Mensajes: 26
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: problema con Formulario php&mysql para login

otra cosa,
no se porque razón no me muestra nada de las instrucciones que dice
echo "... "
alguien sabe porque?
  #5 (permalink)  
Antiguo 16/04/2009, 11:04
Avatar de gusma62  
Fecha de Ingreso: julio-2008
Ubicación: Tepatitlán, Jalisco, Mexico
Mensajes: 167
Antigüedad: 15 años, 9 meses
Puntos: 6
Respuesta: problema con Formulario php&mysql para login

Prueba esto:

Código PHP:
<?
// Configura los datos de tu cuenta


session_start();

// Conectar a la base de datos
mysql_connect('mysql4.freehostia.com''xx','xxxx');
mysql_select_db("db") or die("No se pudo establecer la conexión: " .mysql_error());

if (
$_POST['id']) {
//Comprobacion del envio del nombre de usuario y password
    
$id=$_POST['id'];
    
$password=$_POST['password'];
    if (
$password==NULL) {
        echo 
"La password no fue enviada";
    }
    else{
        
$query mysql_query("SELECT * FROM usuarios WHERE id = '$id' ") or die(mysql_error());
        
$row mysql_fetch_array($queryMYSQL_ASSOC);
        
        if(
$row[pass]) != $_POST['pass']){ echo "Password Incorrecto!"; exit;}
        
        
$_SESSION["s_id"] = $row['id'];
        echo 
"Has sido logueado correctamente ".$_SESSION['s_id'].
        echo 
'<br>Redireccionando...';
        if(
$row[grupo]= 'Cliente']{
            echo 
'<script type="text/javascript"> function  redireccionar(){window.location="clientes.php";}setTimeout("redireccionar()", 3000); </script>';}
        else if(
$row[grupo])= 'Socio'){    
            echo 
'<script type="text/javascript"> function  redireccionar(){window.location="socios.php";}setTimeout("redireccionar()", 3000); </script>';}
    }

?>
Utilicé algo de javascript para redireccionar en un tiempo determinado, pues con php, tenemos que redireccionar inmediatamente sin mostrar ningun echo.

Avisas si funciona
  #6 (permalink)  
Antiguo 16/04/2009, 11:49
 
Fecha de Ingreso: marzo-2009
Mensajes: 26
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: problema con Formulario php&mysql para login

No me funciona gusma62, me deja la pagina iniciarsesion.php en blanco.
Mira ya lepuse el codio que me pasaste:

Código:
<?
// Configura los datos de tu cuenta
$dbhost='mysql4.freehostia.com';
$dbusername='sarmir_login';
$dbuserpass='8864341';
$dbname='sarmir_login';

session_start();

// Conectar a la base de datos
mysql_connect('mysql4.freehostia.com', 'sarmir_login','8864341');
mysql_select_db("sarmir_login") or die("No se pudo establecer la conexión: " .mysql_error());

if ($_POST['id']) {
//Comprobacion del envio del nombre de usuario y password
	$id1=$_POST['id'];
	$password1=$_POST['password'];
	if ($password==NULL) {
		echo "La password no fue enviada";
	}
	else{
		$query = mysql_query("SELECT * FROM usuarios WHERE id = '$id' ") or die(mysql_error());
		$row = mysql_fetch_array($query, MYSQL_ASSOC);
		if($row['password'] != $_POST[password1]) {
			echo "Password incorrecto";
			exit;
		}
			
	if($row[password])= $_POST['password']){
					$_SESSION["s_id"] = $row['id'];	
					echo 'Has sido logueado correctamente '.$_SESSION['s_id']. ;
					echo '<br>Redireccionando...';
					if($row[Grupo]= 'Cliente']{
					     echo '<script type="text/javascript"> function  redireccionar(){window.location="clientes.php";}setTimeout("redireccionar()", 3000); </script>';} 
					}
					else if($row[Grupo])= 'Socio'){
            echo '<script type="text/javascript"> function  redireccionar(){window.location="socios.php";}setTimeout("redireccionar()", 3000); </script>';} 				
					}
	}
}  

?>
haber si no le sobra algo
  #7 (permalink)  
Antiguo 16/04/2009, 12:15
Avatar de gusma62  
Fecha de Ingreso: julio-2008
Ubicación: Tepatitlán, Jalisco, Mexico
Mensajes: 167
Antigüedad: 15 años, 9 meses
Puntos: 6
Respuesta: problema con Formulario php&mysql para login

En blanco?? ningun error te sale? Eso es raro.
¿Si tienes activado php?

Otra cosa sospechosa es el nombre de host:
mysql4.freehostia.com
si es esa en realidad??

si estas seguro que lo anterior lo tienes correcto, entonces el problema está en

if ($_POST['id']) {

pues si no se cumple esa condicion, no pasará nada.
  #8 (permalink)  
Antiguo 16/04/2009, 12:26
 
Fecha de Ingreso: marzo-2009
Mensajes: 26
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: problema con Formulario php&mysql para login

Si todo está bien, tenia mal en el formulario html el valor que enviaba pero ya lo corregi y de todas maneras me sale en blanco sin error ni nada mira
codigo316.freehostia.com/iniciosesion.html

Pero estaba pensando que si estará bien como tengo el formulario, ya que lo tengo con un checkbox y la verdad no sé muy bien si los estoy usando correctamente, te dejo el codigo:
Código HTML:
<body>
<p>Iniciar sesión</p>
<form id="form1" name="form1" method="post" action="iniciarsesion.php">
  <p>Usuario
    <input type="text" name="id" id="id" />
  </p>
  <p>Password 
    <input type="text" name="password" id="password" />
</p>
  <p>
    Socio
    <input name="socio" type="checkbox" id="socio" value="socio" />
  Cliente
  <input name="cliente" type="checkbox" id="cliente" value="cliente" checked="checked" />
  </p>
  <p>
    <input type="submit" name="submit" id="submit" value="Submit" />
  </p>
</form>
</body> 
Muchas gracias =)
  #9 (permalink)  
Antiguo 16/04/2009, 12:38
Avatar de gusma62  
Fecha de Ingreso: julio-2008
Ubicación: Tepatitlán, Jalisco, Mexico
Mensajes: 167
Antigüedad: 15 años, 9 meses
Puntos: 6
Respuesta: problema con Formulario php&mysql para login

Prueba:
Código PHP:
<?
// Configura los datos de tu cuenta
$dbhost='mysql4.freehostia.com';
$dbusername='sarmir_login';
$dbpass='8864341';
$dbname='sarmir_login';

session_start();

// Conectar a la base de datos
mysql_connect($dbhost$dbusername,$dbpass);
mysql_select_db("sarmir_login") or die("No se pudo establecer la conexión: " .mysql_error());

if (!empty(
$_POST['id'])) {
//Comprobacion del envio del nombre de usuario y password
    
$id=$_POST['id'];
    
$password=$_POST['password'];
    if (
$password==NULL) {
        echo 
"La password no fue enviada";
    }
    else{
        
$query mysql_query("SELECT * FROM usuarios WHERE id = '$id' ") or die(mysql_error());
        
$row mysql_fetch_array($queryMYSQL_ASSOC);
        if(
$row['password'] != $_POST['password']) {
            echo 
"Password incorrecto";
            exit;
        }
            
    if(
$row[password])= $_POST['password']){
                    
$_SESSION["s_id"] = $row['id'];    
                    echo 
'Has sido logueado correctamente '.$_SESSION['s_id']. ;
                    echo 
'<br>Redireccionando...';
                    if(
$row[Grupo]= 'Cliente']{
                         echo 
'<script type="text/javascript"> function  redireccionar(){window.location="clientes.php";}setTimeout("redireccionar()", 3000); </script>';} 
                    }
                    else if(
$row[Grupo])= 'Socio'){
            echo 
'<script type="text/javascript"> function  redireccionar(){window.location="socios.php";}setTimeout("redireccionar()", 3000); </script>';}                 
                    }
    }
}  

else echo 
"Problema con la variable id";

?>

ojo con if (!empty($_POST['id'])) {
  #10 (permalink)  
Antiguo 16/04/2009, 12:53
 
Fecha de Ingreso: marzo-2009
Mensajes: 26
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: problema con Formulario php&mysql para login

mm ya lo cheque y nada sigue saliendo en blanco. Cheque con una opcion que me da el editor de archivos del host, el código y me sale:
Código 200:
Ver original
  1. Error: the XML response that was returned from the server is invalid.
  2. Received:
Pero igual no se que es eso jeje.
Para que sirve el !empty?
Para que se ejecute mientras el id no este vacio?
  #11 (permalink)  
Antiguo 16/04/2009, 13:04
Avatar de gusma62  
Fecha de Ingreso: julio-2008
Ubicación: Tepatitlán, Jalisco, Mexico
Mensajes: 167
Antigüedad: 15 años, 9 meses
Puntos: 6
Respuesta: problema con Formulario php&mysql para login

Ni idea del codigo que te sale :P

El !empty es para exactamente lo que dices.

Prueba:
Código PHP:
<?
session_start
();
// Configura los datos de tu cuenta
$dbhost='mysql4.freehostia.com';
$dbusername='sarmir_login';
$dbpass='8864341';
$dbname='sarmir_login';

echo 
"Hola, vamos por buen camino";

// Conectar a la base de datos
if(!mysql_connect($dbhost$dbusername,$dbpass)){ echo "Problema al conectarse"; exit;}
mysql_select_db("sarmir_login") or die("No se pudo establecer la conexión: " .mysql_error());

if (!empty(
$_POST['id'])) {
//Comprobacion del envio del nombre de usuario y password
    
$id=$_POST['id'];
    
$password=$_POST['password'];
    if (
$password==NULL) {
        echo 
"La password no fue enviada";
    }
    else{
        
$query mysql_query("SELECT * FROM usuarios WHERE id = '$id' ") or die(mysql_error());
        
$row mysql_fetch_array($queryMYSQL_ASSOC);
        if(
$row[password] != $_POST['password']) {
            echo 
"Password incorrecto";
            exit;
        }
             
    if(
$row[password] == $_POST['password']){
                    
$_SESSION["s_id"] = $row[id];    
                    echo 
'Has sido logueado correctamente '.$_SESSION['s_id'];
                    echo 
'<br>Redireccionando...';
                    if(
$row[Grupo] == 'Cliente'){
                         echo 
'<script type="text/javascript"> function  redireccionar(){window.location="clientes.php";}setTimeout("redireccionar()", 3000); </script>';} 
                    }
                    else if(
$row[Grupo] == 'Socio'){
            echo 
'<script type="text/javascript"> function  redireccionar(){window.location="socios.php";}setTimeout("redireccionar()", 3000); </script>';}                 
                    }
    }
  

else echo 
"Problema con la variable id";

?>
Si no se muestra "Hola, vamos por buen camino" es que existe algun error con el php

Última edición por gusma62; 16/04/2009 a las 13:38
  #12 (permalink)  
Antiguo 16/04/2009, 13:31
 
Fecha de Ingreso: marzo-2009
Mensajes: 26
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: problema con Formulario php&mysql para login

parece que este codigo es el problema:

Código PHP:
// Conectar a la base de datos
if(!mysql_connect($dbhost$dbusername,$dbpass)){ echo "Problema al conectarse"; exit;}
mysql_select_db("sarmir_login") or die("No se pudo establecer la conexión: " .mysql_error());

if (!empty(
$_POST['id'])) {
//Comprobacion del envio del nombre de usuario y password
    
$id=$_POST['id'];
    
$password=$_POST['password'];
    if (
$password==NULL) {
        echo 
"La password no fue enviada";
    }
    else{
        
$query mysql_query("SELECT * FROM usuarios WHERE id = '$id' ") or die(mysql_error());
        
$row mysql_fetch_array($queryMYSQL_ASSOC);
        if(
$row['password'] != $_POST['password']) {
            echo 
"Password incorrecto";
            exit;
        }
            
    if(
$row[password])= $_POST['password']){
                    
$_SESSION["s_id"] = $row['id'];    
                    echo 
'Has sido logueado correctamente '.$_SESSION['s_id']. ;
                    echo 
'<br>Redireccionando...';
                    if(
$row[Grupo]= 'Cliente']{
                         echo 
'<script type="text/javascript"> function  redireccionar(){window.location="clientes.php";}setTimeout("redireccionar()", 3000); </script>';} 
                    }
                    else if(
$row[Grupo])= 'Socio'){
            echo 
'<script type="text/javascript"> function  redireccionar(){window.location="socios.php";}setTimeout("redireccionar()", 3000); </script>';}                 
                    }
    }
}  

else echo 
"Problema con la variable id"
le puse el codigo tal cualmelo pusiste y no paso nada y le quite ese codigo y si me aparecio:
Hola, vamos por buen camino

:(
  #13 (permalink)  
Antiguo 16/04/2009, 13:43
Avatar de gusma62  
Fecha de Ingreso: julio-2008
Ubicación: Tepatitlán, Jalisco, Mexico
Mensajes: 167
Antigüedad: 15 años, 9 meses
Puntos: 6
Respuesta: problema con Formulario php&mysql para login

Revise detalladamente el codigo y tenia como 10 errores :P
prueba ahori si con este:

Código PHP:
<?
session_start
();
// Configura los datos de tu cuenta
$dbhost='mysql4.freehostia.com';
$dbusername='sarmir_login';
$dbpass='8864341';
$dbname='sarmir_login';

echo 
"Hola, vamos por buen camino";

// Conectar a la base de datos
if(!mysql_connect($dbhost$dbusername,$dbpass)){ echo "Problema al conectarse"; exit;}
mysql_select_db("sarmir_login") or die("No se pudo establecer la conexión: " .mysql_error());

if (!empty(
$_POST['id'])) {
//Comprobacion del envio del nombre de usuario y password
    
$id=$_POST['id'];
    
$password=$_POST['password'];
    if (
$password==NULL) {
        echo 
"La password no fue enviada";
    }
    else{
        
$query mysql_query("SELECT * FROM usuarios WHERE id = '$id' ") or die(mysql_error());
        
$row mysql_fetch_array($queryMYSQL_ASSOC);
        if(
$row[password] != $_POST['password']) {
            echo 
"Password incorrecto";
            exit;
        }
             
    if(
$row[password] == $_POST['password']){
                    
$_SESSION["s_id"] = $row[id];    
                    echo 
'Has sido logueado correctamente '.$_SESSION['s_id'];
                    echo 
'<br>Redireccionando...';
                    if(
$row[Grupo] == 'Cliente'){
                         echo 
'<script type="text/javascript"> function  redireccionar(){window.location="clientes.php";}setTimeout("redireccionar()", 3000); </script>';} 
                    }
                    else if(
$row[Grupo] == 'Socio'){
            echo 
'<script type="text/javascript"> function  redireccionar(){window.location="socios.php";}setTimeout("redireccionar()", 3000); </script>';}                 
                    }
    }
  

else echo 
"Problema con la variable id";

?>
espero ya funcione
  #14 (permalink)  
Antiguo 17/04/2009, 09:03
 
Fecha de Ingreso: marzo-2009
Mensajes: 26
Antigüedad: 15 años, 1 mes
Puntos: 0
Respuesta: problema con Formulario php&mysql para login

Oralee sii si me funciono =) nada mas checare el javascript para ke me redireccione porque nada mas aparece redireccionando pero no se redirecciona jeje
pero ya con lo que me ayudaste wooow :P
muchas gracias gusma62
  #15 (permalink)  
Antiguo 17/04/2009, 11:30
 
Fecha de Ingreso: marzo-2009
Mensajes: 26
Antigüedad: 15 años, 1 mes
Puntos: 0
De acuerdo Respuesta: problema con Formulario php&mysql para login

Ya gusma62 =)
sorry jeje tu código estaba bienlo que tenía mal era que puse mal en el codigo
$row[grupo] y era Grupo jejeje pero ya funciona a la perfeccion!! =)
muchisimas gracias
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 00:45.