Seite per Cookie überspringen?
Max
- javascript
Huhu,
Ich will einer Introseite eine "Beim nächsten mal überspringen"-Funktion geben. Folgender Code steht bereit:
<form name="nointro" method="post" action="index.html">
<input type="checkbox" name="nointro" value="yes" onchange="foo"> <font size="2">Diese Seite in Zukunft nicht mehr anzeigen</font><br>
Meine Probleme: Das onchange geht nicht. Ein alert wurde beim Klicken nicht angezeigt. Außerdem wurde ich aus der SelfHTML-Dokumentation nicht schlau, wie ich dem Cookie die Daten gebe. Desweiteren würde der ganze Cookiecode den Code der input stören. Am Wichtigsten: Wie kann ich die Seite still und leise überspringen? Wenn ich per PHP über if einen <meta http-equiv="refresh"> einbaue, legt die Seite eine Gedenksekunde ein und wird trotzdem (für kurze Zeit) geladen.
Ergo:
Wie muss der Cookiecode aussehen?
Wie plaziere ich den Cookiecode ausserhalb des <input>s?
Warum wird das onchange ignoriert?
Wie lese ich per PHP einen Cookie vor dem Laden der Seite aus?
Wie überspringe ich die Seite, ohne dass der User es bemerkt?
MfG
Max
Halihallo Max
<form name="nointro" method="post" action="index.html">
<input type="checkbox" name="nointro" value="yes" onchange="foo"> <font size="2">Diese Seite in Zukunft nicht mehr anzeigen</font><br>
Meine Probleme: Das onchange geht nicht.
Will heissen? - Fehlermeldung?
du hast onchange="foo" stehen. Wenn foo eine Methode darstellen soll, die vorher
definiert ist, muss es foo() heissen. Ansonsten: Wie sieht dein "foo" aus?
Außerdem wurde ich aus der SelfHTML-Dokumentation nicht schlau, wie ich dem Cookie die Daten gebe.
http://selfhtml.teamone.de/javascript/objekte/document.htm#cookie
document.cookie = "Ueberspringen=ja; expires=" + expires.toGMTString();
expires ist hier ein http://selfhtml.teamone.de/javascript/objekte/date.htm-Objekt
dem du die Ablaufzeit des Cookies zuweist (z.B. heute + 14 Tage); siehe Doku.
Desweiteren würde der ganze Cookiecode den Code der input stören.
onchange führt jedwelchen Javascript-Code aus, folglich auch Methodenaufrufe, die du
vorher definieren kannst.
<script type="text/javascript">
function test() { alert('hi!'); }
</script>
<input type="..." onchange="test();" />
Am Wichtigsten: Wie kann ich die Seite still und leise überspringen? Wenn ich per PHP über if einen <meta http-equiv="refresh"> einbaue, legt die Seite eine Gedenksekunde ein und wird trotzdem (für kurze Zeit) geladen.
Du suchst nach:
http://www.php.net/header und "Location: <absolute-URL>".
Keine Verzögerungen und sauberer, denn alles was http-equiv heisst ist HTTP-Equivalent
und hat somit ein "Original" in den HTTP-Headern, welche per PHP mittels "header"
ausgegeben werden können.
Wie muss der Cookiecode aussehen?
Leseraufgabe.
Wie plaziere ich den Cookiecode ausserhalb des <input>s?
Durch Methoden, die du vorher definiert hast und einer Referenz a.k.a. Methodenaufruf
auf jene.
Warum wird das onchange ignoriert?
Halte ich für eine falsche Schlussfolgerung.
Wie lese ich per PHP einen Cookie vor dem Laden der Seite aus?
Mittels $_COOKIE[] Array. BTW: es dürfte dich auch
http://ch2.php.net/manual/de/function.setcookie.php interessieren.
Wie überspringe ich die Seite, ohne dass der User es bemerkt?
Mit den PHP-Statements "
header('Status: 302'); // implizit durch PHP, AFAIK
header('Location: http://www.deine-seite.de/index1.html');"
---
Ich empfehle kein Javascript zu verwenden, wenn du ohnehin eine serverseitige Sprache
verwenden willst, um den Redirect auszuführen. Falls der Besucher kein Intro wünscht,
soll ein PHP-Script "benachrichtigt" werden, welches einen Cookie setzt. Beim Laden der
Indexseite entscheidet sich das Index-PHP-Script, ob das Intro geladen, oder ein
Redirect auf die "andere Startseite" gemacht werden soll.
Viele Grüsse
Philipp