Ayuda Login.php

Iniciado por Wheels5, 28 Noviembre 2013, 05:12 AM

0 Miembros y 1 Visitante están viendo este tema.

Wheels5

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.

Shell Root

Primero que todo quitales los @ a las lineas,
Código (php,2,3,4) [Seleccionar]
# SNIPP
@$user1=mysql_result($x, 0, 'username');
@$pass1=mysql_result($x, 0, 'pass');
@$rol=mysql_result($x,0,'rol');
# 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.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Wheels5

#2
<?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);
?>


basickdagger

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....

Shell Root

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.
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

bbitter

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.