• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Werte aus Cookie löschen

Al-Pi

New member
Hallo zusammen,

ich versuche mit folgender php script bestimmte Werte aus einer Cookie Datei zulöschen.
leider ändert sich der Inhalt nicht.

PHP:
<?
if (isset( $_COOKIE['favi_demo'] ))
{
	//daten sammeln
	$cookieInhalt = $_COOKIE['favi_demo']; // Inhalt=  16|25|18|33
	$cookieArray = explode("|", $cookieInhalt); //trenzeichen
	$cookieTime = time() + 3600 * 24 * 10 ; //gültigkeit
	$IDdel = $HTTP_GET_VARS['delid']; //löschlink .php?delid=18
	
	
	//prüfen ob id im cookie vorhanden ist und gegebenfalls löschen
	$checkIDdel = true; 
	foreach ($cookieArray as $key)
	{					
		if (trim($key) == $IDdel) //durchsuchen
		{ 
			$checkIDdel = false;
			break;			
		} 
	}
				
	if ($checkIDdel)
	{
		
		$faviInfo = 'nicht gefunden';
	} 
	else
	{				
		unset($cookieArray[$key]);  //gefunden löschen
		foreach ($cookieArray as $newArray) 
		{
			$newArray = implode("|", $cookieArray);
			setcookie( 'favi_demo', $newArray, $cookieTime );
			$faviInfo = 'gefunden';		
		}
	}

}
?>

ich vermute dass ich in folgender abschnitt ein Fehler mache und die alten Werte wieder in die Cookie schreibe.

PHP:
		foreach ($cookieArray as $newArray) 
		{
			$newArray = implode("|", $cookieArray);
			setcookie( 'favi_demo', $newArray, $cookieTime );	
		}


wäre für jede hilfreiche antwort dankbar !
 
Die Schleife beim schreiben des Cookies ist falsch bzw. unnötig, da du da die ganze Zeit das gleiche machst. Bei jedem Durchgang das gleiche.

Aber das ist nicht die Ursache deines Problems.

Das kommt von falschen Annahmen: in $key ist nicht der Index des zu löschenden Inhalts, sondern der Inhalt selbst gespeichert. Deswegen macht das unset auch nicht das, was du gerne von ihm hättest. Warum verwendest du nicht array_search() um den Index des Wertes zu bekommen?
 
Hallo kkapsner,

vielen dank für den hinweis und tip,
der code ist nun viel kürzer und funktioniert

PHP:
	if(($key = array_search($IDdel, $cookieArray)) !== false) 
	{
    	unset($cookieArray[$key]);
		$newCookie = implode("|", $cookieArray);
		setcookie( 'favi_demo', $newCookie, $cookieTime );
	}
 
Zurück
Oben