Foros del Web » Programando para Internet » PHP »

Ayuda: Validacion usuario PHP+MySQL

Estas en el tema de Ayuda: Validacion usuario PHP+MySQL en el foro de PHP en Foros del Web. Buenas, tengo un problema al validar un usuario en una base de datos. Este es el codigo de validacion: Código PHP: <?php session_start ();  ?> <? ...
  #1 (permalink)  
Antiguo 28/11/2009, 08:52
 
Fecha de Ingreso: enero-2005
Mensajes: 170
Antigüedad: 19 años, 3 meses
Puntos: 0
Ayuda: Validacion usuario PHP+MySQL

Buenas, tengo un problema al validar un usuario en una base de datos. Este es el codigo de validacion:

Código PHP:
<?php session_start(); ?>
<?
if (!isset($_SESSION["user"]))//si no hi hha cap sessió iniciada

{
    if (
$_POST["login"])
//llegim les dades del formulari login i mirem si existeix a la taula Administradors de la nostra BD.

    
{
        
//$db=new DB;
        //$db->connect();
        
$conn mysql_connect("localhost","xarxes","3A2Mu") or die ("Error!");
        
mysql_select_db("x71",$conn) or die ("Error");
        
        
$usuari $_POST["nom"];
        
$passwd $_POST["pass"];
        
        
$cadSQL mysql_query("SELECT * FROM Usuaris WHERE Nom ='$usuari' and Password='$passwd'");
        
$dades mysql_query($cadSQL);
        
$linia mysql_fetch_assoc($dades);
        
$n mysql_num_rows($dades);
        
//$resultat=$db->execSQL($sql);
        
if($n == 0)
        {
            
$_SESSION["login"] = false;
            echo 
"<script language='JavaScript'> alert('User incorrect');</script>"
            echo 
"<SCRIPT LANGUAGE='JavaScript'> location.href='login.php; </SCRIPT>";
        }
        else{
            
$_SESSION["login"]=true;
            echo 
"<SCRIPT LANGUAGE='JavaScript'> location.href='menu.php; </SCRIPT>";
        }
        
    }
}
?>


Y al darle a aceptar en la ventana de login me salta este error:

Código PHP:
Warningmysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/xarxes/x71/web/xhtml/validate.php on line 20

Warning
mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/xarxes/x71/web/xhtml/validate.php on line 21 

Seguido del alert "Usuario incorreto", y el usuario SI que existe.

Alguna ayudita??

Gracias!
  #2 (permalink)  
Antiguo 28/11/2009, 09:02
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: Ayuda: Validacion usuario PHP+MySQL

Bueno lo primero es "limpiar" esas variables $usuari $password, porque te pueden colar una Inyeccion SQL y mandarte todo a la mierda, coloca este codigo al inicio de tu pagina:

Código PHP:
//Evitar SQL Injection (Seguridad)
foreach ($_POST as $key => $value) { $_POST[$key] = mysql_real_escape_string($value); $_POST[$key]=str_ireplace("concat_","concat-",$_POST[$key]); $_POST[$key]=str_ireplace("_concat","-concat",$_POST[$key]);} 
foreach (
$_GET as $key => $value) { $_GET[$key] = mysql_real_escape_string($value); $_GET[$key]=str_ireplace("concat_","concat-",$_GET[$key]); $_GET[$key]=str_ireplace("_concat","-concat",$_GET[$key]); } 

Luego empieza por hacer un:

Código PHP:
echo $cadSQL
Y probar dicha sentencia en phpMyAdmin por ejemplo a ver que error de Mysql te da.
  #3 (permalink)  
Antiguo 28/11/2009, 09:08
 
Fecha de Ingreso: enero-2005
Mensajes: 170
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Ayuda: Validacion usuario PHP+MySQL

Gracias por responder.

No tengo mucha idea.. Donde pongo el echo??
  #4 (permalink)  
Antiguo 28/11/2009, 09:16
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: Ayuda: Validacion usuario PHP+MySQL

Espera, me confundi...... ahora que veo, tienes dos mysql_query.......

Prueba a cambiar:

Código PHP:
$cadSQL mysql_query("SELECT * FROM Usuaris WHERE Nom ='$usuari' and Password='$passwd'"); 
Por esto

Código PHP:
$cadSQL "SELECT * FROM Usuaris WHERE Nom ='$usuari' and Password='$passwd'"

Y si queires justo despues de eso el:

Código PHP:
echo $cadSQL
  #5 (permalink)  
Antiguo 28/11/2009, 09:22
 
Fecha de Ingreso: enero-2005
Mensajes: 170
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Ayuda: Validacion usuario PHP+MySQL

Mira, no sé lo que he tocado pero no me salen los errores. Sin embargo sigue sin funcionar. Cuando hago el summit del formulario de login no hace nada. Creo que el error está al pasar los datos del summit al formulario de validacion. Te dejo el codigo del login para ver si ves algo mal:

