Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: geshiro en 4 Junio 2015, 23:05 pm



Título: como puedo validar el login
Publicado por: geshiro en 4 Junio 2015, 23:05 pm
alguien me puede ayudar o guia como validad el login de php para cuando pongo la contraseña mal o usuario que no me deje pasar a otra pagina como esta osea que me mande una alerta o meensaje

Código
  1. <!doctype html>
  2. <html lang="en" >
  3.    <meta charset ="UTF-8">
  4. <title>formulario flat design</title>
  5. <link rel="stylesheet" href="css/main.css"/>
  6. </head>
  7. <body>  
  8.  <div id="applicationform">
  9. <p id="title">Welcome to </p>
  10.  
  11. <form action="login.php" methos="POST">  
  12. <input type="mail" id="user" name="User" placeholder="Username" autocomplete="off">
  13. <input type="password" id="pass" name="Pass"  placeholder="Password">
  14. <input type="submit" id="fade2" value="login" class="login" href="index.html">
  15. </form>
  16. </div>
  17. </body>
  18. </html>
  19.  
  20.  

Código
  1. <?php
  2.    $User = $_REQUEST['User'];
  3.    $Pass = $_REQUEST['Pass'];
  4.  
  5.    $conexion = mysql_connect("localhost","root") or die ("PROBLEMAS AL CONECTA EL SERVIDOR");
  6.    mysql_select_db("adsu",$conexion) or die ("PROBLEMAS A CONECTAR CON LA DB");
  7.  
  8.    $estandar = mysql_query("SELECT * FROM usuario where login = '".$User."' and pass = '".$Pass."'",$conexion);
  9.    $admin    = mysql_query("SELECT * FROM usuario where login = '".$User."' and pass = '".$Pass."'",$conexion);
  10.  
  11.    if($row = mysql_fetch_array($estandar))
  12.    {
  13.      header("Location: index_empleado.html");
  14.  
  15.    }else if($row = mysql_fetch_array($admin))
  16.         {
  17.            header("Location: index_admin.html");
  18.  
  19.         }
  20.  
  21. ?>
  22.  


Título: Re: como puedo validar el login
Publicado por: LaThortilla (Effort) en 5 Junio 2015, 17:44 pm
puedes hacer dos cosas desde el php o redireccionas o retornas.

-redireccionar:
si es incorrecto el password:
Código
  1. header ("Location: localhost/directorio/login.php");
-si es  correcto:
Código
  1. header ("Location: localhost/directorio/index.php");

-retornar valor.
     En este caso necesitarias utilizar ajax.... busca  un manual..
procedimiento:
      1-hacer peticion ajax a un archivo php
      2- procesar el password y usuario enviado desde ajax si password y usuario son validos.
     -Si es correcto:
             redireccionas a tu pagina home
      -sino retornas un valor (ejemplo 0)
      3- procesar el valor obtenido si es 0 mostrar un mensaje (password o usuario incorrecto)

Aqui tienes otra forma de hacerlo...
http://www.runnable.com/UyClLhrKWGFrcrQW/simple-php-mysql-jquery-login-script


Título: Re: como puedo validar el login
Publicado por: DarK_FirefoX en 5 Junio 2015, 18:51 pm
Primero, utilizo poco:

Código

En cambio utilizo:

Citar
mysqli();

Ahora, si entiendo bien, quieres mostrar una página en caso de que la contraseña esté mal!

Para esto tienes que comprobar que la contraseña ingresada sea la correcta para el usuario ingresado. Por lo tanto tu consulta a la base de datos te debe dar 1 fila (y solo una) en caso de que sea correcta. En caso contrario te devolverá 0 filas.

Puedes utilizar la función:

Código

que te devuelve un int que representa el número de filas en la consulta.

Por ejemplo:

Código
  1. $estandar = mysql_query("SELECT * FROM usuario where login = '".$User."' and pass = '".$Pass."'",$conexion);
  2.  
  3. if(mysql_num_rows($estandar)==0){
  4. header("Location: direccionDeTuArchivoErrorDeContrasenna.php");
  5. }
  6. else {
  7. header("Location: ingresoContrasennaCorrectaArchivo.php");
  8. }
  9.  

