Cookie auf Unterseite setzen und Funktion einbauen
lima-city → Forum → Die eigene Homepage → HTML, CSS & Javascript
aufgehen
aufruf
auswertung
benutzer
code
date
datei
eigenschaft
http
nummer
pfad
re
richtige antwort
session
setzen
statuszeile
tag
text
tusch
url
-
Hi an alle!
Ich hab ein kleines Anliegen,
ich möchte auf http://www.hinghaan.lima-city.de/ folgendes tag/re">realisieren:
nach einem Klick auf ein Zahlenfeld soll ein Fenster mit Rätsel aufgehen,nach dem lösen des Rätsels wird ein weiteres Fenster aufgehen und der Aufruf des letzten Fensters (mit Glückwunsch,nem Tusch oder sowas soll ein Cokie setzen.
Auf der Hauptseite soll das Cookie ausgelesen werden und dafür sorgen das man einmal gelöste Rätsel nicht nocheinmal machen muß wenn man die Seite erneut besucht.
vielen Dank schon einmal vorab
Christian
function Geklickt(nummer) { // PopUp-Window Eigenschaften kleines PopUp Fehlermeldung Attribute01 = "left=10,top=10,screenX=10,screenY=10,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=500,height=300"; // PopUp-Window Eigenschaften für die Tagesdatei Attribute02 = "left=10,top=10,screenX=10,screenY=10,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes,width=750,height=600"; var AdventDatum = new Date(); AdventMonat = AdventDatum.getMonth(); AdventTag = AdventDatum.getDate(); // Durchlauf Untersuchungen: Monat, Tag, angeklickte Nummer // dabei Dateiname und PopUp-Window Eigenschaften in Variablen schreiben // grundsätzlich erst einmal 'gemogelt' anzeigen Datei = pfad + "0.htm"; Eigenschaften = Attribute01; // außer: Klicks von Jan - 30. Nov: 'zu früh' anzeigen if(AdventMonat < 1 ) { Datei = pfad + "00.htm"; Eigenschaften = Attribute01; var Info = window.open(Datei,'',Eigenschaften); } // erlaubte Klicks im Dezember if(AdventMonat == 1 && nummer <= AdventTag) { Datei = pfad + nummer + ".htm"; // Eigenschaften = Attribute02; document.getElementById(nummer).src = "transpixel.gif"; var Info = window.open(Datei,'',Eigenschaften); } // nicht erlaubte Klicks im Dezember if(AdventMonat == 1 && nummer > AdventTag) { Datei = pfad + "0.htm"; Eigenschaften = Attribute01; var Info = window.open(Datei,'',Eigenschaften); } } //-->
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Du könntest das per Session realisieren. Dabei weist du jedem Benutzer eine ID zu und speicherst in einem Array, welche Fragen er schon gelöst hat. (http://www.google.de/search?q=session+php).
Ansonsten setzt du das Cookie mittels
und liest es mit der Superglobalensecookie();
dann aus.$_COOKIE
Zwei Links noch diesbezüglich:
http://php.net/manual/de/function.setcookie.php
http://www.php.net/manual/de/reserved.variables.cookies.php
Vorteile sessionbasiert:
* Werte werden auf dem Server gespeichert -> keine Manipulation möglich
* Ist einfacher, da Cokkies, etc. automatisch gespeichert werden
Nachteile:
* Session nicht unendlich lang gültig -
ich glaube mit Session das funktioniert nicht,da es so geplant ist jeden Tag nur ein Fensterchen zu öffnen,oder geht das doch?
Beitrag zuletzt geändert: 28.2.2011 19:02:23 von hinghaan -
also ich finde erstens:
die auswertung der klicks und die angabe was dann passiert sollte muss dringend serverseitig also sagen wir in php erfolgen.
zweitens:
den user tag-übergreifend, also meinetwegen ip-wechselnd und browserupgradent eindeutig auszumachen funktioniert wohl nur über cookie - aber was wenn er den löscht - oder der browser auf sicher gestellt ist ?
also muss ein log-in mit user/pass her !
dazu dann am besten eine datenbank worin du auch gleich für jeden user die fortschrittszustände ablegen kannst.
Beitrag zuletzt geändert: 28.2.2011 22:06:35 von kleines-ich -
Mit Session nicht, nein. Aber mit Cookies schon. Das Problem ist halt, dass es ziemlich aufwendig ist, der Session eine Überlebenszeit von mehreren Tagen zu geben. Gut, aufwendig vielleicht nicht gerade (reicht eine Funktion), aber nicht der gute Stil und nicht Sinn von Sessions.
Ansonsten - wie schon geschrieben - mit
den Cookie setzen und mittels der Superglobalensetcookie([params]);
auslesen. Ist keine unschaffbare Aufgabe!$_COOKIE
Was du machen kannst, wenn du deinen Benutzern nicht traust, dass du in deinem Cookie - ähnlich eines Session-Cookie - eine eindeutige Benutzer-ID zuweist und die zugehörigen Daten in einer Datenbank speicherst.
Problem hierbei: Wenn der Nutzer seine Cookies deaktiviert hat, bzw. nach dem Browsen alle löscht. Da hilft aber Session & Cookie nicht weiter... -
Danke Euch ersteinmal,mit so schnellen Antworten habe ich nicht gerechnet,aber zuviel Aufwand wollte ich nicht damit treiben,wenn der Nutzer Cookies löscht oder deaktiviert,bekommt er den Hinweis,das er beim nächsten Aufruf der Seite alle schon gelösten Rätsel nocheinmal lösen muß.
im ursprünglichen Script (ihr verzeiht mir bitte,bis gestern konnte ich javaschript nicht einmal schreiben )
wurde das unsichtbar schalten des Deckblattes so gelöst
function Geklickt(nummer) { document.getElementById(nummer).src = "transpixel.gif"; }
die Werte kommen aus diesen Zeilen
<td><a href="javascript:void(0)" onclick="javascript:Geklickt(1)"><img src="1.gif" id="1" alt="1" border="0" height="100" width="100"></a></td> <td><a href="javascript:void(0)" onclick="javascript:Geklickt(2)"><img src="2.gif" id="2" alt="2" border="0" height="100" width="100"></a></td> <td><a href="javascript:voi
wie realisiert man das mit einem Cookie?
Wäre es möglich in die Funktion geklickt den Aufruf der Rätselseite einzubauen,bei erfolgreichem Rätsellösen eine Seite mit Glückwünschen und Tusch und gleichzeitig wird ein Cookie geschrieben und ein Button führt wieder auf die Hauptseite wo gleichzeitig das Cookie ausgelesen wird um mit "document.getElementById..."das entsprechende Rätselfeld transparent zu schalten? -
Und da muss ich mir doch glatt einen sehr großen Fehler eingestehen...Tut mir wirklich Leid. Bitte entschuldigt mich.
Wer lesen kann ich klar im Vorteil...Ich hatte angenommen, du willst das per PHP lösen, dann wären meine Linkvorschläge usw. genau richtig.
Für JavaScript gibts n gutes Tutorial:http://www.html-world.de/program/js_e_6.php.
Das Realisieren deines Anliegens:
Wie hast du die Überprüfung des Rätsels gemacht? Ist das eine JavaScript-Funktion oder eine serverseitige? Bei JavaScript schreibst du dir eine Funktion, die das aktuelle Cookie liest, löscht und dann plus der neuen Aufgabennummer speicherst (Meines Wissens gibt es keine Funktion, die Cookies bearbeitet).
Diese Funktion rufst du auf, nachdem du erfolgreich geprüft hast, dass das Rätsel gelöst wurde.
Zum Auslesen schreibst du dir eine Funktion, die einen Übergabeparameter der Aufgabennummer erhält und dann true oder false zurückgibt, ob die Nummer im Cookie steht.
Soweit erst einmal die Denkanstöße. Falls du direkten Code brauchst, kann ich dir leider im Moment nicht sehr viel weiterhelfen, da ich von JavaScript nicht viel Ahnung habe. Aber alle Achtung, dass du in so kurzer Zeit schon so viel gelernt hast! -
entschuldigen,wofür?
für deine hilfsbereitschaft??
Vielen Dank dafür,das du dir überhaupt die Mühe gemacht und Gedanken wie man das Problem bewältigen kann!
Wie hast du die Überprüfung des Rätsels gemacht?
noch gar nicht,wird aber über onload beim aufrufen der Gratulationsseite hinauslaufen.
Hauptseite - Rätselseite (mehrere Antworten ,die richtige Verlinkt auf - Glückwunschseite
Was ich noch nicht verstehe,wie ich
per function machen soll,weil das "onclick" auch gleichzeitig definiert welcher Bereich transparent gezeichnet wird.<td><a href="javascript:void(1)" onclick="javascript:Geklickt(1)"><img src="1.gif" id="1" alt="1" border="0" height="100" width="100"></a></td
-
hinghaan schrieb:
Hi an alle!
Ich hab ein kleines Anliegen,
ich möchte auf http://www.hinghaan.lima-city.de/ folgendes realisieren:
nach einem Klick auf ein Zahlenfeld soll ein Fenster mit Rätsel aufgehen,nach dem lösen des Rätsels wird ein weiteres Fenster aufgehen und der Aufruf des letzten Fensters (mit Glückwunsch,nem Tusch oder sowas soll ein Cokie setzen.
also hinghaan bei aller liebe, selbst wenn die auswertung wirklich client-seitig in javascript ablaufen soll solltest du wenigstens die parameterübergabe deiner bild-klick-events weniger auffällig gestalten sonst sieht ja jeder hans direkt in der statuszeile die richtige antwort.
siehe http://www.html-world.de/artikel/art_j15.php
Eine nette - wenn auch manchmal nervende - Spielerei mit cookies ist das merken des Besuchernamens sowie das anschließende wiedererkennen des Besuchers und eine entsprechende Begrüßung. Alles was dazu benötigt wird ist der ausgefragte Name der gespeichert werden muss. Später wird er einfach wieder ausgelesen und in den Begrüßungstext eingebaut. Beispiel:
function Schreiben(n,w,e) { var a = new Date(); a = new Date(a.getTime() +e); document.cookie = n+'='+w+'; expires='+a.toGMTString()+';'; } function Lesen(n) { a = document.cookie; res = ''; while(a != '') { cookiename = a.substring(0,a.search('=')); cookiewert = a.substring(a.search('=')+1,a.search(';')); if(cookiewert == '') {cookiewert = a.substring(a.search('=')+1,a.length);} if(n == cookiename){res = cookiewert;} i = a.search(';')+1; if(i == 0){i = a.length} a = a.substring(i,a.length); } return(res) } function Loeschen(n) { document.cookie = n+'=; expires=Thu, 01-Jan-70 00:00:01 GMT;'; } text = 'Willkommen %1 auf unserer Homepage!'; function NameMerken() { a = prompt('Hallo Besucher. Bitte geben Sie Ihren Namen ein.'); Schreiben('username',a,1000*60*60*24*365); NameHolen(); } function NameHolen() { if(document.cookie) { username = Lesen('username'); if(username != '') { b = text.replace('%1',username); document.writeln(b); } } else{NameMerken()} }
-
sonst sieht ja jeder hans direkt in der statuszeile die richtige antwort.
sieht er erst wenn er die richtige Antwort gegeben hat,weil das Cookie nicht von der Antwort abhängt sondern erst wenn die richtige Seite aufgerufen wird wird es generiert.
Beispiel:Welche Farbe hat der Himmel?
a) rot - Link Seite a
b) grün - Link Seite b
c) blau - Link Seite c ,richtige Seite mit dem Code für den Cookie -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage