Foros del Web » Programando para Internet » PHP »

Borrar todas las cookies

Estas en el tema de Borrar todas las cookies en el foro de PHP en Foros del Web. Tengo este sistema de usuarios USUARIOS.PHP Código PHP: <?php if(! $SYS ) exit;  // Evita la visualización directa   class  user {    function  registrar ( $data_array ){    /* Verifica que cada dato sea real */ ...
  #1 (permalink)  
Antiguo 25/03/2010, 16:51
 
Fecha de Ingreso: diciembre-2009
Mensajes: 30
Antigüedad: 14 años, 4 meses
Puntos: 0
Borrar todas las cookies

Tengo este sistema de usuarios

USUARIOS.PHP


Código PHP:
<?php
if(!$SYS) exit; // Evita la visualización directa
 
class user{
 
 function 
registrar($data_array){
  
/* Verifica que cada dato sea real */
  /* Falta el nick */
  
if(!$data_array['nick'])
   return array(
    
'estado' => 'error',
    
'data' => 'Falta el nick.'
   
);
  
/* Falta el pass */
  
if(!$data_array['pass'])
   return array(
    
'estado' => 'error',
    
'data' => 'Falta la contraseña.'
   
);
  
/* El mail es falso */
  
if(!user::es_mail($data_array['mail']))
   return array(
    
'estado' => 'error',
    
'data' => 'La dirección de correo no es válido.'
   
);
  
/* El usuario ya existe */
  
if(user::existe_dato($data_array['nick'], 'nick'))
   return array(
    
'estado' => 'error',
    
'data' => 'El nick ya existe.'
   
);
  
/* El mail ya existe */
  
if(user::existe_dato($data_array['mail'], 'mail'))
   return array(
    
'estado' => 'error',
    
'data' => 'La dirección E-Mail \''.$data_array['mail'].'\' ya está siendo utilizada.'
   
);
  
/* Los datos son correctos */
  
global $SYS// Globaliza para el Handle de MySQL
  /* 
   Hacemos la query y le decimos a la función que nos entregue el
   la primera columna solamente
  */
  
$id mysql::selecciona('
   select max(id) from usuarios
  '
$SYS['MYSQL']['HANDLE'], true);
  
/* Si no hay usuarios entonces el id es 1 */
  
$id = ((int)$id['max(id)'] + 1);
  if(
mysql_query('
   INSERT INTO `usuarios`.`usuarios` (
    `id` ,
    `nick` ,
    `nombre` ,
    `pass` ,
    `mail` ,
    `token` ,
    `data` ,
    `fecha_acceso`
   ) VALUES (
    \''
.(int)$id.'\',
    \''
.mysql_real_escape_string($data_array['nick']).'\',
    \''
.mysql_real_escape_string($data_array['nombre']).'\',
    \''
.mysql_real_escape_string(sha1($data_array['pass'])).'\', 
    \''
.mysql_real_escape_string($data_array['mail']).'\', 
    \''
.md5(microtime().rand(0,999)).'\',
    \'\', 
    \''
.time().'\'
   );
  '
$SYS['MYSQL']['HANDLE']))
   return array(
    
'estado' => 'ok',
    
'data' => 'La cuenta ha sido creada satisfactoriamente!'
   
); // Base de datos actualizada
  
else
   return array(
    
'estado' => 'error',
    
'data' => 'Imposible crear tu cuenta. Contactate con el administrador.'
   
); // Imposible actualizar los datos
 
}
 
 function 
existe_dato($dato$tipo){
  global 
$SYS;
  
$valor mysql::selecciona('
   select `'
.mysql_real_escape_string($tipo).'` 
   from usuarios 
   where `'
.mysql_real_escape_string($tipo).'` = \''.mysql_real_escape_string($dato).'\'
   limit 1
  '
$SYS['MYSQL']['HANDLE'], true);
  if(
$valor[$tipo] == $dato)
   return 
true// Existe
  
else
   return 
false// No existe
 
}
 