Código PHP:
<? include("index.php");
unset(
$_SESSION['user']);
?>
<div class="main" id="main">
    <p class="titol">Login</p>
        <form name="login" method="post" action="menu.php">
                  <table width="50%">
                   <tr>
                     <td>Username:</td>
                     <td><input name="nom" type="text" /></td>
                    </tr>
                    <tr>
                      <td>Password:</td>
                      <td><input name="pass" type="password" /></td>
                    </tr>                
                  </table>
                <p/>
                    <input type="submit" name="login" value="ACCEPTAR"/>
                </form>
        </div>
       </body>
</html>
  #6 (permalink)  
Antiguo 28/11/2009, 09:29
 
Fecha de Ingreso: mayo-2009
Mensajes: 200
Antigüedad: 14 años, 11 meses
Puntos: 7
Respuesta: Ayuda: Validacion usuario PHP+MySQL

revisa siempre tus variables

$cadSQL = mysql_query("SELECT * FROM Usuaris WHERE Nom ='$usuari' and Password='$passwd'");

usas mayusculas en la BD
  #7 (permalink)  
Antiguo 28/11/2009, 09:35
 
Fecha de Ingreso: enero-2005
Mensajes: 170
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Ayuda: Validacion usuario PHP+MySQL

Cita:
Iniciado por arcanisgk1 Ver Mensaje
revisa siempre tus variables

$cadSQL = mysql_query("SELECT * FROM Usuaris WHERE Nom ='$usuari' and Password='$passwd'");

usas mayusculas en la BD
Esos son los campos que tiene la BD! Están escritos así, en mayúsculas.
  #8 (permalink)  
Antiguo 28/11/2009, 09:44
 
Fecha de Ingreso: mayo-2009
Mensajes: 200
Antigüedad: 14 años, 11 meses
Puntos: 7
Respuesta: Ayuda: Validacion usuario PHP+MySQL

que no le falta los ID a loggin???
<form name="form2" method="post" action="entrar.php" id="form2">
<p><span>Nick Name: <input name="username" type="text" id="username" /></span></p>
<p><span>Password: <input name="password" type="password" id="password" /></span></p>
<p><span><input type="submit" name="Submit" value="Entrar a Partida" /></span></p>
</form>
  #9 (permalink)  
Antiguo 28/11/2009, 09:46
 
Fecha de Ingreso: mayo-2009
Mensajes: 200
Antigüedad: 14 años, 11 meses
Puntos: 7
Respuesta: Ayuda: Validacion usuario PHP+MySQL

otra pregunta por que regresas unset($_SESSION['user']);
user si dices que no se llama asi ??
  #10 (permalink)  
Antiguo 28/11/2009, 09:50
 
Fecha de Ingreso: enero-2005
Mensajes: 170
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Ayuda: Validacion usuario PHP+MySQL

Los ID en teoria no hacen falta. Cojo el valor con la etiqueta input name.

(tengo otro formulario y asi funciona).

No entiendo tu segundo post.

Realmente no tengo ni idea que significa

