Foros del Web » Programando para Internet » PHP »

pregunta sobre sistema de usuarios

Estas en el tema de pregunta sobre sistema de usuarios en el foro de PHP en Foros del Web. hola a todos de nuevo caballeros :D Hay tengo una pregunta,mi sistema de usuarios usa cookies(tb sesiones,pero las cookies son optativas)asi que lo que hago ...
  #1 (permalink)  
Antiguo 28/06/2004, 04:16
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 10 meses
Puntos: 0
pregunta sobre sistema de usuarios

hola a todos de nuevo caballeros :D


Hay tengo una pregunta,mi sistema de usuarios usa cookies(tb sesiones,pero las cookies son optativas)asi que lo que hago para asegurarme que el usuario no modifica la cookie guardo solamente el password encriptado en la cookie,pero como puedo hacerlo para que el sistema cree las sesiones apartir del password encriptado?seria mejor opcion encriptar la ID y el login del usuario en la cookie y asi terminaria antes?? os pongo que codigo que procesa si el usuario esta validado o no :D
Código PHP:
<? 
$server
="localhost"
$database="mysql";
$dbpass="mysql";
$dbuser="mysql";

$query="SELECT * FROM usuarios WHERE login='$login'"
$link=mysql_connect($server,$dbuser,$dbpass); 
$result=mysql_db_query($database,$query,$link); 
if(
mysql_num_rows($result)==0){ 
echo 
"No existe el login introducido"
} else { 
$array=mysql_fetch_array($result); 
if(
$array["password"]= MD5($pass) ){ 
session_start(); 
$_SESSION["user_id"]=$array["user_id"]; 
$_SESSION["login"]=$array["login"]; 
session_register("_SESSION"); 
} else { 
echo 
"Password incorrecto!"

if(isset(
$_POST['autologin'])){ 
      
setcookie("cookvgpass"$_SESSION["password"], time()+60*60*24*100"/"); 


?>
gracias :D
  #2 (permalink)  
Antiguo 28/06/2004, 09:30
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 10 meses
Puntos: 0
uuuuuppppppale......
  #3 (permalink)  
Antiguo 28/06/2004, 10:46
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 10 meses
Puntos: 0
aprovechando el hilo pongo otra preguntia :D

estoy liado con el perfil de los usuarios :D

Código PHP:
<?
$server
="xxxxxxxx"
$database="xxxx";
$dbpass="";
$dbuser="xxxx";

$query="SELECT email,web,ICQ,Yahoo,MSN,Firma,Nacimiento,sexo,Biografia,Procedencia,Intereses,avatar FROM usuarios WHERE login='$nick'"
$link=mysql_connect($server,$dbuser,$dbpass); 
$result=mysql_db_query($database,$query,$link); 
if(
mysql_num_rows($result)==0){ 
echo 
"No estas identificado en el sistema"
} else { 
$array=mysql_fetch_array($result); 
if(
$array["password"]= MD5($pass) ){ 

     
$email_Usuario=$array[email]; 
     
$web_Usuario=$array[web]; 
     
$icq_Usuario=$array[ICQ]; 
     
$yahoo_Usuario=$array[Yahoo]; 
     
$MSN_Usuario=$array[MSN]; 
     
$firma_Usuario=$array[Firma]; 
     
$fecha_Usuario=$array[Nacimiento]; 
     
$sexo_Usuario=$array[sexo]; 
     
$biografia_Usuario=$array[Biografia]; 
     
$procedencia_Usuario=$array[Procedencia]; 
     
$intereses_Usuario=$array[Intereses]; 
     
$avatar_Usuario=$array[avatar]; 
}
}
?>
el problema es que no se porque no me detecta el password y si lo hace no lo compara con el login estoy intentando aprovechar el mismo que uso para la comprobacion del usuario ^^ gracias ;)
  #4 (permalink)  
Antiguo 29/06/2004, 07:06
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tendras que partir por guardar en tu cookie el valor del password y del usuarios que son ambos datos los que identifican como único a tu usuario.

Lo normal es que en tu sistema gestiones las contraseñas en MD5() y eso será lo que guardes (el MD5() de la contraseña) en la cookie que usaras para hacer la consulta SQL pertinente de esos datos a tu BD si existe (la cookie). y de ahí creas tu sesión (variables) como lo harías si el usuario ingresase su "login" por el formulario HTML común que ya usaras.

----

Sobre tu 2º pregunta .. Recuerda que en SQL mismo se puede aplicar MD5() y hacer la consulta pertinente: www.mysql.com para más info.

pero ,.. tu problema es:
if($array["password"]= MD5($pass) ){

si usas un = .. se "asigna" .. el operador para comparación es == (doble igual, o incluso === si quieres comparar igual valor e igual tipo de variable).

Código PHP:
if($array["password"]== MD5($pass) ){ 
Un saludo,


Un saludo,
  #5 (permalink)  
Antiguo 29/06/2004, 09:06
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 10 meses
Puntos: 0
cluster nunca me cansare de darte las gracias :D

he hecho lo que me has dicho :Dy bueno si tienes razon :$ la cague de mala manera xD, pero ahora el problema es que aunque me reconoce el usuario no coge los datos de la BD,me explico :D como ves cojo todos los datos del usuario para luego mostrarlos :D ahora aunque me reconoce al usuario no me muestra los datos es como si no los cargara pero en cambio si detecta al user muchas gracias :D
  #6 (permalink)  
Antiguo 29/06/2004, 09:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Intenta usar $array['campo'] .. sin comillas podría ser asumido como "constante" el indice del array.

(de hecho lo usas en tu if() pero luego no . .no sé por qué .. En todo esto hay que tener una cierta constancia .. por qué sino pasan cosas como estas . .por un lado "aparentemente" funciona y por otro no...)


Por lo demás no se vé donde haces tu:
echo $procedencia_Usuario;

o similar para mostrar esos datos. No sé si usas funciones por médio .. (para obetener esos datos bajo una función .. ) si es así revisa el tema del "ambito de las variables".


Un saludo,
  #7 (permalink)  
Antiguo 29/06/2004, 09:40
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 10 meses
Puntos: 0
aqui te pongo el codigo entero de la pagina :D asi lo veras mejor :D


Código PHP:
<? 
session_start
(); 

$idUsuario=$_SESSION["user_id"]; 
if (!
$idUsuario){ 
    
$idUsuario=$_COOKIE["cook_user_id"]; 


$nick=$_SESSION["login"]; 
if (!
$nick){ 
    
$nick=$_COOKIE["cook_login"]; 
    } 

$pass=$_SESSION["password"]; 
if (!
$pass){ 
    
$pass=$_COOKIE["cook_pass"]; 
    } 

?> 
<?
$server
="localhost"
$database="";
$dbpass="";
$dbuser="";

$query="SELECT email,web,avatar FROM usuarios WHERE login='$nick'"
$link=mysql_connect($server,$dbuser,$dbpass); 
$result=mysql_db_query($database,$query,$link); 
if(
mysql_num_rows($result)==0){ 
echo 
"No estas identificado en el sistema"
} else { 
$array=mysql_fetch_array($result); 
if(
$array["password"]== MD5($pass) ){ 

     
$email_Usuario=$array[email]; 
     
$web_Usuario=$array[web]; 
     
$icq_Usuario=$array[ICQ]; 
     
$yahoo_Usuario=$array[Yahoo]; 
     
$MSN_Usuario=$array[MSN]; 
     
$firma_Usuario=$array[Firma]; 
     
$fecha_Usuario=$array[Nacimiento]; 
     
$sexo_Usuario=$array[sexo]; 
     
$biografia_Usuario=$array[Biografia]; 
     
$procedencia_Usuario=$array[Procedencia]; 
     
$intereses_Usuario=$array[Intereses]; 
     
$avatar_Usuario=$array[avatar]; 
}
}
?>
gracias :D

Última edición por Newphp; 29/06/2004 a las 16:20
  #8 (permalink)  
Antiguo 29/06/2004, 11:32
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Me quedé igual .. Sigo sin ver donde pretendes usar esas variables que dices que no obtienes su valor ..

Por lo demás ..
$pass=$_SESSION["password"];
if (!$pass){
$pass=$_COOKIE["cook_pass"];
}

ese tipo de construcciones no son del todo correctas (o por lo menos a mi no me gusta asumir que si no se obtiene un valor . será = 0 y cero = FALSE) .. deberías usar:

Código PHP:
if (empty($_SESSION["password"])){ 
    
$pass=$_COOKIE["cook_pass"]; 
} else {
    
$pass=$_SESSION["password"]; 

Puedes mejora el tema si usas elseif() y aplicas otro empty() al $_SESSION para que si no se obtiene ninguno de esos valores de la cookie/sesión ahí des tu mensaje de error o predefinas un valor para $pass ..

Un saludo,
  #9 (permalink)  
Antiguo 29/06/2004, 16:09
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 10 meses
Puntos: 0
la idea es usar las variables para que al conectar a la BD seleccione el login desde $nick y lo mismo con el password ok,gracias cluster ahora si lo he entendido bien :D arreglare lo que me dijiste ^^


P.D: He modificado el codigo de arriba para que asi se vea algo mas limpio :D

Última edición por Newphp; 29/06/2004 a las 16:20
  #10 (permalink)  
Antiguo 30/06/2004, 03:21
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 19 años, 10 meses
Puntos: 0
aqui pongo lo del elseif me da error al ejecutarlo pero es logico porque estoy seguro que esta mal muy mal hecho .........ruego perdon si he hecho alguna cagada muy grande pero es que o estuve haciendo ayer por la noche y la verdad es que ni me aclaraba muy bien xD

Gracias

Código PHP:
<?
$server
="localhost"
$database="";
$dbpass="";
$dbuser="mysql";

$query="SELECT email,web,ICQ FROM usuarios WHERE login='$nick'"
$link=mysql_connect($server,$dbuser,$dbpass); 
$result=mysql_db_query($database,$query,$link); 
if (empty(
$_SESSION["password"])){ 
    
$pass=$_COOKIE["cook_pass"]; 
} elseif { 
    
$pass=$_SESSION["password"]; 
} {
echo 
"\todo ok.\n";
} elseif (!
$pass) {
echo 
"\el password es incorrecto.\n";
} elseif (!
$nick) {
echo 
"\$nick no existe en la BD.\n";
}
}
?>

asi a primer ojo veo que me deje "$array["password"]== MD5($pass)" pero bueno antes de hacer nada espero haber que me dices
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 04:00.