 function 
carga_sesion(){
  global 
$SYS;
  if(!
$data unserialize($_COOKIE['user_data']))
   return 
false// La cookie no es válida ya que no contiene datos serializados
  
$id $data['id'];
  
$pass $data['pass'];
  unset(
$data); // Destruye la variable para ser reutilizada
 
  
$data mysql::selecciona('
   select * 
   from usuarios 
   where id = \''
.mysql_real_escape_string($id).'\' and 
   pass = \''
.mysql_real_escape_string($pass).'\' 
   limit 1 
  '
$SYS['MYSQL']['HANDLE'], true); // Límite de 1 resultado
  
if($data['id']){
   
/* Actualiza la fecha del último acceso */
   
mysql_query('
    update `usuarios` 
    SET `fecha_acceso` = \''
.(int)time().'\' 
    where `id` = 2
    limit 1
   '
$SYS['MYSQL']['HANDLE']);
   return 
$data;
  }else{
   return 
false;
  }
 }
 
 function 
login($user$pass){
  global 
$SYS;
  
$data mysql::selecciona('
   select * 
   from usuarios 
   where nick = \''
.mysql_real_escape_string($user).'\' and 
   pass = \''
.mysql_real_escape_string(sha1($pass)).'\' 
   limit 1 
  '
$SYS['MYSQL']['HANDLE'], true); // Límite de 1 resultado
  
if(!$data['id'])
   return 
false// No es un usuario válido o se produjo un intento de ataque
  /* Devuelve el pass cifrado en SHA1 al igual que la cookie */
  /* Establece la cookie del usuario */
  
setcookie(
   
'user_data'
   
serialize(array('id' => $data['id'], 'pass' => $data['pass'])), 
   
false
   
'/'
  
); // Compatibiliza con pernalinks
  
return $data// Retorna los datos del usuario
 
}
 
 function 
es_mail($email){
  
/* Verifica atraves de la expresión regular si es correcto */
  
if(ereg("^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@+([_a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]{2,200}\.[a-zA-Z]{2,6}$"$email)){
   
$email explode('@'$email);
   
/* Verifica que el host del mail existe */
   
if(@gethostbynamel($email[1])) return true;
   else return 
false;
  }else{
   return 
false;
  }
 }
 
}
?>
MYSQL.PHP

Código PHP:
<?php
if(!$SYS) exit; // Evita la visualización directa
 
$SYS['MYSQL']['USER'] = 'root';
$SYS['MYSQL']['PASS'] = '123456';
$SYS['MYSQL']['BDATOS'] = 'usuarios';
$SYS['MYSQL']['HOST'] = 'localhost';
// ---------------------------------------------------
 
$SYS['MYSQL']['HANDLE'] = mysql::crear_handle(
 
$SYS['MYSQL']['USER'],
 
$SYS['MYSQL']['PASS'],
 
$SYS['MYSQL']['BDATOS'],
 
$SYS['MYSQL']['HOST']
);
 
$_GET stripslashses_gpc($_GET);
$_POST stripslashses_gpc($_POST);
$_COOKIE stripslashses_gpc($_COOKIE);
$_SERVER stripslashses_gpc($_SERVER);
 
function 
stripslashses_gpc($buffer){
 if(!
function_exists('get_magic_quotes_gpc'))
  return 
$buffer;
 if(
get_magic_quotes_gpc()){
  if(
is_array($buffer)){
   foreach(
$buffer as $variable => $valor){
    
$temp[$variable] = stripslashses_gpc($valor);
   }
   return 
$temp;
  }else{
   return 
stripslashes($buffer);
  }
 }else{
  return 
$buffer;
 }
}
 
class 
mysql{
 
 function 
crear_handle($user$pass$bdatos$host){
  if(!
$handle mysql_connect($host$user$pass))
   return 
false// Imposible conectar
  
if(mysql_select_db($bdatos$handle)){
   return 
$handle// Retorna el manipulador
  
}else{
   return 
false// La base de datos no existe
  
}
 }
 
 function 
selecciona($query$handle$una_columna false){
  if(!
$query mysql_query($query$handle))
   return 
false// La query falló
  
else{
   while(
$fila mysql_fetch_array($queryMYSQL_ASSOC)){
    
$retorno[] = $fila// Llena la variable con las filas retornadas
   
}
   @
mysql_free_result($query); // Livera memoria
  
}
  if(
$una_columna)
   return 
$retorno[0]; // Devuelve una sola columna
  
return $retorno// Devuelve todas las columnas
 
}
}
?>
PANEL_USUARIO.PHP

