CronJob-Service
bei SELFPHP mit ...
|
+ minütlichen Aufrufen
+ eigenem Crontab Eintrag
+ unbegrenzten CronJobs
+ Statistiken
+ Beispielaufrufen
+ Control-Bereich
Führen Sie mit den CronJobs von
SELFPHP zeitgesteuert Programme
auf Ihrem Server
aus. Weitere Infos
|
:: Anbieterverzeichnis ::
Globale Branchen
Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP
:: Newsletter ::
Abonnieren Sie hier den kostenlosen
SELFPHP Newsletter!
|
HTML, CSS und JavaScript Help! Hier gibt es Hilfe zu HTML, CSS und JavaScript Problemen |
23.04.2009, 17:08:45
|
Anfänger
|
|
Registriert seit: Mar 2009
Alter: 49
Beiträge: 7
|
|
Cookies "überschreiben"
Hallo,
habe auf meiner neuen Website einige Div-Container, die man mit Hilfe von JS auf- und zuklappen kann. Ein Cookie sorgt dafür, dass die Einstellungen erhalten bleiben, auch wenn der Besucher die Seiten wechselt. Soweit so gut ...
Nun habe ich aber das Problem, dass die Einstellungen nur auf der Root-Ordner-Ebene bleibend verändert werden können. Wenn ich auf eine Seite gehen, die in einem Unterordner liegt, bleiben die Container zwar auf-, bzw. zugeklappt, aber wenn ich einen Container dort wieder auf- oder zuklappe und die Seite neu lade, gehen die Einstellungen verloren.
Das Script habe ich irgendwo im Internet gefunden (weiß aber nicht mehr wo), und an meine Bedürfnisse angepasst. Mein Wissen reicht jetzt aber leider nicht mehr aus, um den letzten "Feinschliff" daran vorzunehmen ... vielleicht kann mir ja von euch jemand helfen?
Hier der Code:
Code:
var BUTTONTEXT1 = [ "- klick -" , "- klick -" ];
var BUTTONTEXT2 = [ "- klick -" , "- klick -" ];
var BUTTONTEXT3 = [ "- klick -" , "- klick -" ];
var BUTTONTEXT4 = [ "- klick -" , "- klick -" ];
var BUTTONTEXT5 = [ "- klick -" , "- klick -" ];
var BUTTONTEXT6 = [ "- klick -" , "- klick -" ];
function initPage()
{
// "Shortcuts" für die benutzten HTML-Elemente
oDiv1 = document.getElementById( "Div1" );
oDiv2 = document.getElementById( "Div2" );
oDiv3 = document.getElementById( "Div3" );
oDiv4 = document.getElementById( "Div4" );
oDiv5 = document.getElementById( "Div5" );
oDiv6 = document.getElementById( "Div6" );
oButton1 = document.getElementById( "Button1" );
oButton2 = document.getElementById( "Button2" );
oButton3 = document.getElementById( "Button3" );
oButton4 = document.getElementById( "Button4" );
oButton5 = document.getElementById( "Button5" );
oButton6 = document.getElementById( "Button6" );
myCookies = getCookies();
if ( myCookies[ "HIDEDIV1" ] == 0 )
{
oDiv1.style.display = "none";
oButton1.firstChild.nodeValue = BUTTONTEXT1[ 1 ];
}
if ( myCookies[ "HIDEDIV2" ] == 0 )
{
oDiv2.style.display = "none";
oButton2.firstChild.nodeValue = BUTTONTEXT2[ 1 ];
}
if ( myCookies[ "HIDEDIV3" ] == 0 )
{
oDiv3.style.display = "none";
oButton3.firstChild.nodeValue = BUTTONTEXT3[ 1 ];
}
if ( myCookies[ "HIDEDIV4" ] == 0 )
{
oDiv4.style.display = "none";
oButton4.firstChild.nodeValue = BUTTONTEXT4[ 1 ];
}
if ( myCookies[ "HIDEDIV5" ] == 0 )
{
oDiv5.style.display = "none";
oButton5.firstChild.nodeValue = BUTTONTEXT5[ 1 ];
}
if ( myCookies[ "HIDEDIV6" ] == 0 )
{
oDiv6.style.display = "none";
oButton6.firstChild.nodeValue = BUTTONTEXT6[ 1 ];
}
};
function box1()
{
var isHidden1 = ( oDiv1.style.display != "block" ) ? 1 : 0;
oDiv1.style.display = ( isHidden1 ) ? "block" : "none";
oButton1.firstChild.nodeValue = BUTTONTEXT1[ isHidden1 ];
setCookie( "HIDEDIV1" , isHidden1 );
}
function box2()
{
var isHidden2 = ( oDiv2.style.display != "block" ) ? 1 : 0;
oDiv2.style.display = ( isHidden2 ) ? "block" : "none";
oButton2.firstChild.nodeValue = BUTTONTEXT2[ isHidden2 ];
setCookie( "HIDEDIV2" , isHidden2 );
}
function box3()
{
var isHidden3 = ( oDiv3.style.display != "block" ) ? 1 : 0;
oDiv3.style.display = ( isHidden3 ) ? "block" : "none";
oButton3.firstChild.nodeValue = BUTTONTEXT3[ isHidden3 ];
setCookie( "HIDEDIV3" , isHidden3 );
}
function box4()
{
var isHidden4 = ( oDiv4.style.display != "block" ) ? 1 : 0;
oDiv4.style.display = ( isHidden4 ) ? "block" : "none";
oButton4.firstChild.nodeValue = BUTTONTEXT4[ isHidden4 ];
setCookie( "HIDEDIV4" , isHidden4 );
}
function box5()
{
var isHidden5 = ( oDiv5.style.display != "block" ) ? 1 : 0;
oDiv5.style.display = ( isHidden5 ) ? "block" : "none";
oButton5.firstChild.nodeValue = BUTTONTEXT5[ isHidden5 ];
setCookie( "HIDEDIV5" , isHidden5 );
}
function box6()
{
var isHidden6 = ( oDiv6.style.display != "block" ) ? 1 : 0;
oDiv6.style.display = ( isHidden6 ) ? "block" : "none";
oButton6.firstChild.nodeValue = BUTTONTEXT6[ isHidden6 ];
setCookie( "HIDEDIV6" , isHidden6 );
}
function getCookies()
{
var result = [] , i , values ,
storedCookies = document.cookie.split(";");
for ( i=0;i<storedCookies.length;i++)
{
values = storedCookies[ i ].split("=");
result[ values[0].replace(/^ /,'') ] = values[ 1 ];
};
return result;
}
function setCookieTime( days )
{
if ( !days )
return ( new Date( 2037 , 0 , 1 )).toGMTString();
return new Date( ( new Date().getTime() + 1000 * 3600 * 24 * days ) ).toGMTString();
}
function setCookie( name , value )
{
document.cookie = name + "=" + unescape( value ) + ";"+
"expires=" + setCookieTime() + ";";
}
function deleteCookie( cookieName )
{
document.cookie = coookieName + "=;expires=" + setCookieTime( -1 );
}
Der Code für die Div-Container sieht folgendermaßen aus:
Code:
<button onclick="box3()" id="Button3" class="flip">- klick -</button>
<div id="Div3" class="box" style="padding:0; display:block">
<?php include SCRIPT_PHP . "shoutbox/shoutbox.inc.php"; ?>
</div>
Das JS wird ganz am Ende der Seite so eingebunden:
Code:
<script type="text/javascript">
initPage();
</script>
Wäre echt nett, wenn mal jemand drüberschauen könnte ...
Vielen Dank!
|
29.04.2009, 00:45:44
|
|
Senior Member
|
|
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 56
Beiträge: 1.044
|
|
AW: Cookies "überschreiben"
Ich würde eher vermuten, daß deine Cookies auf den Unterseiten nicht korrekt erstellt bzw. gesetzt werden.
Du solltest die Cookieverwaltung dort mal mit der "Hauptseite" vergleichen.
|
29.04.2009, 09:36:05
|
Anfänger
|
|
Registriert seit: Mar 2009
Alter: 49
Beiträge: 7
|
|
AW: Cookies "überschreiben"
Zitat:
Zitat von urvater
Ich würde eher vermuten, daß deine Cookies auf den Unterseiten nicht korrekt erstellt bzw. gesetzt werden.
Du solltest die Cookieverwaltung dort mal mit der "Hauptseite" vergleichen.
|
Hallo urvater,
vielen Dank für deine Antwort!
Also ich weiß jetzt nicht genau, was du mit Cookieverwaltung meinst, aber eigentlich gibt es beim Einbinden des Scripts keine Unterschiede von den "Haupt-" zu den "Unterseiten". Das heißt, dass ich die index.php eigentlich nur in die Unterordner kopiert und dort eben die Pfade angeglichen habe. Den Pfad zum JS hab ich kontrolliert, der sollte eigentlich stimmen - sonst würden die Container beim klick ja auch nicht auf-, bzw. zuklappen.
Wie auch bei den Hauptseiten wird die Funktion auf den Unterseiten ganz am Ende mit dem Befehl geladen:
Code:
<script type="text/javascript">
initPage();
</script>
Könnte der Fehler vielleicht hier liegen? Normalerweise wird die Funktion ja mit
Code:
<body onload initPage()>
gestartet. Aber das funktioniert bei mir nicht wegen den PHP-includes - nutze ich nämlich den body-onload Befehl werden die includes nicht mehr eingebunden.
Die Seite habe ich jetzt mal hochgeladen. Wenn sich jemand ein konkretes Bild machen möchte:
medienteufel.net
Grüße, nurich
|
29.04.2009, 09:52:27
|
SELFPHP Experte
|
|
Registriert seit: Jun 2008
Alter: 16
Beiträge: 2.269
|
|
AW: Cookies "überschreiben"
Zitat:
Aber das funktioniert bei mir nicht wegen den PHP-includes - nutze ich nämlich den body-onload Befehl werden die includes nicht mehr eingebunden.
|
Das hört sich unsinnig an.
Wie sollte JS das Laden von PHP verhindern können?
Zitat:
Das heißt, dass ich die index.php eigentlich nur in die Unterordner kopiert und dort eben die Pfade angeglichen habe.
|
Wenn die (index)Dateien in verschiedenen Ordnern liegen, dann sehen und verwalten sie auch normalerweise, jeweils ihre eigenen Cookies. Es sei denn, du stellst den Cookiepath auf "/"
Geändert von DokuLeseHemmung (29.04.2009 um 09:52:55 Uhr)
|
29.04.2009, 10:18:11
|
Anfänger
|
|
Registriert seit: Mar 2009
Alter: 49
Beiträge: 7
|
|
AW: Cookies "überschreiben"
Zitat:
Zitat von DokuLeseHemmung
Das hört sich unsinnig an.
Wie sollte JS das Laden von PHP verhindern können?
|
Öhm, sorry, jetzt blicke ich nicht mehr durch. Hab gerade lokal nochmal getestet, und das funktioniert tatsächlich einwandfrei mit dem body-onload. Dachte das wäre das Problem gewesen, aber scheint alles zu funktionieren ...
Wie auch immer, in Bezug auf das JavaScript und die Div-Container hat es aber nix gebracht. Das "Problem" bleibt.
Zitat:
Zitat von DokuLeseHemmung
Wenn die (index)Dateien in verschiedenen Ordnern liegen, dann sehen und verwalten sie auch normalerweise, jeweils ihre eigenen Cookies. Es sei denn, du stellst den Cookiepath auf "/"
|
Also "erkannt" werden die Cookies ja auch von den Seiten in höheren Ordner-Ebenen. Sonst wären ja auch die Einstellungen futsch, die man auf den Hauptseiten (index, kontakt, impressum, etc) vorgenommen hat. Die bleiben aber erhalten. Nur kann man den Cookie nicht überschreiben, wenn man auf einer Seite ist, die auf einer höheren Ordner-Ebene liegt (bspw. buli-für-lau) ...
Dumme Frage, wie kann ich denn den Cookiepath auf "/" setzen?
|
29.04.2009, 10:46:08
|
SELFPHP Experte
|
|
Registriert seit: Jun 2008
Alter: 16
Beiträge: 2.269
|
|
AW: Cookies "überschreiben"
|
29.04.2009, 10:55:13
|
Anfänger
|
|
Registriert seit: Mar 2009
Alter: 49
Beiträge: 7
|
|
AW: Cookies "überschreiben"
Danke für den Link! Das werde ich mir mal genauer anschauen ...
|
29.04.2009, 13:36:17
|
Anfänger
|
|
Registriert seit: Mar 2009
Alter: 49
Beiträge: 7
|
|
AW: Cookies "überschreiben"
So, nach ewigem Probieren geb ich es jetzt auf. Ich bekomme das Script einfach nicht an meine Bedürfnisse angepasst ...
Ist zwar schade, aber auch nicht so wild - mein erstes Script war ja schon annähernd perfekt ;) und gelernt hab ich auch nochmal einiges dabei: Ich muss mich erst mal mit JS auseinandersetzen, bevor ich daran gehe, Scripte perfektionieren zu wollen ... da fehlen mir schlicht und einfach die Grundlagen zu.
Danke euch allen nochmal für eure Hilfe!
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
Themen-Optionen |
|
Ansicht |
Linear-Darstellung
|
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.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 11:53:55 Uhr.
|