Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Wheels5 en 28 Noviembre 2013, 05:12 am



Título: Ayuda Login.php
Publicado por: Wheels5 en 28 Noviembre 2013, 05:12 am
Hola soy nuevo en el mundo de la programacion en PHP quisiera saber si me podrian ayudar con este codigo , no es codigo mio , a nivel localhost con xampp no marca error pero al hacer pruebas en un servidor no deja loguear :

<?php
//captura de datos
$user=$_REQUEST["username"];
$pass=$_REQUEST["pass"];
//conexión a la base de datos.
$con=mysql_connect("localhost", "root", "");
$query="SELECT * FROM inventariodb.users
WHERE username='".$user."';";
$x=mysql_query($query);
@$user1=mysql_result($x, 0, 'username');
@$pass1=mysql_result($x, 0, 'pass');
@$rol=mysql_result($x,0,'rol');
mysql_close();
if($user==$user1 && $pass==$pass1 && $user!="" && $rol=="admin"){
session_start();
$_SESSION["ok"]=true;
$_SESSION["user"]=$user;
$_SESSION["admin"]=true;


header("Location:http://localhost/Inventario/paginas/admin/index admin.php");
exit;
}elseif($user==$user1 && $pass==$pass1 && $user!="" && $rol=="user"){
session_start();
$_SESSION["ok"]=true;
$_SESSION["user"]=$user;



header("Location:http://localhost/Inventario/paginas/index.php");
exit;
}else{
session_destroy();
header("Location:http://localhost/Inventario/paginas/Iniciar Sesion.php");
exit;
}
?>


Ejemplo :

//conexión a la base de datos.
$con=mysql_connect("localhost", "PC", "1234");
$query="SELECT * FROM PC-123.users
WHERE username='".$user."';";


Les agradeceria su ayuda y como dije soy nuevo en esto , he echo login pero simples y este me llamo la atencion , gracias y saludos.


Título: Re: Ayuda Login.php
Publicado por: Shell Root en 28 Noviembre 2013, 06:16 am
Primero que todo quitales los @ a las lineas,
Código
  1. # SNIPP
  2. @$user1=mysql_result($x, 0, 'username');
  3. @$pass1=mysql_result($x, 0, 'pass');
  4. @$rol=mysql_result($x,0,'rol');
  5. # SNIPP

Despues, pusiste bien los datos para conectar la base de datos? porque en el ejemplo de más abajo aparece otro "string" de conexión.


Título: Re: Ayuda Login.php
Publicado por: Wheels5 en 29 Noviembre 2013, 00:04 am
<?php
//captura de datos
$user=$_REQUEST["username"];
$pass=$_REQUEST["pass"];
//conexión a la base de datos.
$con=mysql_connect("localhost", "galgos", "123");
$query="SELECT * FROM galgos1-P.users
WHERE username='".$user."';";
$x=mysql_query($query);
$user1=mysql_result($x, 0, 'username');
$pass1=mysql_result($x, 0, 'pass');
$rol=mysql_result($x,0,'rol');
mysql_close();
if($user==$user1 && $pass==$pass1 && $user!="" && $rol=="admin"){
session_start();
$_SESSION["ok"]=true;
$_SESSION["user"]=$user;
$_SESSION["admin"]=true;
header("Location:http://www.galgos/P/paginas/admin/index admin.php");
exit;
}elseif($user==$user1 && $pass==$pass1 && $user!="" && $rol=="user"){
session_start();
$_SESSION["ok"]=true;
$_SESSION["user"]=$user;
header("Location:http://www.galgos/P/paginas/index.php");
exit;
}else{
echo "<script>alert('Error en la Clave o Usuario');
document.location=('#')</script>";
}
?>


Modifique lo que me indicaste y solo me aparce Error en la Clave o Usuario.
Nota : Introduzco bien el password y el usuario , y a un asi manda error.


Y la conexion la tengo asi :

<?php
$con=mysql_connect("localhost","galgos","123")or die("Conexion no realizada");
mysql_select_db("galgos1-P",$con);
?>



Título: Re: Ayuda Login.php
Publicado por: basickdagger en 29 Noviembre 2013, 18:29 pm
mm para saber si no es la contraseña la q esta mal... por no utilizas los valores predeterminados de la maquina local, 'localhost', 'root' ,'',y pruebas, si estas realizando la conexion desde un servidor... verifica los permisos, y ademas me ah pasado q si tu le pones por ejemplo como usuario "mi_usuario" muchas veces te lo registra como midominio_mi_usuario....


Título: Re: Ayuda Login.php
Publicado por: Shell Root en 2 Diciembre 2013, 04:57 am
Como siempre se ha dicho, printea la query y ejecuta en el mysql directamente, allí sabras si es problema de código o del resultado de la consulta.


Título: Re: Ayuda Login.php
Publicado por: bbitter en 3 Diciembre 2013, 13:20 pm
Buenas,
primer punto: el código. ¿Qué condición no se está compliendo?

<?php
//...
if($user==$user1 && $pass==$pass1 && $user!="" && $rol=="admin"){
//logueamos como admin
exit;
}elseif($user==$user1 && $pass==$pass1 && $user!="" && $rol=="user"){
//logueamos como user
exit;
}else{
//no logueamos
exit;
}
?>

Con esta estructura, ¿qué condición es la que nos "echa"?¿La primera o la segunda?¿Es por user, es por pass, ...por el rol?...

Yo propondía algo así:

<?php
//...
if($user==$user1 && $pass==$pass1 && $user!="") {
     // Se ha verificado que es un usuario, a ver que rol desempeña
     switch($rol) {
          case "admin":
          //logueamos como admin
           break;
          case "user":
          //logueamos como user
           break;
          default:
          //notificamos que el rol del usuario no está implementado o lo que sea
          }
}else{
          //notificamos que user o password son incorrectos           
}
?>

más que nada para tener algo más de control y no andar todo el rato preguntando lo mismo. Además en caso de no tener éxito, tenemos un error más específico.

Sería interesante tener la definición SQL de la tabla. A la hora de comparar el pasword, o resto de datos, ¿qué estamos comparando? Es decir, así como los locos, se me ocurrió que quizá pueda ser un error de tipos. Lo mismo podría suceder con otros valores de la siguiente condición.

if ($user==$user1 && $pass==$pass1 && $user!="" && $rol=="user")

Prueba a usar === en lugar de == . El operador '===' no realiza conversión de tipo y evita problemas "inesperados", aunque debes asegurarte de que los dos elementos son del mismo tipo.