SELFPHP: Version 5.8.2 Befehlsreferenz - Tutorial – Kochbuch – Forum für PHP Einsteiger und professionelle Entwickler

SELFPHP


Professional CronJob-Service

Suche



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



:: Buchempfehlung ::

Das Zend Framework

Das Zend Framework zur Buchempfehlung
 

:: Anbieterverzeichnis ::

Globale Branchen

Informieren Sie sich über ausgewählte Unternehmen im Anbieterverzeichnis von SELFPHP  

 

:: Newsletter ::

Abonnieren Sie hier den kostenlosen SELFPHP Newsletter!

Vorname: 
Name:
E-Mail:
 
 

Zurück   PHP Forum > SELFPHP > HTML, CSS und JavaScript Help!

HTML, CSS und JavaScript Help! Hier gibt es Hilfe zu HTML, CSS und JavaScript Problemen

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 23.04.2009, 17:08:45
nurich nurich ist offline
Anfänger
 
Registriert seit: Mar 2009
Alter: 48
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!
Mit Zitat antworten
  #2  
Alt 29.04.2009, 00:45:44
Benutzerbild von urvater
urvater urvater ist offline
Senior Member
 
Registriert seit: Feb 2006
Ort: Wallrabenstein
Alter: 55
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.
Mit Zitat antworten
  #3  
Alt 29.04.2009, 09:36:05
nurich nurich ist offline
Anfänger
 
Registriert seit: Mar 2009
Alter: 48
Beiträge: 7
AW: Cookies "überschreiben"

Zitat:
Zitat von urvater Beitrag anzeigen
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
Mit Zitat antworten
  #4  
Alt 29.04.2009, 09:52:27
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
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)
Mit Zitat antworten
  #5  
Alt 29.04.2009, 10:18:11
nurich nurich ist offline
Anfänger
 
Registriert seit: Mar 2009
Alter: 48
Beiträge: 7
AW: Cookies "überschreiben"

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
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 Beitrag anzeigen
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?
Mit Zitat antworten
  #6  
Alt 29.04.2009, 10:46:08
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: Cookies "überschreiben"

http://techpatterns.com/downloads/ja...pt_cookies.php
Mit Zitat antworten
  #7  
Alt 29.04.2009, 10:55:13
nurich nurich ist offline
Anfänger
 
Registriert seit: Mar 2009
Alter: 48
Beiträge: 7
AW: Cookies "überschreiben"

Danke für den Link! Das werde ich mir mal genauer anschauen ...
Mit Zitat antworten
  #8  
Alt 29.04.2009, 13:36:17
nurich nurich ist offline
Anfänger
 
Registriert seit: Mar 2009
Alter: 48
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!
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

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.

BB-Code ist an.
Smileys sind aus.
[IMG] Code ist aus.
HTML-Code ist aus.

Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Nach Header Location sind Cookies weg einsteigi PHP Grundlagen 6 19.03.2009 13:53:04
Login nur mit Cookies einsteigi PHP für Fortgeschrittene und Experten 8 18.03.2009 12:49:04
Sessions, Cookies und session.use_trans_sid Serp PHP für Fortgeschrittene und Experten 7 16.07.2006 06:44:55
Problem mit Sessionweiterleitung mittels header() in Verbindung mit Cookies zUPwire PHP für Fortgeschrittene und Experten 14 16.03.2006 19:24:03
sessions funktionieren nur wenn man cookies blockt no-gi PHP für Fortgeschrittene und Experten 1 11.10.2003 09:38:49


Alle Zeitangaben in WEZ +2. Es ist jetzt 13:05:10 Uhr.


Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.


© 2001-2024 E-Mail SELFPHP OHG, info@selfphp.deImpressumKontakt