Código PHP:
<?php
/* Compatibilidad con acentos y eñes */
header('Content-Type: text/html; charset=iso-8859-1');
 
/*
Declara la url del script
Nunca declarar $_SERVER['PHP_SELF'] si no saben como
utilizarlo ya que puede causar fallas de tipo XSS
http://www.webcomparte.com/foro/programacion-en-php/evitar-el-cross-site-scripting-(xss)/
*/
$SYS['WEB_SELF'] = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];
/* Conección a la base de datos */
include('mysql.php');
/* Función de usuarios */
include('usuarios.php');
 
/* Si no es usuario lo devuelve hacia nuestro login */
if(!$SYS['user'] = user::carga_sesion()){
 
header('location: ingresar.php');
}
?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//ES" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"  lang="es-CL" xml:lang="es">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  <title>Panel de usuario</title>
 </head>
 <body>
 <h3>Bienvenido <?php echo htmlspecialchars($SYS['user']['nombre'], ENT_QUOTES); ?> !</h3><br />
 <strong>Tus datos personales:</strong><br />
 <table style="text-align: left; width: 100%;" border="0" cellpadding="2" cellspacing="2">
  <tbody>
   <tr>
    <td width="150">Id de usuario</td>
    <td><?php echo (int)$SYS['user']['id']; ?></td>
   </tr>
   <tr>
    <td width="150">Nick</td>
    <td><?php echo htmlspecialchars($SYS['user']['nick'], ENT_QUOTES); ?></td>
   </tr>
   <tr>
    <td>Nombre</td>
    <td><?php echo htmlspecialchars($SYS['user']['nombre'], ENT_QUOTES); ?></td>
   </tr>
   <tr>
    <td>Mail</td>
    <td><?php echo htmlspecialchars($SYS['user']['mail'], ENT_QUOTES); ?></td>
   </tr>
   <tr>
    <td>Última fecha de acceso</td>
    <td><?php echo htmlspecialchars(date('d/m/Y H:i:s'$SYS['user']['fecha_acceso']), ENT_QUOTES); ?></td>
   </tr>
  </tbody>
 </table>
 <br />
 <strong>Datos del sistema:</strong><br />
 <?php print_r($SYS); /* borrar esta linea si van a utilizar este sistema */ ?>
 </body>
</html>
  #2 (permalink)  
Antiguo 25/03/2010, 16:52
 
Fecha de Ingreso: diciembre-2009
Mensajes: 30
Antigüedad: 14 años, 4 meses
Puntos: 0
Respuesta: Borrar todas las cookies

INGRESAR.PHP

Código PHP:
<?php
/* Compatibilidad con acentos y eñes */
header('Content-Type: text/html; charset=iso-8859-1');
 
/*
Declara la url del script
Nunca declarar $_SERVER['PHP_SELF'] si no saben como
utilizarlo ya que puede causar fallas de tipo XSS
http://www.webcomparte.com/foro/programacion-en-php/evitar-el-cross-site-scripting-(xss)/
*/
$SYS['WEB_SELF'] = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];
/* Conección a la base de datos */
include('mysql.php');
/* Función de usuarios */
include('usuarios.php');
 
/* Si es un usuario ya conectado entonces ¿para que necesitará loguearse nuevamente? */
if(user::carga_sesion()){
 
header('location: panel_usuario.php'); // Redirecciona al panel de usuario
 
exit; // Finaliza el script
}
 
if(
$_POST['nick']){
 
/* Ingresa los datos al sistema */
 
if(!$_POST['pass']){
  
/* No se ingresó una contraseña */
  
$estado['error'] = 'Necesita proporcionar una contraseña.';
 }else{
  
$data user::login($_POST['nick'], $_POST['pass']);
  if(
$data['id']){
   
/* Login correcto */
   
header('location: panel_usuario.php'); // Redirecciona al panel de usuario
   
exit; // Finaliza el script
  
}else{
   
/* Login incorrecto */
   
$estado['error'] = 'Los datos ingresados no son correctos, vuelva a intentarlo.';
  }
 }
}
 
