Cookies con PHP
By: Date: marzo 12, 2007 Categories: Programación

Las Cookies sirven para identificar a alguien en el Internet, de cierta forma es una manera de evitar el anonimato, Las cookies permiten reconocer específicamente la computadora de alguien, asi podemos identificar y realizar determinadas acciones cuando alguien regresa a nuestro sitio.

Un uso muy común y practico seria un simple contador de veces que la misma persona viene a visitarnos.

En php la función setcookie nos ayuda a crear la cookie para luego recuperar su valor como si fueran variables.

Setcookie tiene varios argumentos, pero en este caso con 3 lograremos hacer algo útil

Setcookie (nombrevariable,valorvariable,expiracion)

El nombrevaraible se refiere a un valor tipo String y es el nombre de variable a la que asignaremos el valor contenido en valorvariable. Por ultimo expiración es un argumento de tipo entero de 32 bit en el cual va la fecha en segundos (como la función time de C ) cuando esa cantidad de segundos llegue la cookie expirara y perderá su valor

Para recuperar el valor usaremos el arreglo $_COOKIE[“valorvariable”];

En el siguiente ejemplo haré un contador, el cual recordara las veces que ha llegado una persona ver este articulo, el contador tiene una vigencia de un día. Si una computadora regresa al menos una vez antes de 24 horas la cookie se mantendrá viva indefinidamente

El código que hace posible esto es:

<?php

$veces = $_COOKIE["visitas"];

if ($veces == null) $veces = 0;

setcookie ("visitas", ++$veces, time() + 86400);

echo "<center>Has vuelto en menos de un dia ".$veces."
Veces</center>";

?>

