Foros del Web » Programando para Internet » PHP »

sesiones+cookies AYUDA!!!!!

Estas en el tema de sesiones+cookies AYUDA!!!!! en el foro de PHP en Foros del Web. hola de nuevo a todos :D llevo dos dias liado con este codigo y no hay manera humana que me salga :( Mirad lo que ...
  #1 (permalink)  
Antiguo 03/06/2004, 10:49
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
sesiones+cookies AYUDA!!!!!

hola de nuevo a todos :D llevo dos dias liado con este codigo y no hay manera humana que me salga :(

Mirad lo que quiero es que si un usuario "aprieta"el cuadrado "remember"se le ponga una cookie en el PC.

asi lo tengo hecho:

el archivo login:

Código PHP:
<? 
session_start
(); 
if(isset(
$SESSION)){ 
header("location: index.php");
} else { 

   if(isset(
$_COOKIE['cookname']) && isset($_COOKIE['cookpass'])){
      
$_SESSION['nombre'] = $_COOKIE['cookname'];
      
$_SESSION['password'] = $_COOKIE['cookpass'];
header("location: index.php");
} else { 
?>
<html> <head> <title>Identificate</title> </head> 
<body>
<center>
</center> 
<form action="comprueba.php" method="POST"> 

  <table width="322" border="0" cellpadding="0" cellspacing="0">
    <tr> 
      <td width="322" height="28" valign="top">Login: 
        <input type="text" name="login">
      </td>
    </tr>
    <tr> 
      <td valign="top" height="21">Password: 
        <input type="password" name="pass">
      </td>
    </tr>
    <tr> 
      <td height="14" valign="top"><input type="checkbox" name="remember">
        Recordarme en mi proxima visita</td>
    </tr>
    <tr>
      <td height="40"></td>
    </tr>
  </table>
<input type="submit" value="Entrar"> 
</form> 
</body> 
</html> 
<?
}
}
?>
y luego tengo el archivo "comprueba.php"que es el que procesa los datos:

Código PHP:
<? 
$server
="localhost"
$database="nombre";
$dbpass="";
$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); 
session_start(); 
if(
$array["password"]==crypt($pass"semilla") ){ 
$SESSION["login"]=$login
$SESSION["nombre"]=$array["nombre"]; 
$SESSION["apellidos"]=$array["apellidos"];
$SESSION["id"]=$array["id"];
session_register("SESSION"); 

   if(isset(
$array['remember'])){
      
setcookie("cookname"$_SESSION['nombre'], time()+60*60*24*100"/");
      
setcookie("cookpass"$_SESSION['password'], time()+60*60*24*100"/");
   }
header("location: index.php");

} else { 
echo 
"Password incorrecto!"

}
?>
P.D Fijo que es una tonteria el donde la he cagado pero no se encontrarlo....:(
thanks

Última edición por Newphp; 03/06/2004 a las 10:52
  #2 (permalink)  
Antiguo 03/06/2004, 11:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si ya usas los arrays superglobales: $_SESSION .. NO hagas:

session_register("SESSION");

En tu login .. verifica la existencia de alguan de las variables que registras en la sesión: (por ejemplo)

Código PHP:
<? 
session_start
(); 
if(isset(
$_SESSION['login'])){ 
header("location: index.php"); 
} else {
Donbde haces esto:

$SESSION["login"]=$login;
$SESSION["nombre"]=$array["nombre"];
$SESSION["apellidos"]=$array["apellidos"];
$SESSION["id"]=$array["id"];

sería:

Código PHP:
$_SESSION["login"]=$login
$_SESSION["nombre"]=$array["nombre"]; 
$_SESSION["apellidos"]=$array["apellidos"]; 
$_SESSION["id"]=$array["id"]; 
Y en la definición de la cookie ..
if(isset($array['remember'])){
setcookie("cookname", $_SESSION['nombre'], time()+60*60*24*100, "/");
setcookie("cookpass", $_SESSION['password'], time()+60*60*24*100, "/");
}

mejor usar las variables originales y no las de $_SESSION en ese instante por qué .. las variables de sesión no quedarán disponibles hasta la próxima petición al servidor (recarga de página . .cambio de página .. etc). Usa:

Código PHP:
if(isset($array['remember'])){ 
      
setcookie("cookname"$array['nombre'], time()+60*60*24*100"/"); 
      
setcookie("cookpass"$array['password'], time()+60*60*24*100"/"); 
   } 

Un saludo,
  #3 (permalink)  
Antiguo 03/06/2004, 11:44
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
muchas gracias cluster pero no se porque me sigue todo igual(bueno ahora no si por la cookie o porque auque no me identifique me pone las opciones de como si lo huviera hecho) :( mira te pongo como queda el codigo:

login.php

Código PHP:
<? 
session_start
(); 
if(isset(
$_SESSION['login'])){ 
header("location: index.php"); 
} else { 

   if(isset(
$_COOKIE['cookname']) && isset($_COOKIE['cookpass'])){
      
$_SESSION['nombre'] = $_COOKIE['cookname'];
      
$_SESSION['password'] = $_COOKIE['cookpass'];
header("location: index.php");
} else { 
?>
<html> <head> <title>Identificate</title> </head> 
<body>
<center>
</center> 
<form action="comprueba.php" method="POST"> 

  <table width="322" border="0" cellpadding="0" cellspacing="0">
    <tr> 
      <td width="322" height="28" valign="top">Login: 
        <input type="text" name="login">
      </td>
    </tr>
    <tr> 
      <td valign="top" height="21">Password: 
        <input type="password" name="pass">
      </td>
    </tr>
    <tr> 
      <td height="14" valign="top"><input type="checkbox" name="remember">
        Recordarme en mi proxima visita</td>
    </tr>
    <tr>
      <td height="40"></td>
    </tr>
  </table>
<input type="submit" value="Entrar"> 
</form> 
</body> 
</html> 
<?
}
}
?>
comprueba.php:
Código PHP:
<? 
$server
="localhost"
$database="nombre";
$dbpass="";
$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); 
session_start(); 
if(
$array["password"]==crypt($pass"semilla") ){ 
$_SESSION["login"]=$login
$_SESSION["nombre"]=$array["nombre"]; 
$_SESSION["apellidos"]=$array["apellidos"]; 
$_SESSION["id"]=$array["id"]; 
session_register("SESSION"); 

if(isset(
$array['remember'])){ 
      
setcookie("cookname"$array['nombre'], time()+60*60*24*100"/"); 
      
setcookie("cookpass"$array['password'], time()+60*60*24*100"/"); 
   } 

header("location: index.php");

} else { 
echo 
"Password incorrecto!"

}
?>
y donde aparece la bienvenida al usuario:
Código PHP:
<?php 
session_start
(); 
if(isset(
$_SESSION))
{
echo 
"Bienvenido   $_SESSION[nombre]"

else 

echo 
"Bienvenido Usuario Anonimo"

?>
la verdad no se donde fallo :( gracias
  #4 (permalink)  
Antiguo 03/06/2004, 13:04
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Quita el:
session_register("SESSION");

Y en:

if(isset($_SESSION))

Es mejor hacer lo que te mencioné .. Usa cualquier variable de tu sesión para verificar si existe o no (como el ejemplo que te dejé).

if(isset($_SESSION['nombre'])) {

Con esas modificaciones podría empezar a ver la lógica en sí de tu sistema ..

A simple vista veo un problema:
Si encuentras las cookies creadas (usuario y password) por qué no hay creada una sesión .. Creas 2 variables de sesión (usuario y password) .. y lo mandas directo al index.php de tu aplicación pero, no se vé donde autentificas ese usuario/contraseña contra tu Base de datos para "validarlo" como lo haces si ingresa esos datos desde el formulario de "login".

Por otro lado .. en tus if() .. que tienes en login.php . deben ser del tipo:

if (ver sesiones si existe){

} elseif (ver las cookies) {

} else {
(formulario login ..)

Y despues de cada header() .. un exit; para terminar ahí la aplicación si no se cumple esa condición.

Un saludo,
  #5 (permalink)  
Antiguo 03/06/2004, 14:35
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
ante todo gracias de nuevo :D por todo y por la paciencia ya que es la primera vez que intento hacer un codgo de esta "complegidad"(para mi es complejo pero seguro que para muchos otros es facil ;))

Asi ha quedado la cosa creo que esta como me has dicho :D,sino es asi perdona

Login.php

Código PHP:
<?
session_start
(); 
if (isset(
$_SESSION['login'])){
header("location: index.php"); 
exit;
} elseif (isset(
$_COOKIE['cookname']) && isset($_COOKIE['cookpass'])){
      
$_SESSION['nombre'] = $_COOKIE['cookname'];
      
$_SESSION['password'] = $_COOKIE['cookpass'];
header("location: index.php");
exit;
} else {
?>

<html> <head> <title>Identificate</title> </head> 
<body>
<center>
</center> 
<form action="comprueba.php" method="POST"> 

  <table width="322" border="0" cellpadding="0" cellspacing="0">
    <tr> 
      <td width="322" height="28" valign="top">Login: 
        <input type="text" name="login">
      </td>
    </tr>
    <tr> 
      <td valign="top" height="21">Password: 
        <input type="password" name="pass">
      </td>
    </tr>
    <tr> 
      <td height="14" valign="top"><input type="checkbox" name="remember">
        Recordarme en mi proxima visita</td>
    </tr>
    <tr>
      <td height="40"></td>
    </tr>
  </table>
<input type="submit" value="Entrar"> 
</form> 
</body> 
</html> 
<?
}
?>
comprueba.php
Código PHP:
<? 
$server
="localhost"
$database="nombre";
$dbpass="";
$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); 
session_start(); 
if(
$array["password"]==crypt($pass"semilla") ){ 
$_SESSION["login"]=$login
$_SESSION["nombre"]=$array["nombre"]; 
$_SESSION["apellidos"]=$array["apellidos"]; 
$_SESSION["id"]=$array["id"];  

if(isset(
$array['remember'])){ 
      
setcookie("cookname"$array['nombre'], time()+60*60*24*100"/"); 
      
setcookie("cookpass"$array['password'], time()+60*60*24*100"/"); 
   } 

header("location: index.php");
exit;
} else { 
echo 
"Password incorrecto!"

}
?>
Siento ser pesado pero repito que GRACIAS :D
  #6 (permalink)  
Antiguo 03/06/2004, 15:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Ok ,.. y ahora que sucede? funcionó .. hace lo mismo o algo diferente? .. como se comporta el script?

Intenta ver por donde pasa la lógica de tu script ..para intentar evaluar si tienes problemas por ejemplo con sesiones (¿has probado sesiones en alguna otra ocasión?) principalmente por la NO propagación del SID (que suele pasar .. )

Date cuenta que tu script está asumiendo que usas cookies para propagar el SID y en consecuencia necesitaras de cierta configuración de PHP:

session.use_cookies =1
session.use_trans_sid = 1 (opcional ...)

Y de navegadores que acepten cookies.

Y .. recuerda que usas los "arrays superglobales" así que necesitas una versión de PHP 4.1.0 o superior ..

Un saludo,
  #7 (permalink)  
Antiguo 03/06/2004, 16:11
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
se comporta de la misma manera uso PHP Version 4.3.6 lo tengo instalado
en el PC
session.use_cookies On
session.use_trans_sid Off

lo curioso es que las sesione sme lo lleva todo bien pero las cookies no me las crea(o no me las reconoce)

el explorador es el IE 66

gracias por todo:D
  #8 (permalink)  
Antiguo 03/06/2004, 17:17
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y las cookies se llegan a crear?

pasa tu código al if de:

Código PHP:
if(isset($array['remember'])){ 
      
setcookie("cookname"$array['nombre'], time()+60*60*24*100"/"); 
      
setcookie("cookpass"$array['password'], time()+60*60*24*100"/"); 
   } 
que guardas en "remenber" ? .. por qué estás viendo la "existencia" de ese elemento en el array que obtienes de aplicar mysql_fetch_array() .. pero no un valor concreto ..

No sé que guardarás ahí .. pero tendria que ser algo tipo:

Código PHP:
if($array['remember']=="S"){ 
      
setcookie("cookname"$array['nombre'], time()+60*60*24*100"/"); 
      
setcookie("cookpass"$array['password'], time()+60*60*24*100"/"); 
   } 
Un saludo,
  #9 (permalink)  
Antiguo 04/06/2004, 00:58
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
la idea es que al presionar la casilla de la pagina "login"(la casilla contiene el remember)esto se lleve a la pagina siguiente(compueba.php)y cree la cookie en caso de no presionar no la creeara.

Luego probare lo que me has dicho:D gracias
  #10 (permalink)  
Antiguo 04/06/2004, 03:52
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
si te digo la verdad e estado apunto de abandonar :( pero prefiero intentarlo un poco mas :D cluster muchas gracias por todo:D pero sigue :( no se que puede ser.

Te explico lo que quiero hacer quizas asi me puedas entender mejor y podamos encontrar el porque de estos fallos:D

mi idea es que al logearse un usuario el sistema funciona a base de sesiones pero que en caso que el usuario presione el cuadradito(checkbox)de remember a este se le cree una cookie con los datos de manera que no tendria que logearse cada vez que entre:D

Si te digo la verdad si hoy no lo conseguimos creo que lo dejare y no te hare perder mas tiempo:D

Muchas Gracias cluster eres muy grande tio ;)
  #11 (permalink)  
Antiguo 04/06/2004, 08:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. insisto ..

Ok, tu usuario pulsa no sé qué checkbox y ....

Pero, al final ese dato que no sé lo que guardas en el .. lo llevas a tu BD .. lo almacenas en el campo "renember" y luego cuando "autentificas" a tu usuario por la existencia de las sesión o cookies .. Si no está creada la sesión, haces el condicional (IF) que te detallé en el anterior mensaje para "crear" la cookies que ahí indicas. Lo que no has concretado es:

1) que dato guardas en tu BD campo: "renember"
2) Según tu IF (original) sobre el campo $array['renember'] .. PASA el flujo del código a ese IF (dentro)

Te comento todo esto por qué decias que "las cookies no ves que se creen .." y si no se crea pues .. lo más probable es que ese IF no está actuando como tu lo creías.

Un saludo,
  #12 (permalink)  
Antiguo 04/06/2004, 09:32
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
mmmm creo que tienes razon me da que la estoy cagando xD,todo el codigo son el login.php y el comprueba.php asi que creo que como dices esta vacio :( mmmmm no se como podria hacerlo para que "detecte" que se activa la casilla:D ahora mirare esto que me has dicho :D y luego me paso ;) Gracias
  #13 (permalink)  
Antiguo 04/06/2004, 09:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Vamos a ver ..

El echo que se "detecte" esa casilla .. a efectos de tu "login" lo que tienes que hacer es procesar esa variable -del formulario- para crear o no esas cookies ..

Un "Checkbox" de HTML sólo pasa al script que lo reciba (tu formulario de login con tus <input> del nombre usuario y contraseña + el checkbox ... todo bajo un <form .. > </form> ) si se marcó ..

Así que puedes hacer algo tipo:

comprueba.php

Código PHP:
if (isset($_POST['nombre_checkbox'])){
// creas las cookie!

Fijate que uso "$_POST" .. es decir .. EL valor de tu checkbox (sólo miro que exista pues ya sé que si no se marca no voy ni a recibir esa variable ... podrías usar name= también para el checkbox y comparar un valor ..). NO uso tu $array que es una consulta a tu Base de datos .. que .. realmente no veo necesario guardar ese dato en tu Base de datos simpre y cuando se basa el sistema en que .. en el momento que quiero "recordar contraseña" activo ese checkbox y en el momento me crea las cookies .. Cuando no quiera usar esa opción . .me pones un botoncito para que este llame al script que tengas de "matar_cookies.php" y la próxima vez que entre a tu sistema (al no existir ni la cookie ni la sesión) ya me pedirar el "login" nuevamente con el checkbox de "quiero recordar contraseña" ...

PD: NO te olvides de VALIDAR los datos de tu usuario/contraseña que tienes en tus cookies -antes- de dale la pasada a tu sitio autentificado (crear tus variables de sesión).

Un saludo,

Última edición por Cluster; 04/06/2004 a las 09:49
  #14 (permalink)  
Antiguo 04/06/2004, 10:17
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
creo que le has dado en el clavo :D gracias creo que ya esta :D hago unas pruebas y te dire que tal ha ido :D
  #15 (permalink)  
Antiguo 04/06/2004, 11:17
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
nada que no quiere funcionar :( mira asi queda la cosa :D

login.php:
Código PHP:
<?
session_start
(); 
if (isset(
$_SESSION['login'])){
} elseif (isset(
$_COOKIE['cookname']) && isset($_COOKIE['cookpass'])){
      
$_SESSION['nombre'] = $_COOKIE['cookname'];
      
$_SESSION['password'] = $_COOKIE['cookpass']
?>



<html> <head> <title>Identificate</title> </head> 
<body>
<center>
</center> 
<form action="comprueba.php" method="POST"> 

  <table width="322" border="0" cellpadding="0" cellspacing="0">
    <tr> 
      <td width="322" height="28" valign="top">Login: 
        <input type="text" name="login">
      </td>
    </tr>
    <tr> 
      <td valign="top" height="21">Password: 
        <input type="password" name="pass">
      </td>
    </tr>
    <tr> 
      <td height="14" valign="top"><input type="checkbox" name="nombre">
        Recordarme en mi proxima visita</td>
    </tr>
    <tr>
      <td height="40"></td>
    </tr>
  </table>
<input type="submit" value="Entrar"> 
</form> 
</body> 
</html> 
<?
}
?>
comprueba.php:

Código PHP:
<? 
$server
="localhost"
$database="nombre_database";
$dbpass="";
$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); 
session_start(); 
if(
$array["password"]==crypt($pass"semilla") ){ 
$_SESSION["login"]=$login
$_SESSION["nombre"]=$array["nombre"]; 
$_SESSION["apellidos"]=$array["apellidos"]; 
$_SESSION["id"]=$array["id"];  

if (isset(
$_POST['nombre_checkbox'])){ 
      
setcookie("cookname"$array['nombre'], time()+60*60*24*100"/"); 
      
setcookie("cookpass"$array['password'], time()+60*60*24*100"/"); 
   } 

header("location: index.php");
exit;
} else { 
echo 
"Password incorrecto!"

}
?>
e cambiado un par de cosas y he puesto lo que me dijiste pero me sigue = :( me crea las seciones pero no quiere crearme las cookies :( toy desesperado con este script ahora seguire mirando haber ;)
  #16 (permalink)  
Antiguo 04/06/2004, 14:24
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Fijate bien ..

"><input type="checkbox" name="nombre">

if (isset($_POST['nombre_checkbox'])){

Tu checkbox se llama "nombre" no "nombre_checkbox" ..

Pero .. no se consigue nada cambiando cosas de lugar o probando . TINES que ver como se va ejecutando el flujo de tu programa y para eso es bueno que si tienes un "IF" que ha de pasar o no .. pongas ahí un echo "por aquí pasó"; por poner algùn ejemplo .. o si tienes variables rondando .. que le hagas otro echo $variable; y veas si toma el valor esperado ..

Un saludo,
  #17 (permalink)  
Antiguo 04/06/2004, 15:07
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
ok,probare lo del echo :D gracias
  #18 (permalink)  
Antiguo 04/06/2004, 17:07
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
mmmm cluster una pregunta sincera crees que seria mejor empezar el codigo desde 0?o partiendo de algun ejemplo de la red?porque me da que tiene mala pata este codigo xD

gracias:$ sigo mirando lo del echo"
  #19 (permalink)  
Antiguo 05/06/2004, 17:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues .. tu veras. Pero lo principal es que tengas claro la lógica de tu script ha de seguir (algorítmo) .. Al principio tenias un "lio" con eso mismo pero, si no lo entendistes, de nada servirá empezar de cero (caeras en lo mismo probablemente).

La "técnica" del "echo" simplemente te va a servir para expirementar con la depuración de un script .. a no poner cosas por "probar" sino a ver como realmente se comporta lo que hay hecho, así es como se suelen solventar los problemas al "observar" que bajo cierta condición lo que tu esperas no sucede y así vas centrando el problema.

Algo de teoría también es importante saber .. Por ejemplo, las cookies o sesiones en sus arrays asociados $_SESSION o $_COOKIE no quedan disponibles hasta que se hace una petición al servidor (recarga de página .. pasar a otra página .. etc) Así que si haces tu "setcookie" por ejemplo y seguidamente en el código intentas hacer: echo $_COOKIE['nombre_cookie'] .. no vas a obtener el valor esperado ahí mismo por qué está ese "detalle" de teoría que debes conocer.

Aquí en este mensaje "SIN probar" el código por mi parte ya ví que según comentas tienes un problema con la lectura de las cookies y .. para ver antes si las puedes leer tendremos que averigüar si se crean o si actual el código que las tiene que crear ... Luego vendran a lo peor otros problemas pero tendras: N-1 problemas xDD que ver.

Un saludo,
  #20 (permalink)  
Antiguo 05/06/2004, 18:00
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
ok,lo primero como dices sera mirar si me crealas cookies :D es que me a veces me desespero :$

Como dijo jack el destripador vamos por partes ;)
  #21 (permalink)  
Antiguo 06/06/2004, 05:00
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
AAARGGHHHGHGG no lo entiendo,ahora al intentar logerame me dice password incorrecto.

Mira el codigo porfavor cluster y dime si es cosa del codigo o cosa del servidor de mi PC que se ha jodido o algo raro.

Formulario.php:
Código PHP:
<html>
<
head>
<
title>Untitled Document</title>
<
meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</
head>

<
body bgcolor="#FFFFFF" text="#000000">

<
form action="crearusuario.php" method="POST"
Login: <input type="text" name="login"> <br
Password: <input type="password" name="pass1"> <br
Repite Password: <input type="password" name="pass2"> <br
Nombre: <input type="text" name="nombre"> <br
Apellidos: <input type="text" name="apellidos"> <br
E-mail: <input type="text" name="email"> <br
<
input type="submit" name="Crear"
</
form
</
body>
</
html
crearusuario.php;
Código PHP:
<? 
$server
="localhost";
$database="tabla";
$dbpass="";
$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)){ 
echo 
"El usuario ya existe en el sistema"
} else { 
mysql_free_result($result); 
if(
$pass1!=$pass2) { 
echo 
"Los passwords no coinciden,porfavor vuelve a introducirlos<br>"
echo 
'Clica <a href="form.php">aquí</a> para volver al formulario de registro'
} else { 
$pass1=crypt($pass2"semilla"); 


$query="INSERT INTO usuarios (login, nombre, apellidos, password, email) VALUES ('$login', '$nombre', '$apellidos', '$pass1', '$email')"

$result=mysql_db_query($database$query$link); 
if(
mysql_affected_rows($link)){ 
echo 
"Ahora ya estas en el sistema"
} else { 
echo 
"Error introduciendo el usuario"
}
}
}
?>
login.php:
Código PHP:
<?
session_start
(); 
if (isset(
$SESSION['login'])){
} elseif (isset(
$_COOKIE['cookname']) && isset($_COOKIE['cookpass'])){
      
$_SESSION['nombre'] = $_COOKIE['cookname'];
      
$_SESSION['password'] = $_COOKIE['cookpass']
?>

<html> <head> <title>Identificate</title> </head> 
<body>
<center>
</center> 
<form action="comprueba.php" method="POST"> 

  <table width="322" border="0" cellpadding="0" cellspacing="0">
    <tr> 
      <td width="322" height="28" valign="top">Login: 
        <input type="text" name="login">
      </td>
    </tr>
    <tr> 
      <td valign="top" height="21">Password: 
        <input type="password" name="pass">
      </td>
    </tr>
    <tr> 
      <td height="14" valign="top"><input type="checkbox" name="nombre">
        Recordarme en mi proxima visita</td>
    </tr>
    <tr>
      <td height="40"></td>
    </tr>
  </table>
<input type="submit" value="Entrar"> 
</form> 
</body> 
</html> 
<?
}
?>
Comprueba.php:
Código PHP:
<? 
$server
="localhost"
$database="tabla";
$dbpass="";
$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); 
session_start(); 
if(
$array["password"]==crypt($pass"semilla") ){ 
$_SESSION["login"]=$login
$_SESSION["nombre"]=$array["nombre"]; 
$_SESSION["apellidos"]=$array["apellidos"]; 
$_SESSION["id"]=$array["id"];  

if (isset(
$_POST['nombre'])){ 
      
setcookie("cookname"$array['nombre'], time()+60*60*24*100"/"); 
      
setcookie("cookpass"$array['password'], time()+60*60*24*100"/"); 
   } 

header("location: index.php");
exit;
} else { 
echo 
"Password incorrecto!"

}
?>
Gracias cluster solo puedo decir que te hare un altar xD por paciente

Última edición por Newphp; 06/06/2004 a las 05:02
  #22 (permalink)  
Antiguo 08/06/2004, 07:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si dices que tienes un problema con la contraseña .. revisa tu crypt() ... Supongo que conoceras que esa función es de encriptación en un sólo sentido? (lo típico es usar MD5() simplemente .. pero bueno es otra alternativa igual).

Revisa si lo que guardas en tu BD (mira que guarda en tu password campo de tu BD) con lo que generas en tu Comprubea.php

Y .. ya que usas los arrays superglobales para las sesiones ($_SESSION) .. usalo para todo!!!!:

if($array["password"]==crypt($pass, "semilla") ){

sería:

if($array["password"]==crypt($_POST['pass'], "semilla") ){

Y así con toda variable que venga de tu formulario/links (una de las primeras FAQ's del foro PHP habla del tema .. te invito a leerla)


Un saludo,
  #23 (permalink)  
Antiguo 08/06/2004, 09:24
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
de momento ya vuelve a reconocerme al usuario :D y al final me he decantado por encriptar con MD5 :D ahora solo me queda lo de siempre....que me cree las cookies xD esto es una batalla casi epica
  #24 (permalink)  
Antiguo 09/06/2004, 13:57
 
Fecha de Ingreso: mayo-2004
Mensajes: 571
Antigüedad: 13 años, 6 meses
Puntos: 0
mmmmm nuevos datos aparecen en el horizonte :D

cñuster es posible que sea culpa e la instalacion del php o algo asi?lo digo porque he seguido este tutorial :
http://www.maestrosdelweb.com/editorial/phpreusr/

Y NO ME CREA LAS COOKIES!!!!!!! asi que quizas el codigo este bien pero no el sistema de php :D es posible que sea eso? gracias:D
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 18:55.