PHP - Borrar array de cookies

 
Vista:
sin imagen de perfil
Val: 43
Ha aumentado su posición en 10 puestos en PHP (en relación al último mes)
Gráfica de PHP

Borrar array de cookies

Publicado por Anonymus (17 intervenciones) el 04/02/2020 19:58:17
Actualmente guardo un array de cookies cuyo valor de índice es aleatorio.

Lo mismo puedo tener un setcookie("objeto[1][0]",'valor'); o puedo tener setcookie("objeto[10][1]",'valor');

Mi obejtivo es borrlas sin indicar que índice tienen, he intentado con este foreach, pero no me funciona :(


1
2
3
4
5
6
7
if (isset($_COOKIE['obejto'])) {
    foreach ($_COOKIE['objeto'] as $r) {
        foreach ($r as $v) {
            setcookie("objeto[$r][$v]", '', time() - 3600);
        }
    }
}

¿Alguna idea?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Borrar array de cookies

Publicado por Julio (830 intervenciones) el 04/02/2020 21:32:46
Hola.

No estoy muy familiarizado con el uso de setcookie, ¿pero no puedes usar unset para borrarlas? Ya te digo que así, de primeras, tendría que mirar un poco más el tema de las cookies, pero como te veo con índices y tal...

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 43
Ha aumentado su posición en 10 puestos en PHP (en relación al último mes)
Gráfica de PHP

Borrar array de cookies

Publicado por Anonymus (17 intervenciones) el 04/02/2020 21:40:01
Si, había intentado lo siguiente:

1
2
3
4
if (isset($_COOKIE['articulo'])) {
 
    unset($_COOKIE['articulo']);
}

Pero me siegue sin desaparecer.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de joel
Val: 3.828
Oro
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Borrar array de cookies

Publicado por joel (1269 intervenciones) el 04/02/2020 21:38:32
Pero, lo que estas haciendo es crear una cookie con el nombre "objeto[1][0]" y no es un array en el que puedas iterrar... es un nombre como puede ser "miCookie", y no existe la variable $_COOKIE['objeto']

Si quieres hacer eso, lo que tienes que hacer es guardar un array en una cookie... algo así:

1
2
miArray=[....];
setcookie("nombre", miArray, time() + 3600);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 43
Ha aumentado su posición en 10 puestos en PHP (en relación al último mes)
Gráfica de PHP

Borrar array de cookies

Publicado por Anonymus (17 intervenciones) el 05/02/2020 10:39:42
Tomo nota, pero aún así tengo mi duda.

Si tengo un array bidimensional con un solo indice y en el que guardo dos valores.

1
$array_cookies = array(array('Valor1','Valor2'));

Y quiero guardarlo en una cookie haría lo siguiente:

1
2
setcookie("articulo[identificador]",$array_cookies[0][0], time() + 30);
setcookie("articulo[cantidad]", $array_cookies[0][1], time() + 30);
Vale, pero ahora al recargar la página (en mi caso es al elegir otro producto) se repite el mismo proceso pero con valores diferentes.

1
$array_cookies = array(array('Valor3','Valor4'));

Pero al ejecutar las cookies lo que haría es que se están sobreescribiendo. ¿Se podría hacer con algún array_push? Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Borrar array de cookies

Publicado por Julio (830 intervenciones) el 05/02/2020 11:19:28
Hola.

Pero es normal que te la sobreescriba, ¿no? Si tienes ésto:

1
2
3
setcookie("identificador", 'Valor 1', time() + 30);
setcookie("identificador", 'Valor 2', time() + 30);
setcookie("identificador", 'Valor 3', time() + 30);

Cada vez que estás llamando a setcookie estás utilizando el mismo nombre para identificarlas, con lo cual las va a sobreescribir siempre. Por mucho que estés cambiando el array de valores, si llamas a las cookies con el mismo identificador, te las va a sobreescribir.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 43
Ha aumentado su posición en 10 puestos en PHP (en relación al último mes)
Gráfica de PHP

Borrar array de cookies

Publicado por Anonymus (17 intervenciones) el 05/02/2020 11:27:19
Si, pero quiero solucinar como hacerlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Borrar array de cookies

Publicado por Julio (830 intervenciones) el 05/02/2020 12:39:25
Hola.

¿El qué, el que no se sobreescriban? Si es ésto, simplemente no les des el mismo nombre a las cookies.

1
2
3
setcookie("identificador_1", 'Valor 1', time() + 30);
setcookie("identificador_2", 'Valor 2', time() + 30);
setcookie("identificador_3", 'Valor 3', time() + 30);

Les cambias el nombre del identificador y listo, tendrás ahora tres cookies distintas. Es lo que quieres, ¿no? Si no es así, no he entendido bien lo que buscas, disculpa.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 43
Ha aumentado su posición en 10 puestos en PHP (en relación al último mes)
Gráfica de PHP

Borrar array de cookies

Publicado por Anonymus (17 intervenciones) el 05/02/2020 13:30:53
Jajajaja no pasa nada. A veces me cuesta explicarme. Te comento lo que tengo en mente.

Estoy haciendo una práctica de web 'tienda' donde puedes seleccionar artículos de tienda y comprar.

Si elegimos, por ejemplo, coger 5 unidades del 'Artículo A' a continuación leo el id del artículo y la cantidad seleccionada.

Lo que quiero es tener la información de todos los productos añadidos y sus cantidades correspondientes.

¿Me explico?

Ahora mismo guardo ese id y esa cantidad en un array bidimensional y a continuación lo gurado en una cookie. Y ahí es donde estoy atascado.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
	$errores = '';
	if ($_POST['cantidad'] <= $resultado[7]) {
		$_id = $_GET['id'];
		$array_cookies = array(array($id, $_POST['cantidad']));
		if (!isset($_COOKIE['carrito'])) {
			setcookie("carrito", $array_cookies, time() + 30); //aqui no me guarda el $array en la cookie
			var_dump($_COOKIE['carrito']);
			die();
		} else {
			//
		}
 
 
		header('Location: carrito.php');
	} else {
		$errores .= '<li>Lo sentimos, no hay stock suficiente</li>';
	}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Borrar array de cookies

Publicado por Julio (830 intervenciones) el 05/02/2020 14:20:31
Hola.

Sí, a ver, entiendo que quieres cookies distintas. Pero lo único que debes hacer es eso, que cada cookie tenga un identificador distinto.

En el código que has puesto, estás nombrado siempre a la cookie como "carrito", por lo que cada vez que guardes una nueva con ese nombre, sobreescribes lo que hay. Deberías ponerle nombres distintos. Por ejemplo

1
setcookie("carrito" . $id, $array_cookies, time() + 30);

De esta forma, el nombre de la cookie será "carrito1", "carrito2", "carrito3" dependiendo del valor de $id. ¿Es ésto lo que necesitabas?

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 43
Ha aumentado su posición en 10 puestos en PHP (en relación al último mes)
Gráfica de PHP

Borrar array de cookies

Publicado por Anonymus (17 intervenciones) el 05/02/2020 18:18:03
Vale, me había hecho un lío entre las cookies y los arrays. Ahora creo que ya lo tengo todo más claro
Muchas gracias ;)

Pero con esto me surge una última duda y termino jajaja.

Esta bien, ahora puedo tener cookies como "carrito1", "carrito7" , "carrito11" etc.

Bien, como puedo de golpe LEER O BORRAR SOLO las cookies que sean "carrito"+$id sin tener que ir una a una
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Borrar array de cookies

Publicado por Julio (830 intervenciones) el 05/02/2020 19:30:58
Hola.

Para borrar una cookie utiliza:

1
unset ($_COOKIE ["nombre"]);

Siendo "nombre" el nombre que le has dado a tu cookie (carrito1, carrito2...). En tu caso, si quisieras borrar todas las cookies creo que te funcionaría lo siguiente:

1
2
3
foreach ($_COOKIE as $cookie) {
  unset($cookie);
}

Si no me equivoco, recorriéndolas así te debería borrar todas las cookies. Si quieres borrar una concreta, utiliza la primera forma.

Déjame comentarte que, si quieres, pásate por mi blog. Aún hay pocos contenidos pero tengo preparados muchos más artículos como puedes ver en el índice de contenidos. De hecho, a partir de la semana que viene iba a empezar a hablar de estructuras de control y arrays. Sería un placer tener un nuevo usuario por allí y que te suscribieras.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar