Foros del Web » Programando para Internet » PHP »

registro de usuarios

Estas en el tema de registro de usuarios en el foro de PHP en Foros del Web. Estoy usando un codigo para registro de usuarios que encontre en internet, y esta basado en cookies. Lo que quisiera saber es como puedo hacer ...
  #1 (permalink)  
Antiguo 08/04/2006, 06:57
 
Fecha de Ingreso: septiembre-2003
Mensajes: 197
Antigüedad: 20 años, 7 meses
Puntos: 0
Pregunta registro de usuarios

Estoy usando un codigo para registro de usuarios que encontre en internet, y esta basado en cookies.
Lo que quisiera saber es como puedo hacer para que al cerrar el navegador se borre la cookie que almacena los datos del usuario para logearse (cuando cierro el navegador y luego vuelvo a entrar a la pagina sigo logeada y no quiero que eso pase), la unica manera de que la cookie se borre es cuando me desconecto.
Espero que me haya explicado bien.

este es el codigo que uso para protejer las paginas:

Código PHP:
<?php
// !!! ESTA PÁGINA SIRVE PARA RESTRINGIR EL ACCESO A USUARIOS NO REGISTRADOS

//datos de conexion
include("config.php");

if(
$_COOKIE[id] && $_COOKIE[nick] && $_COOKIE[pass]){

    
$query mysql_query("SELECT * FROM registrados WHERE id='$_COOKIE[id]'");
    
$datos mysql_fetch_array($query);
    
    if(
$_COOKIE[id]==$datos[id] && $_COOKIE[nick]==$datos[nick] && $_COOKIE[pass]==$datos[pass]){
    
    echo
"<!-- Usuario correcto -->";
    
    } else {
    
    
header ("Location: restring.php"); 
    exit();
    
    }

} else {

    
header ("Location: restring.php"); 
    exit();
    
    
}

?>
y este es el codigo que uso para desconectarme:

Código PHP:
<?php

// DESCONECTAR

//datos de conexion
include("config.php");

if(
$_COOKIE[id] && $_COOKIE[nick] && $_COOKIE[pass]){

    
mysql_query("DELETE FROM enlinea WHERE usuario='$_COOKIE[nick]'");

    
             
setcookie("id");
    
setcookie("nick");
    
setcookie("pass");        

    
header("location: index.php");

} else {

    
    
error(_NO_USUARIO_CONECTADO,"0");

}
?>
Espero me puedan ayudar, gracias.
  #2 (permalink)  
Antiguo 08/04/2006, 12:24
 
Fecha de Ingreso: febrero-2004
Mensajes: 138
Antigüedad: 20 años, 2 meses
Puntos: 2
Podrias usar sesiones, q se borran al cerrar el navegador
__________________
De mucho estudiar nadie se murió, pero mas vale no arriesgarse
  #3 (permalink)  
Antiguo 09/04/2006, 01:29
Avatar de elquique  
Fecha de Ingreso: marzo-2004
Ubicación: Florida, Uruguay
Mensajes: 2.495
Antigüedad: 20 años, 1 mes
Puntos: 78
O usar por un tiempo determinado :)
__________________
Blog Jorge Oyhenard | Tutoriales Photoshop
  #4 (permalink)  
Antiguo 09/04/2006, 06:38
 
Fecha de Ingreso: septiembre-2003
Mensajes: 197
Antigüedad: 20 años, 7 meses
Puntos: 0
si me pudieran dar un ejemplo para entenderlo, seria mejor, porque he tratado de hacerlo y no funciona me da errores:

Código PHP:
<?php 
// !!! ESTA PÁGINA SIRVE PARA RESTRINGIR EL ACCESO A USUARIOS NO REGISTRADOS 

//datos de conexion 
include("config.php"); 

if(
$_COOKIE[id] && $_COOKIE[nick] && $_COOKIE[pass]){ 

    
$query mysql_query("SELECT * FROM registrados WHERE id='$_COOKIE[id]'"); 
    
$datos mysql_fetch_array($query); 
     
    if(
$_COOKIE[id]==$datos[id] && $_COOKIE[nick]==$datos[nick] && $_COOKIE[pass]==$datos[pass]){ 
     
    echo
"<!-- Usuario correcto -->"

    
setcookie("id",time() + 60);
    
setcookie("nick",time() + 60);
    
setcookie("pass",time() + 60);
     
    } else { 
     
    
header ("Location: restring.php");  
    exit(); 
     
    } 

} else { 

    
header ("Location: restring.php");  
    exit(); 
     
     


?>
S me pueden dar una mano con esto se los agradeceria mucho.
  #5 (permalink)  
Antiguo 09/04/2006, 11:35
Avatar de elquique  
Fecha de Ingreso: marzo-2004
Ubicación: Florida, Uruguay
Mensajes: 2.495
Antigüedad: 20 años, 1 mes
Puntos: 78
Seria bueno saber que errores te da para darte mejor una mano :)
__________________
Blog Jorge Oyhenard | Tutoriales Photoshop
  #6 (permalink)  
Antiguo 10/04/2006, 05:28
 
Fecha de Ingreso: septiembre-2003
Mensajes: 197
Antigüedad: 20 años, 7 meses
Puntos: 0
Los errores que me dan son estos:

Código:
Warning: Cannot modify header information - headers already sent by (output started at C:\Pruebas\Mipagina\login.php:13) in C:\Pruebas\Mipagina\login.php on line 15

Warning: Cannot modify header information - headers already sent by (output started at C:\Pruebas\Mipagina\login.php:13) in C:\Pruebas\Mipagina\login.php on line 16

Warning: Cannot modify header information - headers already sent by (output started at C:\Pruebas\Mipagina\login.php:13) in C:\Pruebas\Mipagina\login.php on line 17
este codigo lo tengo inserto en las paginas protegidas
como lo puedo solucionar, para que la cookie se borre transcurrido un tiempo?
  #7 (permalink)  
Antiguo 10/04/2006, 11:14
Avatar de elquique  
Fecha de Ingreso: marzo-2004
Ubicación: Florida, Uruguay
Mensajes: 2.495
Antigüedad: 20 años, 1 mes
Puntos: 78
El problema esta en que header no lo puedes ejecutar si ya realizaste una impresion de algo en tu pagina. Es bueno que lo coloques al inicio de la pagina incluso antes de los META.
__________________
Blog Jorge Oyhenard | Tutoriales Photoshop
  #8 (permalink)  
Antiguo 10/04/2006, 11:26
 
Fecha de Ingreso: septiembre-2003
Mensajes: 197
Antigüedad: 20 años, 7 meses
Puntos: 0
esta muy bien lo que decis, pero si te fijas en el codigo como esta constriudo, si le agrego esto
Código:
setcookie("id",time() + 60); 
etcookie("nick",time() + 60); 
setcookie("pass",time() + 60);
es cuando me da el error pero si no se lo pongo funcioan bien

Mi pregunta es como hago para agregar esa parte de codigo y que no me de el error?
  #9 (permalink)  
Antiguo 10/04/2006, 19:52
Avatar de zerohours  
Fecha de Ingreso: agosto-2004
Ubicación: San Salvador, El Salvador.
Mensajes: 60
Antigüedad: 19 años, 8 meses
Puntos: 4
por que no te chequeas este tutorial en esta web

http://www.desarrolloweb.com/manuales/37/#capitulos

ahi te explican como cerrar la secion al cerrar la pagina exactamenten en esta parte

http://www.desarrolloweb.com/articulos/2022.php
  #10 (permalink)  
Antiguo 10/04/2006, 20:29
 
Fecha de Ingreso: abril-2006
Mensajes: 4
Antigüedad: 18 años
Puntos: 0
He tenido ese problema con los headers, y al parecer debes asegurarte:

1. Que no hayan espacios antes o despues de los tags php, osea nada antes de "<?php" y nada despues de "?>". NO confundas aquellos files que tienen codigo embebido con esta prevencion, mas bien revisa los includes, en donde generalmente solo debes tener codigo php "puro"

2. No vayas a enviar al navegados, una salida (output), antes de cualquier cabecera (header), y al parecer, haces una salida cuando haces esta sentencia :

echo"<!-- Usuario correcto -->";

Ahora bien, dices que el error te sale, cuando seteas las cookies

setcookie("id",time() + 60);
setcookie("nick",time() + 60);
setcookie("pass",time() + 60);


Entonces, verifica bien, si en tu config.php no hay alguna salida

3. Para que no haya muchos problemas de este tipo, osea, mandar comandos echo cuando mas abajo hay sentencias tipo

header ("Location: restring.php");
exit();


entonces, debes usar los comandos ob_start() al comienzo de la pagina "principal", OJO principal, osea, la que llama a todos tus include, y al final de esta pagina, coloca el comando ob_end_flush(). Esto permite, almacenar en el buffer del servidor todas las salidas emitidas por comandos echo o print para que despues, cuando encuentre al comando ob_end_flush, los mande recien al cliente...

Espero haberte ayudado

>>Fids
  #11 (permalink)  
Antiguo 10/04/2006, 20:51
Avatar de LedideR  
Fecha de Ingreso: noviembre-2004
Ubicación: Temuco, Chile
Mensajes: 39
Antigüedad: 19 años, 5 meses
Puntos: 1
Si no se define el tiempo que durarán las cookies, se borran al cerrar el navegador
Cita:
Iniciado por PHP.NET
time()+60*60*24*30 definirá que la cookie expire en 30 días. Si no se define, la cookie expirará al final de la sesión (cuando el navegador sea cerrado).
__________________
-=| L\€/O |=-
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 11:42.