Foros del Web » Programando para Internet » PHP »

loguin :D

Estas en el tema de loguin :D en el foro de PHP en Foros del Web. Buenas amigos tengo una duda, estoy haciendo un logueo, y no me lo acaba de hacer correctamente, ya que me pasa cualquier variable que le ...
  #1 (permalink)  
Antiguo 27/01/2009, 09:46
 
Fecha de Ingreso: septiembre-2007
Mensajes: 21
Antigüedad: 16 años, 7 meses
Puntos: 0
loguin :D

Buenas amigos tengo una duda, estoy haciendo un logueo, y no me lo acaba de hacer correctamente, ya que me pasa cualquier variable que le ponga de usuario, o si lo pongo sin usuario tb me pasa la variable vacia claro tengo dos paginas

la del loguin:

Código PHP:
<?PHP
session_start 
();
$connexio=mysql_connect("localhost","root","")
or die (
"No se ha podido conectar");

mysql_select_db("mediacion"$connexio)
or die (
"No se ha podido selecciona la base de datos");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Mediacion - Introduce Usuario</title>
<style type="text/css">
<!--
body {
    background-color: #FFF;
}
-->
</style></head>
<body>
<?php
if(isset($_REQUEST['user'])){
$user $_REQUEST['user'];
$pass $_REQUEST['pass'];
$sql "SELECT user, pass from usuarios Where user = '$user' and pass = '$pass'";
echo 
$sql;
$res mysql_query($sql,$connexio) or die ("error en el login");

if(
$res ==1){
$_SESSION['var']= $user;
}
$_SESSION['var']= $user;
header("Location: panel.php");

}else{
?> 

<form id="form1" name="login" method="post" action="index.php">
  <table width="200" border="0" align="center" cellspacing="0">
    <tr bgcolor="#FFFFFF">
      <td><strong>Usuario:</strong></td>
      <td><input type="text" name="user" id="user" /></td>
    </tr>
    <tr bgcolor="#FFFFFF">
      <td><strong>Password: </strong></td>
      <td><label>
        <input type="text" name="pass" id="pass" />
      </label></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><label> 
        <br />
        <input type="submit" name="envia" id="envia" value="Enviar" />
        <br />
      </label></td>
    </tr>
  </table>
</form>
<?php
}
?>
</body>
</html>
Y la de la verificación

Código PHP:
<?php
session_start 
();

$connexio=mysql_connect("localhost","root","")
or die (
"No se ha podido conectar");

mysql_select_db("mediacion"$connexio)
or die (
"No se ha podido selecciona la base de datos");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
</head>
<?php
if (isset($_SESSION['var'])) {
echo 
"Bienvenido <b> ".$_SESSION['var']."</B>, gracias por la visita!";
}else{
echo 
"Tu no estas autentificado dirígete a login.php o registrate en register.php";
echo 
$_SESSION['var'];

?>
<body>
</body>
</html>
Como puedo hacer para que me de error si no introduzo usuario o si no coincide lo que escribo con lo que ahi en la BD me pete y no me pase la variable?

saludos amigos!!!
  #2 (permalink)  
Antiguo 27/01/2009, 15:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Respuesta: loguin :D

Pues el problema es que tu compruebas el resultado de mysql_query, este SIEMPRE va a ser true a menos que tu SQL sea incorrecto, para arreglar tu login debes de contar las filas, usando mysql_num_rows para ver cuantas filas te devolvio tu SQL y en base a eso permitir / denegar el acceso.

Saludos
  #3 (permalink)  
Antiguo 28/01/2009, 02:41
 
Fecha de Ingreso: septiembre-2007
Mensajes: 21
Antigüedad: 16 años, 7 meses
Puntos: 0
Respuesta: loguin :D

Cita:
Iniciado por GatorV Ver Mensaje
Pues el problema es que tu compruebas el resultado de mysql_query, este SIEMPRE va a ser true a menos que tu SQL sea incorrecto, para arreglar tu login debes de contar las filas, usando mysql_num_rows para ver cuantas filas te devolvio tu SQL y en base a eso permitir / denegar el acceso.

Saludos
Gracias men!!!!!!

lo he echo haciendo lo siguiente:

Código PHP:
<?php
//Funcion para comprobar un usuario
        
if(isset($_REQUEST['user'])){
        
            
//Variables    
            
$user $_REQUEST['user'];
            
$pass $_REQUEST['pass'];
            
$sql "SELECT user, pass from usuarios Where user = '$user' and pass = '$pass'";
            
//Fin Variables
        
        //Consulta
        
$res mysql_query($sql,$connexio) or die ("error en el login");
        
//Fin Consulta
        
        //Variable para ver si devuelve algun valor la consulta
        
$nfilas mysql_num_rows($res);
        
//Fin Variable para ver si devuelve algun valor la consulta

        //Comprobar si devuelve algun valor la consulta, si devuelve le dejamos pasar        
        
if ($nfilas>0){
            
$_SESSION['var']= $user;
            
header("Location: panel.php");
                      }
        
//Fin Comprobar si devuelve algun valor la consulta, si devuelve le dejamos pasar        
    
        // Comprobar si no devuelve ningun valor en la consulta, si no dar mensaje error
        
if ($nfilas==0){
            echo 
"No has introducido user, por favor Identificate :)";
                      }
         
// Comprobar si no devuelve ningun valor en la consulta, si no dar mensaje error

}else{
comprobando el mysql_num_rows!!!

gracias compañero :D
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:55.