Probleme mit Cookies

Heike2

Grünschnabel
Hallo Programmierer,
ich habe ein Problem.
Ich möchte einen Webshop machen und die Daten per Javascript in den Warenkorb legen.
Die Artikeldaten werden per cookie gespeichert und auf der Warenkorbseite wieder ausgelesen.
Dann wird der Cookie bei einer Bestellung als PHP-Formular gesendet.
Das klappt alles super, nur:
Problem1: Unter der Artikelliste wird immer 'Apache=(Dann eine lange Nummer) angezeigt.
Problem2: Warenkorb leeren funktioniert auch nicht. Die Artikel bleiben immer im Cookie stehen.

Der Code zum erstellen des Cookies:
<!--Cookie erstellen-->
document.cookie = 'meincookie2=meinwert2; expires=Thu, 01-Jan-3070 00:00:01 GMT;';

Der Code zum schreiben in den Cookie:
<!--Cookie beschreiben-->
document.cookie = '<br>Bestellung=Artikeldaten';

Der Code zum löschen des Cookies:
<!--Cookie löschen-->
document.cookie = 'meincookie2=meinwert2; expires=Thu, 01-Jan-1970 00:00:01 GMT;';

Warum wird Apache angezeigt und was bedeutet das?
Den Cookie gebe ich mit "document.write(document.cookie);" aus.




Warum löscht sich der Cookie nicht mehr, damit der Warenkorb leer wird?

Ich hoffe mir kann jemand helfen.

Vielen Dank.


Heike
 
Erst mal prinzipiell: man kann mehrere Cookies setzen.
mit document.cookie holst du alle Cookies, besser gesagt eine Zeichenkette, die paarweise alle Cookies mit ihren Werten enthält.
Es existiert also auch ein Cookie mit Namen "Apache"... woher der kommt, musst du selbst wissen, ich tippe mal, er wurde serverseitig gesetzt.

Den Wert einzelner Cookies kannst du ermitteln, indem du die Zeichenkette, die document.cookie liefert, untersuchst.


Zu dem erfolglosen Löschen des Cookies:
Code:
Der Code zum schreiben in den Cookie:
<!--Cookie beschreiben-->
document.cookie = '<br>Bestellung=Artikeldaten';
...wenn dies der Cookie ist, den du Löschen willst... da fehlt das Ablaufdatum.
Löschen tust du einen anderen cookie, nämlich den zuerst erstellten.

Für Cookies bietet es sich an, zum Setzen, holen und löschen Funktionen zu verwenden... da die Vorgehensweise immer dieselbe ist, erleichtert das die Sache ungemein.

hier mal solche Funktionen.... die Benutzung sollte eigentlich einleuchtend sein:
Code:
<script type="text/javascript">
<!--

    /**
      * Funktion: get_cookie()
      * holt cookie-Wert
      * Parameter:cookie-Name
      * Rückgabewert: cookie-Wert/ false
      **/
      
function get_cookie( cookieName )
{
    strValue = false;
    
    if( strCookie = document.cookie )
        {
            if( arrCookie = strCookie.match( new RegExp( cookieName + '=([^;]*)', 'g')))
                {
                    strValue=RegExp.$1;
                }
        }
    return(strValue);
}
    
    
    /**
      * Funktion:set_cookie()
      * setzt cookie
      * Parameter: cookie-Name,cookie-Wert,Haltbarkeit in Tagen
      * Rückgabewert: true/false
      **/
      
function set_cookie(cookieName,cookieValue,intDays)
{
    if(!is_cookie_enabled())
        {
            return false;
        }
        
    objNow = new Date();
    strExp = new Date( objNow.getTime() + ( intDays * 86400000) );
    document.cookie = cookieName + '=' + 
                      cookieValue + ';expires=' + 
                      strExp.toGMTString() + ';';
    return true;
}


    /**
      * Funktion:delete_cookie()
      * Löscht cookie
      * Parameter: cookie-Name
      * Rückgabewert: true/false
      **/

function delete_cookie(cookieName)
{
    if(document.cookie)
        {
            document.cookie = cookieName + '=' +
                              get_cookie(cookieName) +
                              ';expires=Thu, 01-Jan-1970 00:00:01 GMT;'; 
            return true;
        }
    return false;
}


    /**
      * Funktion is_cookie_enabled()
      * prüft ob cookies erlaubt sind
      * Parameter: nix
      * Rückgabewert: true/false
      **/
      
function is_cookie_enabled()
{
    if(typeof navigator.cookieEnabled!='undefined')
        {
            return navigator.cookieEnabled;
        }
    
    set_cookie('testcookie','testwert',1);
    
    if(!document.cookie)
        {
            return false;
        }
    
    delete_cookie('testcookie');
    return true;        
}

//-->
</script>

Dass und wie das funktioniert, kannst du hier testen: Javascript: cookies setzen, holen, löschen
 
Ich möchte ein Cookie änder, wie mach ich das?

Es handelt sich um ein "PHPSESSID"-Cookie. Ich bin Nutzer des FireFox und habe bereits in der "cookies.sqlite" nachgeschaut. Dort ist diese aber nicht eingetragen.
 
Geht nicht. Es wird nicht übernommen.

Code:
<a href="#" onclick="window.open('http://img3.imagebanana.com/popup/0yr8sn5s/Cookie.bmp.png','ImageBanana','width='+ 683 +',height='+ 184 +',left='+((screen.availWidth - 683 - 10)* .5) +',top='+((screen.availHeight - 184 - 30)* .5));"><img src="http://img3.imagebanana.com/img/0yr8sn5s/thumb/Cookie.bmp.png" style="border:0px;" alt="ImageBanana - Cookie.bmp.png"></a>

Image:
http://img3.imagebanana.com/img/0yr8sn5s/Cookie.bmp.png
 
Zurück