HTML, JavaScript, AJAX, jQuery, CSS, Bootstrap, LESS Probleme mit HTML5, Bootstrap oder jQuery ? |
 |

16-03-2005, 14:37
|
miguel_rkc
Member
|
|
Registriert seit: Aug 2004
Beiträge: 157
|
|
Cookieproblem
Hallo,
einfach gesagt: mittels Klicken eines Links soll ein Cookie gesetzt werden, wenn es nicht schon vorhanden ist, mit dem Namen und Inhalt der mit dem Link übergeben wird.
Problem: Wenn noch kein Cookie vorhanden ist klappt es. Wenn eines vorhanden ist und die Parameter im Link (name, inhalt) geändert werden, dann setzt er zwar das Cookie, aber die anschließende Kontrolle nach dem Aktualisieren der Seite schlägt fehl ("Cookie nicht gesetzt" wird ausgegeben).
Zum testen einfach erstmal ausführen und anschließen aktualisieren, dann Link z.B. in <a href="#" onClick="setzeCookie('testcookie2','blabla');">test</a> ändern und wieder aktualisieren.
Quelltext:
PHP-Code:
<html>
<head>
<script language="javascript" type="text/javascript">
function pruefeCookie(name) {
alleCookies=document.cookie;
// Alle Cookies mittels Separator ";" in Array-Feld legen
cookieArr=alleCookies.split(";");
// für jedes Feld...
for (var i=0;i<cookieArr.length;i++) {
// ... überprüfen, ob vor dem "=" der name mit dem übergebenen Namen überein stimmt
// wenn ja, dann true zurückgeben und Textausgabe
if (cookieArr[i].split("=")[0] == name) {
document.write("Cookie vorhanden");
return true;
}
}
// wenn nein, dann false zurückgeben
return false;
}
function setzeCookie (name, inhalt) {
if (pruefeCookie(name) == false) {
// wenn false zurück gegeben wurde, dann Cookie setzen
document.write("Cookie NICHT vorhanden");
var jetzt = new Date();
var datum = new Date(jetzt.getTime() + 1000*60*60*24*365);
document.cookie = name + "=" + inhalt + "; expires=" + datum.toGMTString() + "; path=/";
}
}
</script>
</head>
<body>
<a href="#" onClick="setzeCookie('testcookie','inhalt eben3');">test</a>
</body>
</html>
Geändert von miguel_rkc (16-03-2005 um 14:39 Uhr)
|

16-03-2005, 15:10
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 25.236
|
|
Re: Cookieproblem
wenn ich mir mal mit dem IE 5 dein beispiel ansehe, und dann mit alert(document.cookie) alle cookies anzeigen lasse, sieht das so aus, als ob die cookies nicht durch ein semikolon, sondern durch semikolon gefolgt von einem blank getrennt sind.
wenn du jetzt also am semikolon splittest, erhältst du für alle cookies außer dem ersten nicht "name=...", sondern " name=..."
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

16-03-2005, 15:23
|
miguel_rkc
Member
|
|
Registriert seit: Aug 2004
Beiträge: 157
|
|
Oh, du hast absolut recht.. danke für den Hinweis, ich werde mich dann mal ran machen das du fixen. Thx!
|

16-03-2005, 15:26
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 25.236
|
|
ich würde zuerst mal prüfen, ob das alle browser so machen (hab derzeit nur den IE 5 zum testen).
wenn ja, kannst du ja einfach "; " zum splitten benutzen, statt ";"
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

16-03-2005, 15:57
|
miguel_rkc
Member
|
|
Registriert seit: Aug 2004
Beiträge: 157
|
|
Haha jo, ich hab mir jetzt ne Funktion geschrieben, die mir das führende Leerzeichen wegmacht, aber mit split("; ") gehts auch
danke nochmal
|

17-03-2005, 14:58
|
miguel_rkc
Member
|
|
Registriert seit: Aug 2004
Beiträge: 157
|
|
geilo, neues problem:
zum löschen des cookies verwende ich folg. funktion, die das ablaufdatum des genannten cookies in die vergangenheit setzt:
PHP-Code:
function loescheCookie (name) {
var datum = "Thu, 01-Jan-70 00:00:01 GMT";
var inhalt = "";
document.cookie = name + "=" + inhalt + "; expires=" + datum + "; path=/";
alert('Cookie: '+name+' gelöscht!');
}
Im Firefox 1.01 funktioniert es ohne Probleme, IE 6 erstellt stattdessen tatsächlich ein Cookie mit dem Namen und (ohne) Wert. Sowieso kann ich im Cookieinhalt nirgendwo das expires erkennen...
licht
aus
localhost/
1088
2865846400
29772225
839585200
29698800
*
Weiss jemand Rat, wie ich das Cookie im IE korrekt lösche?
|