Código PHP:
isset($_SESSION["user"
Ese "user" no se que quiere decir..

Gracias!
  #11 (permalink)  
Antiguo 28/11/2009, 09:57
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: Ayuda: Validacion usuario PHP+MySQL

¿Como estas ejecutando el php? ¿Tienes WAMP instalado o algo similar? Deberia venir con el phpmyadmin, un script para trabajar con la base de datos.

Si haces el echo $cadSQL; te debe salir la sentencia MYSQL que ejecutas, eso lo copias te vas al phpmyadmin (o algun programa para gestionar bases de datos como mysql-front) y lo ejecutas a ver que error te da
  #12 (permalink)  
Antiguo 28/11/2009, 10:01
 
Fecha de Ingreso: enero-2005
Mensajes: 170
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Ayuda: Validacion usuario PHP+MySQL

Estoy trabajando contra un servidor Apache (en la universidad).

Y si, la BD la gestiono con el Phpmyadmin


He puesto el echo donde me has dicho, pero sigue sin funcionar nada y sin dar ningun error... :(

Gracias
  #13 (permalink)  
Antiguo 28/11/2009, 10:11
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: Ayuda: Validacion usuario PHP+MySQL

Cita:
Iniciado por albertpg Ver Mensaje
Estoy trabajando contra un servidor Apache (en la universidad).

Y si, la BD la gestiono con el Phpmyadmin


He puesto el echo donde me has dicho, pero sigue sin funcionar nada y sin dar ningun error... :(

Gracias
tu me lees lo que escribi?? ¿no salio nada con ese echo? copialo y ejecutalo en phpmyadmin...................
  #14 (permalink)  
Antiguo 28/11/2009, 10:14
 
Fecha de Ingreso: enero-2005
Mensajes: 170
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Ayuda: Validacion usuario PHP+MySQL

Que quieres decir que si te leo lo que escribes. Así es como he puesto el echo, y no me lo hace:

Código PHP:
<?php session_start(); ?>
<?
if (!isset($_SESSION["user"]))//si no hi hha cap sessió iniciada

{
    if (
$_POST["login"])
//llegim les dades del formulari login i mirem si existeix a la taula Administradors de la nostra BD.

    
{
        
//$db=new DB;
        //$db->connect();
        
$conn mysql_connect("localhost","xarxes","3A2Mu") or die ("Error!");
        
mysql_select_db("x71",$conn) or die ("Error");
        
        
$usuari $_POST["nom"];
        
$passwd $_POST["pass"];
        
        
$cadSQL "SELECT * FROM Usuaris WHERE Nom ='$usuari' and Password='$passwd';";
        echo 
$cadSQL
        
$dades mysql_query($cadSQL);
        
$linia mysql_fetch_assoc($dades);
        
$n mysql_num_rows($dades);
        
//$resultat=$db->execSQL($sql);
        
if($n == 0)
        {
            
$_SESSION["login"] = false;
            echo 
"<script language='JavaScript'> alert('User incorrect');</script>"
            echo 
"<SCRIPT LANGUAGE='JavaScript'> location.href='login.php; </SCRIPT>";
        }
        else{
            
$_SESSION["login"]=true;
            echo 
"<script language='JavaScript'> alert('CORRECTO');</script>"
            echo 
"<SCRIPT LANGUAGE='JavaScript'> location.href='menu.php; </SCRIPT>";
        }
        
    }
}
?>
  #15 (permalink)  
Antiguo 28/11/2009, 10:39
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: Ayuda: Validacion usuario PHP+MySQL

Ponlo asi:

echo $cadSQL; exit();

Deberia salir por pantalla la sentencia mysql....
  #16 (permalink)  
Antiguo 28/11/2009, 10:48
 
Fecha de Ingreso: enero-2005
Mensajes: 170
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Ayuda: Validacion usuario PHP+MySQL

Pues sigue sin salir.. que cosa mas rara no?
  #17 (permalink)  
Antiguo 28/11/2009, 11:13
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: Ayuda: Validacion usuario PHP+MySQL

Si no sale ese echo es que no entran en los IFs anteriores, esta claro, pon algun echo "check ";exit(); detras de cada IF a ver si entra o no entra asi vas comprobando cosas a ver en que putno del codigo puede haber un problema logico (que no de sintaxis) que son los jodidos de arreglar
  #18 (permalink)  
Antiguo 29/11/2009, 04:27
 
Fecha de Ingreso: enero-2005
Mensajes: 170
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Ayuda: Validacion usuario PHP+MySQL

Es curioso. He puesto un echo detras de cada if e incluso un alert y nada.. no me sale ni uno...
  #19 (permalink)  
Antiguo 29/11/2009, 04:34
 
Fecha de Ingreso: enero-2005
Mensajes: 170
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Ayuda: Validacion usuario PHP+MySQL

Vale, tenia un fallito. Ahora si me salen los 2 alerts primeros, es decir me sale if0 e if1. Aqui puedes ver donde se queda.. Lo he revisado todo a partir del 2º alert y no veo ningun fallo...

Código PHP:
<?php session_start(); ?>
<?
if (!isset($_SESSION["user"]))//si no hi hha cap sessió iniciada
echo "<script language='JavaScript'> alert('if0');</script>";
{
    if (
$_POST["login"])
//llegim les dades del formulari login i mirem si existeix a la taula Administradors de la nostra BD.
    
echo "<script language='JavaScript'> alert('if1');</script>";
    exit();
    {
        
//$db=new DB;
        //$db->connect();
        
$conn mysql_connect("localhost","xarxes","3A2Mu") or die ("Error!");
        
mysql_select_db("x71",$conn) or die ("Error");
        
        
$usuari $_POST["nom"];
        
$passwd $_POST["pass"];
        
        
$cadSQL "SELECT * FROM Usuaris WHERE Nom ='$usuari' and Password='$passwd'";  
        echo 
$cadSQL; exit();
        
$dades mysql_query($cadSQL);
        
$linia mysql_fetch_assoc($dades);
        
$n mysql_num_rows($dades);
        
//$resultat=$db->execSQL($sql);
        
if($n == 0)
        {echo 
"<script language='JavaScript'> alert('if2');</script>";
            
$_SESSION["login"] = false;
            echo 
"<script language='JavaScript'> alert('User incorrect');</script>"
            echo 
"<SCRIPT LANGUAGE='JavaScript'> location.href='login.php; </SCRIPT>";
        }
        else{echo 
"<script language='JavaScript'> alert('if3');</script>";
            
$_SESSION["login"]=true;
            echo 
"<script language='JavaScript'> alert('CORRECTO');</script>"
            echo 
"<SCRIPT LANGUAGE='JavaScript'> location.href='menu.php; </SCRIPT>";
        }
        
    }
}
?>
  #20 (permalink)  
Antiguo 29/11/2009, 04:57
 
Fecha de Ingreso: enero-2005
Mensajes: 170
Antigüedad: 19 años, 3 meses
Puntos: 0
Respuesta: Ayuda: Validacion usuario PHP+MySQL

Biennnnnn!! Ya me funciona! (aunque no del todo)...

Ya llego a los casos del final, pero por lo que parece el location.href no me funciona, porque se queda ahi.
Alguna otra forma de redigirirlo al formulario que yo quiera??

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 10:36.