Nota: Asumo que debes controlar que solo haya un usuario con el mismo "login".

Ojo: También deberías pensar en utilizar la función hash() para cifrar los passwords en la BD

Salu2s


Título: Re: como puedo validar el login
Publicado por: geshiro en 6 Junio 2015, 00:49 am
como le puedo hacer porque al momento que intento meter el login de usuario normal me sale error y el de admin no

<?php
    $User = $_REQUEST['User'];
    $Pass = $_REQUEST['Pass'];

    $conexion = mysql_connect("localhost","root") or die ("PROBLEMAS AL CONECTA EL SERVIDOR");
    mysql_select_db("db_login",$conexion) or die ("PROBLEMAS A CONECTAR CON LA DB");

    $employee = mysql_query("SELECT * FROM usuario where login = '".$User."' and pass = '".$Pass."'",$conexion);
    $admin    = mysql_query("SELECT * FROM usuario where login = '".$User."' and adminpass = '".$Pass."'",$conexion);
 
   if(mysql_num_rows($employee)==0)
    {
       header("Location: index.html");

    }else
         {
          header("Location: index_employee.html");
         }
    if(mysql_num_rows($admin)==0)
    {
        header("Location: index.html");
    }else
         {
            header("Location: index_admin.html");
         }
   
?>


Título: Re: como puedo validar el login
Publicado por: DarK_FirefoX en 6 Junio 2015, 01:56 am
Primero: Utiliza las etiquetas GeSHi para publicar código.

Ahora, no entiendo muy bien cual fue tu problema, o tal ves no te explicaste del todo bien, pero ten en cuenta que en el código que pusiste tienes un problema.

Código
  1. if(mysql_num_rows($employee)==0)
  2.    {
  3.       header("Location: index.html");
  4.    }else
  5.         {
  6.          header("Location: index_employee.html");
  7.         }
  8.    if(mysql_num_rows($admin)==0)
  9.    {
  10.        header("Location: index.html");
  11.    }else
  12.         {
  13.            header("Location: index_admin.html");
  14.         }

Date cuenta que cuando haces el primer if, si el resultado de mysql_num_rows($employee) es 0 entonces te va a redireccionar a index.html. Y en caso contrario a index_employee.html. Por lo tanto no va a alcanzar nunca la linea del otro if.

Luego, deberías hacer algo como:

Código
  1. if(mysql_num_rows($employee)==0)
  2.    {
  3.       header("Location: index.html");
  4.    }else
  5.         {
  6. //Y aquí comprobar el caso del administrador
  7. }

En lo personal, aunque no estoy seguro lo que quieres y/o lo que estás tratando de hacer, no me parece adecuada esta forma que veo para controlar si el usuario es administrador, aunque esto me parece que viene dado un mal diseño de la BD. Lo que podrías hacer, es un campo tipo boolean en la BD que determina si es administrador o no. En este caso, un administrador sería un usuario normal, pero con privilegios de administrador, lo cual te eliminarías hacer esa doble query.

Espero esto te ayude. Cualquier otra cosa, no dudes en preguntar.

Salu2s


Título: Re: como puedo validar el login
Publicado por: kaiserr en 6 Junio 2015, 02:32 am
Como veo que ya te esta ayudando DarK_FirefoX no te vlveré a decir lo mismo.

Pero quería mencionar el tema de la seguridad. Tu metes directamente los datos que recibes por POST a la consulta de la BD... Ten cuidado porque podrían hacerte un SQL injection.

Mira de utilozar funciones como: mysql_real_escape_string

Saludos.


Título: Re: como puedo validar el login
Publicado por: DarK_FirefoX en 6 Junio 2015, 02:53 am
Como veo que ya te esta ayudando DarK_FirefoX no te vlveré a decir lo mismo.

Pero quería mencionar el tema de la seguridad. Tu metes directamente los datos que recibes por POST a la consulta de la BD... Ten cuidado porque podrían hacerte un SQL injection.

Mira de utilozar funciones como: mysql_real_escape_string

Saludos.

Exactamente, no había hecho el comentario pues el nombre de la página era:

Citar
formulario flat design

Y pense que era algo más bien de pruebas y tal.