19 thoughts on “Cookies con PHP

  1. Opera 9.10 Windows XP

    Se puede acortar un poco:

    [?php

    $veces = intval($_COOKIE[“visitas”]);

    setcookie (“visitas”, $veces++, time() + 86400);

    echo “Has vuelto en menos de un dia “.$veces.”
    Veces”;
    ?]

    Y añadir que para autentificaciones y cosas , por seguridad se deben establecer otros parametros como “path”, “domain”, “secure” , saludos n_n
    🙂

  2. Mozilla Firefox 2.0.0.1 Windows XP

    Y añadir tambien que este codigo es inseguro ya que se puede realizar un XSS cambiando el numero de veces que has entrado por codigo HTML en el valor de la cookie.

    Saludos.

  3. Internet Explorer 7.0 Windows XP

    Mmmm creo que para este artículo me remití al método Kiss

    No trato de decir que las criticas están mal, las criticas de Marioly y Piker son acertadas pero el propósito del articulo es introducir a las cookies por php, no así hacerlos expertos en la misma

    Para graficar el método kiss citare lo que escribí en mi artículo y citare el comentario de Marioly

    Metodo Kiss

    Setcookie tiene varios argumentos, pero en este caso con 3 lograremos hacer algo útil

    Metodo Antikiss

    Y añadir que para autentificaciones y cosas , por seguridad se deben establecer otros parametros como “path?, “domain?, “secure? , saludos n_n

    La intención es usar el método o también conocido como principio kiss

  4. Internet Explorer 7.0 Windows XP

    Si y no, Si por que es la misma idea, pero no por que es Kiss con las 2 eses

    Kiss se ha ido distorsionando originalmente fue

    Keep It Simple, Smart

    Después se invirtió el Smart por Stupid

    Keep It Simple, Stupid

    Y la forma en que yo lo ocupo es la siguiente

    Keep It Short and Simple

    Hay que mantener las cosas cortas y al mismo tiempo tontamente simples, pareciera la publicidad de windows pero no lo es, antes de eso la programación en Unix lo aplico haciendo programas pequeño pero efectivos y con una lectura en el código simple, ¿para que necesitas el manual si tienes el código fuente?

    Originalmente no tenia nada que ver con computadoras y programación mas bien se trataba de supervivencia =)

    Supongo que Kis seria una nueva variante, sin la última S, pero perdería el sentido de su nombre Kiss del ingles beso

  5. Internet Explorer 6.0 Windows XP

    Chale pinche Last Dragon te kejas de Megabyte y eres igual ke el, con sus actitudes de “yo lo se todo”, con sus aires de grandeza y en lo presumidos ya que los dos presumen sus “conocimientos” y sus cosas materiales, si, ya se vas a decir yo ke presumo???, pues presumes tu “súper” servidor con las mejores y mas costosas tecnologías y varias cosillas mas.

    Se ke ya no kerias hablar de este tema pero estuve meditando antes comentar algo sobre su mmmmmm confrontación.

    En Primer lugar YO no estoy a favor de megabyte ni de ti.

    En mi punto de vista yo creo que tu, como ya lo habían dicho antes, si estabas o estas buscando fama. ¿Porque creo eso? :

    A pesar de ser alguien muy inteligente, con un sistema perfecto, tu servidor de ultima tecnología y con muchos conocimientos en el mundo del Internet, pasabas por la vida como cualquier otro, pero nooooo tu kerias hacer revuelo, kerias sobresalir ke te conocieran muchos, pero tus esfuerzos fueron en vano solo tus amigos del Messenger te conocían, pero un día menos esperado al andar leyendo los comentarios de una noticia en tu blog tus ojos brillaron y tus labios dibujaron una sonrisa, y pensaste AWEBO YA LA HICE, megabyte al ke todo mundo conoce opino algo sobre.. ( ke weba escribir todo mejor lean ese post xD ) y tu pensaste si logro chingar a este wey, sere por mucho mas famoso ke el, asi ke hiciste un post especial para hecharle mierda, ahhhh eso, si cubriéndolo con decoro en el lenguaje y muy educadamente jajajajjaja, LISTO tiraste la primera piedra, y el otro pendejo cayo en la trampa por su orgullo y lo tomo como un reto, lo que era perfectamente lo ke tu kerias, asi matas dos pajaros de un tiro, te vuelves famoso (ya ke megabyte recibe miles de visitas diarimente) y aparte presumes ke tienes un sistema “inhackeable?. ¿Pero por qué te esforzaste tanto en tener mucha publicidad?
    ¿sera que kieres vender espacio en tu hosting inhackeable? O para que tus clientes potenciales sepan ke están contratando al informático TI que ni megabyte lo pudo hackear.

    PD.: Marioly a lo mejor ni me conoces pero siempre eh estado enamorado de ti.

  6. Internet Explorer 7.0 Windows XP

    Ok, Karajo, a mi defensa a tal acusación solo puedo decir lo siguiente.

    Sinceramente poco o nada me importa lo que megabyte representa, hace mucho tiempo leí un articulo de cómo quería acabar con el mundo y ese día ya hace mas de 6 meses pensé que era un pobre diablo, jamás me paso por la cabeza relacionarme con tan estupido ente, al menos no de forma publica, Admito que me hubiera gustado platicar con el por MSG para entender que sucede en la mente de este presunto terrorista. Y Por un proceso de eventualidad Megabyte termino en mi blog, donde no lo extrañare ni poquito el día que decida irse

    No busco fama, no se trata de eso, no busco trabajo, Trabajo tengo con o sin megabyte, no gano mas por que Megabyte llegara a mi blog ni ganaría menos si el no hubiera escrito nada. Cuando he querido compartir algo con cientos de personas simplemente redacto mis artículos y los publico en los sitios correctos. Uno de esos sitios seria cofradía donde puedes encontrar los pocos artículos que considero vale la pena compartir y es ahí donde los comparto, algunos han sido leídos más de 1000 veces, más de lo que esperaría que se lean en mi propio blog. Yo no pierdo de vista que esto es un blog, y un blog para mi es un lugar para escribir lo que sucede en el día, como un diario. Eso es para mí este blog. El lugar donde saco la tensión del día y de vez en cuando redacto algún manual.

    Tal vez tu motivación al escribirme ese comentario es por mi respuesta sobre el principio kiss. No me lo saque de la manga ni es el primer articulo que redacto de esa forma. Si lees los manuales que he publicado notaras que están redactados, no con la intención de volver expertos a quienes los leen. Están escritos con tal simpleza que invita a inicializarse para posteriormente y por voluntad propia continuar investigando al respecto.

    En mi respuesta a Marioly y a Piker, deje clarísimo que tienen razón, no estoy negando lo que dicen. Relee mi respuesta y entenderás que en realidad les di la razón.

    Tiene razón Marioly el código puede acortarse, pero un programador común y novato esta mas acostumbrado a hacer una comparación nula if (funcion ¡= null) que encontrarse con una función que determina si el resultado es entero o en el caso usar solo los primeros 3 argumentos de setcookie

    Marioly esta en lo correcto mi código puede ser por mucho mas optimo, pero pierde simpleza y para el caso lo que quiero es la simpleza

    Piker también tiene razón, el código es tan simple y sin ningún tipo de validación que es vulnerable a html injeccion y es así por que no estoy validando el contenido de la cookie, simplemente lo asigno,

    En ningún momento niego que lo que indican es incorrecto, no soy ciego entiendo perfectamente el sentido de los comentarios.

    Espero que haya dejado claro el asunto. Si Megabyte no quiere que escriba artículos denunciando su nivel newbie al intentar hackearme, pos simplemente que deje de intentarlo y yo dejo de mostrarle al mundo que tan novato es. Y es así de fácil, si redacto sobre Megabyte es por que el menso viene a buscar que lo haga, si el quiere que lo deje en paz con el asunto. Pues por mi esta bien que se vaya a escribir tarugadas a su propio blog que al final de cuentas yo ni lo visito, ni escribiré jamás en su tag, el es quien viene aquí a escribir en mi blog y esta en la libertad de irse cuando le venga en gana que no lo ire siguiendo a su blog, ni que el señor valiera la pena.

    Espero ya no tener que seguir hablando acerca de Megabyte, este articulo habla de php y sus cookies no de Megabyte y es con ese tema con el que quiero continuar.

  7. Internet Explorer 7.0 Windows XP

    Que hueva das Karajo , ya nadie hablaba de el desmadre de MB y tu a sacar de nuevo el tema :S, mejor lee y si te interesa opina algo de provecho 😀

  8. Mozilla Firefox 2.0.0.2 Windows XP

    Quien entiende a la gente?, se supone que el tema dice programacion, por lo tanto se trata de un modulo o algo por el estilo que implemento el dueño del blog, pero si el lo hizo como lo hizo y funciona, pos muy su problema.

    Lo que no entiendo es que por que el afan de corregir lo que otros hacen, si ves algo mal,es su problema, si no igual, vamos el codigo no lo vas a utilizar en un sistema donde la seguridad sea importante, es solo un ejemplo practico para entender el concepto, si quieres encriptar la cookie, si quieres hacer miles de verificacion, lo haras en un sistema productivo donde de verdad necesites eso.

    Para ver ejemplo de como implementar cookies y cuanta cosas hay miles de sitios con muchas mas informacion que aqui a los cuales pueden checar y lo mas seguro que ahi este implementado eso, este es un blog por favor, no aprenda php en 3 patadas.

  9. Mozilla Firefox 2.0.0.2 Windows XP

    Bueno antes de dejar mi comentario dare mi punto de vista sobre las respuestas anteriores…

    Dark Zen: El 95% de los geeks y entes conocedores sobre la informatica tendemos a corregir, por que?… por que no queremos conocimientos/manuales/tuturiales erroneos que solo causen confusion entre la gente, aunque la realidad es que de ese 95% al menos la mitad busca de forma indirecta -o directa- tratar de dejar mal al autor para que ellos sean el centro de atencion -extrañamente se les confunde como trolls pero no son trolls son geeks y que hace un geek cuando en clase un maestro hace una pregunta…. alza la mano y la quiere contestar… consideren el ejemplo algo vago pero en el centro esta la idea.

    Karajo: Parece un cuento de confabulacion enorme parecido al de ahora de los pejistas VS defacers y juaxors, pero sin embargo hasta cierto punto estoy de acuerdo como le dije una vez en un comentario de una nota de esas sobre megabyte, yo consideraba -si, lo consider”aba”- a last dragon uno de los pocos entes que quedan en la red con cerebro que funcione y maduro al ver el comportamiento de un niño de kinder garden en su forma de responder y de redactar sobre el asunto mbyte, me quedo en claro que no es asi, realmente tenia en mi mente a este señor como alguien “respetable” pero no al verse inmiscuido en esto solo demuestra su poca madurez…
    Como te dije lastdragon no se si lo buscaste o como dices te buscaron pero ahora gracias a tu “chistesito” eres el nuevo blanco de muchos otros juaxors como mbyte, ya que ahora eres el nuevo soberano y hacer que caiga el rey es para celebrarlo y como dice el dicho:
    “Muerto el Rey, Viva el Rey”.

    Administrador/Last Dragon: Primero no se si me enseñaron mal entendí o entendí mal, pero la ideología KISS en programación no es aplicable desde el punto de vista como lo manejas, si no desde el lado de la usabilidad o el lado del cliente/usuario final…
    No lo que realmente buscamos en programación es hacer -o tratar de buscar- la optimización del código?, haciendo que consume menos recursos en un menor numero de lineas y sea el método mas óptimo? no es asi? entonces por que te reniegas hacerlo asi?…
    Se que responderas algo como “bueno es que quiero enseñarles a los novatos sobre php” o “Pero KISS es para hacer facil de entender el codigo”, para el primero la respuesta es que no hay contra por que si es asi tiene justificacion para la segunda respuesta es facil saber que para eso existe la etapa de documentacion del software, donde tambien podemos poner “in-line documentación” dentro del codigo para hacer que los posibles lectores del codigo fuente lo entiendan y no se pierdan.
    En pocas palabras… KISS no tiene aplicacion dentro de la etapa de codificacion y este no es aplicable a excepción del campo de la enseñanza del mismo, esto es lo que realmente define todo mi comentario.

    Ahora en para el articulo me hubiera gustado que no hables de un tema no tan mascado/hablando como este y te hubieras hido sobre las famosas “galletas indigestas” de microsoft (las HttpOnly Cookies) el cual es un tema poco hablado pero que existe, te dejo una liga por si conocias sobre el tema: http://www.kriptopolis.org/galletitas-indigestas

    Espero que tomen a bien mis comentarios y no como el tipico troll yo solo quise dejar en claro mi punto de vista…

    Saludos

  10. Internet Explorer 7.0 Windows XP

    Seria difícil hablar de esas cookies para mí por varios motivos

    En mi actual manual, ni figuran esas cookies

    This file was generated: Tue Apr 27 04:41:16 2004
    Go to http://www.php.net/docs.php to get the actual version.

    Copyright © 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 the PHP Documentation Group

    Es que no he visto la necesidad de descargar manuales actualizados a la versión 5.0, no tendría sentido mi servidor aun corre con la serie de PHP 4, como seguramente ya notaste soy un usuario Linux y no cambio a una versión mas reciente de software salvo el actual tenga una vulnerabilidad. Si el actual PHP cumple con lo que requiero, no será necesario actualizar a PHP 5 sin embargo con la poca documentación que vi en línea de versiones recientes de PHP, básicamente es lo mismo setcookie simplemente se le ha agregado un nuevo argumento booleano para definir si es una cookie normal o una cookie “indigesta? =)

    No podría probar el código en mi servidor, al no correr PHP 5 no tiene la capacidad de manejar así las cookies. Sin embargo para asegurar una cookie me bastaría con solo encriptarla y ya muy paranoico validarla para saber si esta no ha sido manipulada externamente, con una dosis excesiva de paranoia incluso guardaría una copia de la cookie con su tiempo de expiración en la DB, de esta forma si es manipulada, no coincidiría con la copia de la misma guardada en la DB. No le veo ni caso usar esas cookies que además no son un Standard, más bien por lo que he leído es basura de Microsoft. Al ver la forma en que esta planteada la propuesta de Microsoft sobre estas cookies, pienso que Richard Stallman es el salvador de las libertades fundamentales del mundo libre y la información. Esas cookies parecen sacadas del fabuloso mundo de Microsoft/Palladium y ya todos sabemos lo que eso puede significar y los que no lo sepan, den una busqueda en mi blog por “Paladium? o “El derecho a leer?

    Que por cierto XP fue un intento de entrar a palladium, pero vista ya es descarado

  11. Internet Explorer 6.0 Windows XP

    Anonimo estoy de acuerdo contigo pero tu post pierde mucha creedibilidad al no poner tu nick o nombre, ¿por ke esconderse?.

    Lastdragon como dice “anonimo” te convertiste en el blanco de muchos juakers, es posible ke los intentos de Dos y demas cosas no hayan sido obra de MB, ademas el dice ke te tiro tu pagina una vez y con eso es suficiente mmmmm u_u no se dejas mucho ke pensar, pero ok basta perdon Shade69 por darte weba 😛

  12. Internet Explorer 7.0 Windows XP

    Karajo y Anonimo

    No quería responder esto por que me voy a ver mamón, pero ya ni modos. Antes de que Megabyte llegara aquí y después de que se vaya, yo ya recibía, recibo y recibiré ataques diarios y la mayoría, Que digo, TODOS definitivamente de más nivel.

    Este no es mi único servidor, cuando le decía a Megabyte que si su DoS aumentaba, yo simplemente metería otro Server y distribuiría la carga, pues bien, así es. Tengo más que solo este servidor, yo diría varios pares por ahí. Y cada uno de esos hostea diferentes cosas y servicios, cada servidor recibe al menos un ataque al mes y algunos incluso ataques diarios.

    Todos mis servidores están configurados para dejar escribir pero no para borrar, como no pueden borrar sus huellas termino leyendo los intentos juaqueriles de cada uno de ellos. En resumen, cada ataque es para mí es como un regalo. Me regalan sus herramientas, Me regalan su “conocimiento?, yo ni siquiera tengo que salir a buscar exploit, muy amablemente vienen a dejarlos en mi Server y con manual e instructivo ya que veo lo que intentaron hacer y como lo intentaron usar, Tengo una colección de todo tipo de rootkits, webshell, exploit locales. Todos dejados en los discos duros de los servidores

    De hecho este articulo de las cookies tiene inspiración en el ataque de Megabyte al intentar robar las cookies de administrador ya que me llegaron correos preguntándome al respecto, resultado de esos email es por lo que existe este articulo..

    Si tengo que calificar a Megabyte, Megabyte es el mas newbie de todos, la mayoría de los ataques que recibo van orientados a explotar algún tipo de vulnerabilidad, algo mas que un simple DoS y si el articulo https://www.lastdragon.net/?p=95 que es su ultimo intento de desfase, es de Megabyte, tiene su huella característica, tan es así, que apenas lo publique llego su DoS como intentando evitar que la gente lo lea. No creo que sea de Megabyte, Se que es de el.

    Después de todo esto, que hoy alguien me diga que me volví el blanco de los Juaquer.. Pues espero al menos que los próximos juaquers no sean los que ya me han atacado por que así no tiene chiste, quiero sus juguetes nuevos, los viejos ya los tengo.

    Y no soy Hacker, ni inhackeable, si me han metido goles, afortunadamente de cada gol he aprendido como defender la portería, no dudo que mañana alguien con talento venga y me desfase, solo espero aprender como lo hizo cuando suceda. Pero ya pronto tendrán su oportunidad los que realmente quieran medir su nivel sin caer en lo ilegal, ha sido liberado del Red Hat 5.0, pronto, tendré un nuevo reto para tomar un equipo configurado con ese OS

  13. Internet Explorer 7.0 Windows XP

    No les comento, solo hablo de su newbie nivel y viene como alma que se lleva el diablo a tratar de dosear a ver si no lo lee nadie.

    Ni Tardo ni Flojo

    Y con la huella lamera de megabyte, cree que esa suave brisa siquiera mueve este servidor, ese wey no entiende que su unica oportunidad es un desfase con nivel no DoS, que tendra en el cerebro.

  14. Opera 9.10 Windows XP

    LastDragon . Voy a opinar del tuto nadams , no de si eres un nuevo target de jaxorz, por que eso se me hace ridiculo..
    Creo que al hacer un tutorial si existe un tema relevante referente a el, se debe indicar, referir o agregar una nota, alguien puede leer tu tuto y querer aplicar tu ejemplo tal cual, o usar las cookies de ese modo siempre y es cuando vienen los defaces y brechas de seguridad.., alguien que va empezando no sabe que el code es vulnerable a xss, pero tu si, deberías hacer los escritos a conciencia 😉 , aun cuando sea un intro..

    karajo : thanks, is cute , thx =)

  15. Mozilla Firefox 1.5.0.11 Windows XP

    Hola.
    BUeno…me voy a referir al codigo, que es lo interesante de aca,
    yo estoy empezando mi semestre de programacion y me econtre con este ejemplo de cookies con php, muy bueno.
    pero ahy algo que no interpreto bien, hablan de un codigo con mejor seguridad? porque no lo ponen para la gente novata como nosotros para aprender…. por favor..!!!

    setcookie (?visitas?, $veces++, time() + 86400);

    la verdad apenas estoy empezando y no habia visto esa opcion de php, ya empeze a leer sobre:
    http://www.php.net/setcookie

    Chao

Deja un comentario

Tu dirección de correo electrónico no será publicada.