function 
muestra_input($variable){
 global 
$estado;
 if(
$estado['error'])
  echo @
htmlspecialchars($_POST[$variable], ENT_QUOTES);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//ES" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"  lang="es-CL" xml:lang="es">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  <title>Ingresar al sistema</title>
 </head>
 <body>
  <?php if($estado['error']){ ?>
   <strong>Se ha producido el siguiente error:</strong><br />
   <?php echo htmlspecialchars($estado['error'], ENT_QUOTES); ?><br />
   <br />
  <?php ?>
  Bievenido!, por favor ingrese sus datos para ingresar al sistema.<br />
  <br />
  <form method="post" action="<?php echo $SYS['WEB_SELF']; ?>">
  <table style="text-align: left; width: 100%;" border="0" cellpadding="2" cellspacing="2">
   <tbody>
    <tr>
     <td width="100">Nick</td>
     <td><input type="text" name="nick" value="<?php muestra_input('nick'); ?>" /></td>
    </tr>
    <tr>
     <td>Contraseña</td>
     <td><input type="password" name="pass" /></td>
    </tr>
    <tr>
     <td></td>
     <td><input type="submit" value="Ingresar" /></td>
    </tr>
   </tbody>
  </table>
 </body>
</html>
REGISTRARSE.PHP

Código PHP:
<?php
/* Compatibilidad con acentos y eñes */
header('Content-Type: text/html; charset=iso-8859-1');
 
/* 
Declara la url del script
Nunca declarar $_SERVER['PHP_SELF'] si no saben como
utilizarlo ya que puede causar fallas de tipo XSS
http://www.webcomparte.com/foro/programacion-en-php/evitar-el-cross-site-scripting-(xss)/
*/
$SYS['WEB_SELF'] = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME'];
/* Conección a la base de datos */
include('mysql.php');
/* Función de usuarios */
include('usuarios.php');
 
if(
$_POST['nick']){
 if(
$_POST['pass'] == $_POST['pass2']){
  
$estado user::registrar($_POST);
 }else{
  
$estado = array(
   
'estado' => 'error',
   
'data' => 'Las contraseñas no coinciden.'
  
);
 }
}
 
function 
muestra_input($variable){
 global 
$estado;
 if(
$estado['estado'] == 'error')
  echo @
htmlspecialchars($_POST[$variable], ENT_QUOTES);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//ES" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"  lang="es-CL" xml:lang="es">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
  <title>Registrarse</title>
 </head>
 <body>
  <?php if($estado['estado'] == 'error'){ ?>
   <strong>Se ha producido el siguiente error:</strong><br />
   <?php echo htmlspecialchars($estado['data'], ENT_QUOTES); ?><br />
   <br />
  <?php }elseif($estado['estado'] == 'ok'){ ?>
   <strong><?php echo htmlspecialchars($estado['data'], ENT_QUOTES); ?></strong><br />
   <br />
  <?php ?>
  Bievenido!, por favor ingrese sus datos.<br />
  <br />
  <form method="post" action="<?php echo $SYS['WEB_SELF']; ?>">
  <table style="text-align: left; width: 100%;" border="0" cellpadding="2" cellspacing="2">
   <tbody>
    <tr>
     <td width="150">Nick</td>
     <td><input type="text" name="nick" value="<?php muestra_input('nick'); ?>" /></td>
    </tr>
    <tr>
     <td>Nombre completo</td>
     <td><input type="text" name="nombre" value="<?php muestra_input('nombre'); ?>" /></td>
    </tr>
    <tr>
     <td>Dirección E-Mail</td>
     <td><input type="text" name="mail" value="<?php muestra_input('mail'); ?>" /></td>
    </tr>
    <tr>
     <td>Contraseña</td>
     <td><input type="password" name="pass" /></td>
    </tr>
    <tr>
     <td>Repita su contraseña</td>
     <td><input type="password" name="pass2" /></td>
    </tr>
    <tr>
     <td></td>
     <td><input type="submit" value="Registrarse!" /></td>
    </tr>
   </tbody>
  </table>
 </body>
</html>
y necesito saber como seria para borrar todas las cookies
  #3 (permalink)  
Antiguo 25/03/2010, 16:53
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Borrar todas las cookies

Código PHP:
$_COOKIE = array(); 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: borrar, cookies, todas
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 10:42.