22-03-2005, 11:47
|
miguel_rkc
Member
|
|
Registriert seit: Aug 2004
Beiträge: 157
|
|
[JavaScript] Cookieproblem²
Guten Tag,
sorry, dass ich abermals mit einem Cookieproblem ankomme, jedoch konnte ich weder mit Google, noch mit der Suchfunktion eine Lösung für mein Problem finden.
Also: ich möchte ein Cookie, dass ich im Vornherein korrekt gesetzt habe wieder löschen! Ist simpel, weiss ich, allerdings funktioniert folg. wiedermal nicht im IE (im FF ohne Probleme).
PHP-Code:
function loescheCookie (name) {
var datum = "Thu, 01-Jan-70 00:00:01 GMT";
var inhalt = "";
document.cookie = name + "=" + inhalt + "; expires=" + datum + "; path=/";
}
Das Cookie, dessen Name via 'name' richtig übergeben wird sollte eigentlich aufgrund des in der Vergangenheit liegenden Datums gelöscht werden, stattdessen setzt der IE ein Cookie mit leerem Wert ('inhalt') und komischen Zahlen:
PHP-Code:
hilfe
localhost/
1088
667801216
34459479
4046449712
29699778
*
Weiss jemand Rat?
|

22-03-2005, 12:08
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 25.236
|
|
Re: [JavaScript] Cookieproblem²
so ganz easy scheint es nicht zu sein, mit javascript im IE cookies zu handeln.
aber vielleicht kann http://www.onetwomax.de/magazin/8613...JavaScript.htm weitere hinweise geben.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

22-03-2005, 14:00
|
miguel_rkc
Member
|
|
Registriert seit: Aug 2004
Beiträge: 157
|
|
Ok, also das Script hinter deinem Link funktioniert im IE, nicht aber im FF. Allerdings habe ich mir das jetzt so zurecht gebogen, dass es in beiden Browsern funktioniert.
Falls es jemanden interessiert:
PHP-Code:
function pruefeCookie(name, inhalt) {
alleCookies = document.cookie;
cookieArr = alleCookies.split("; ");
for (var i=0; i<cookieArr.length; i++) {
if (cookieArr[i].split("=")[0] == name) {
if (inhalt != 'wechsel') {
return true;
} else {
inhalt = cookieArr[i].split("=");
inhalt = unescape(inhalt[1]);
return inhalt;
}
}
}
return false;
}
function loescheCookie (name) {
var value = "";
var hours = 0;
var expire = "";
if(hours != null) {
expire = new Date((new Date()).getTime() + hours * 3600000);
expire = "; expires=" + expire.toGMTString();
}
document.cookie = name + "=" + escape(value) + expire;
}
function setzeCookie (name, inhalt) {
if (inhalt == 'wechsel') {
inhalt = pruefeCookie(name, inhalt);
if (inhalt == 'an') {
loescheCookie(name);
setzeCookie(name, 'aus');
window.location.reload();
} else {
loescheCookie(name);
setzeCookie(name,'an');
window.location.reload();
}
}
if (pruefeCookie(name, inhalt) == false) {
var jetzt = new Date();
var datum = new Date(jetzt.getTime() + 1000*60*60*24*365);
document.cookie = name + "=" + inhalt + "; expires=" + datum.toGMTString() + ";";
}
}
Das Script setzt ein Cookie, das erstmal ein Cookie (falls noch nicht vorhanden) mit einem Standardwert setzt und es dann den Inhalt dessen via Buttondruck ändert (hier: aus - an). Zugegebenermaßen ist der Code teilweise doppelt gemoppelt, allerdings schien mir die Browserkompatibilität anders nicht möglich. Ich habe es verwendet, um eine dynamische Hilfe ein- oder auszuschalten (mittels Tootipbibliothek von http://www.walterzorn.de/tooltip/tooltip.htm) Demo gibts hier: http://www.temp.passadeena.de/cookie/
Geändert von miguel_rkc (22-03-2005 um 14:22 Uhr)
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Thema bewerten |
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|