Pero si, debes cuidarte de una SQL Injection, en lo personal utilizo una función así para "sanear" los datos que me entra el user antes de procesarlos, la funcion recibe los datos y la conexión con la base de datos:

Código
  1. function sanitize($connection, $data)
  2. {
  3. }

(parece un poco exagerada xD :P)

Nota: Recibo un "link" pues utilizo mysqli


Título: Re: como puedo validar el login
Publicado por: geshiro en 7 Junio 2015, 01:10 am
alguine me puede ayudar como puedo arreglar mi codigo php para no pasar los datos directos por POST

Código
  1. <?php
  2.    $User = $_REQUEST['User'];
  3.    $Pass = $_REQUEST['Pass'];
  4.  
  5.    $conexion = mysql_connect("localhost","root") or die ("PROBLEMAS AL CONECTA EL SERVIDOR");
  6.    mysql_select_db("db_login",$conexion) or die ("PROBLEMAS A CONECTAR CON LA DB");
  7.  
  8.    $estandar = mysql_query("SELECT * FROM usuario where login = '".$User."' and pass = '".$Pass."'",$conexion);
  9.    $admin    = mysql_query("SELECT * FROM usuario where login = '".$User."' and adminpass = '".$Pass."'",$conexion);
  10.  
  11.    if(mysql_num_rows($estandar)==0)
  12.    {
  13.       header("Location: index.html");
  14.  
  15.    }else
  16.         {
  17.          header("Location: index_employee.html");
  18.         }
  19.  
  20.    if(mysql_num_rows($admin)==0)
  21.    {
  22.      header("Location: index.html");
  23.  
  24.    }else
  25.         {
  26.          header("Location: index_admin.html");
  27.         }
  28. ?>
  29.  
  30.  


Título: Re: como puedo validar el login
Publicado por: DarK_FirefoX en 7 Junio 2015, 03:24 am
alguine me puede ayudar como puedo arreglar mi codigo php para no pasar los datos directos por POST

Y cuál es tu objetivo?


Título: Re: como puedo validar el login
Publicado por: geshiro en 7 Junio 2015, 04:28 am
osea poder acomoderlos y no sacarlos del method POST


Título: Re: como puedo validar el login
Publicado por: DarK_FirefoX en 7 Junio 2015, 04:34 am
osea poder acomoderlos y no sacarlos del method POST

Por favor, @geshiro, explícate mejor, porque no entiendo nada. Primero haces una pregunta y nos has dicho si quiera si te sirvieron las soluciones dadas.

Ahora no entiendo para nada lo que quieres hacer?

Salu2s


Título: Re: como puedo validar el login
Publicado por: geshiro en 7 Junio 2015, 17:34 pm
si me sirvieron pero ya lo hize lo del login ya bien pero ahora quiero acomodarlos y no sacarlos directos del method post para que no hagan sql


Título: Re: como puedo validar el login
Publicado por: kaiserr en 8 Junio 2015, 01:45 am
Yo te puse una función antes, y DarK_FirefoX te puso una muy buena combinación.

En tu caso tendras que pasarle a esa función tu variables:
Código
  1. $User = $_REQUEST['User'];
  2. $Pass = $_REQUEST['Pass'];
  3.  

Es decir, cogiendo la función que te ha puesto DarK_FirefoX:
Código
  1. function sanitize($connection, $data)
  2. {
  3. }

quedaría así más o menos:
Código
  1. $User = $_REQUEST['User'];
  2. $Pass = $_REQUEST['Pass'];
  3.  
  4. $conexion = mysql_connect("localhost","root") or die ("PROBLEMAS AL CONECTA EL SERVIDOR");
  5.    mysql_select_db("db_login",$conexion) or die ("PROBLEMAS A CONECTAR CON LA DB");
  6.  
  7. ...
  8. ...
  9.  
  10. $User = sanitize($conexion, $User);
  11. $Pass = sanitize($conexion, $Pass);
  12.  
  13. ...
  14. ...
  15.  
  16. function sanitize($connection, $data)
  17. {
  18. }

Aprovecho para darte otro consejo, los nombres de los atributos por convención empiezan en minúsculas.