ilch Forum » Allgemein » HTML, PHP, SQL,... » Cookieabfrage über Php

Geschlossen
  1. #1
    User Pic
    E|_3ment Mitglied
    Registriert seit
    03.05.2008
    Beiträge
    33
    Beitragswertungen
    2 Beitragspunkte
    Hallo liebe Ilch Community,
    ich habe folgendes Problem:
    Ich würde gern durch Cookies eine Div verstecken sollte das Cookie durch einen Klick gesetzt worden sein, und die Seite neu geladen wurde.
    Dazu habe ich Folgendes gemacht:
    1)
    <?php
    if (isset($_COOKIE["cookiename"]))
      echo "";
    else
      include 'inhalt.php';
    ?>


    2) inhalt.php
    <div class="closeall" style="margin-bottom:15px;">
    <div id="info" class="box">
    				<div class="box_inner">
    
    					<p class="icon"></p>
    						<p class="text">
    						The Text			
    						</p>
    					<p class="close"><a href="#" onclick="setCookie('cookiename', 1);
    ">x</a></p>
    				</div>
    			</div>
    </div>


    3) Das passende Javascript dazu:
    function setCookie(name,value,days) {
        if (days) {
            var date = new Date();
            date.setTime(date.getTime()+(days*24*60*60*1000));
            var expires = "; expires="+date.toGMTString();
        }
        else var expires = "";
        document.cookie = name+"="+value+expires+"; path=/";
    }
    
    function getCookie(name) {
        var nameEQ = name + "=";
        var ca = document.cookie.split(';');
        for(var i=0;i < ca.length;i++) {
            var c = ca[i];
            while (c.charAt(0)==' ') c = c.substring(1,c.length);
            if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
        }
        return null;
    }
    
    function deleteCookie(name) {
        setCookie(name,"",-1);
    }
    /*
      Changed function names from readCookie(), createCookie()
      and eraseCookie() to getCookie(), setCookie() and
      deleteCookie().
    */


    Soweit klappt alles. Wenn es kein Cookie gibt wird die inhalt.php angezeigt und macht keine Probleme. Mit einem Klick auf das X wird darauf hin ein Cookie gesetzt, das habe ich im Browser nachgeschaut und auch der Name stimmt überein. Wenn ich aber die Seite nochmal aufrufe erscheint die Div noch immer, obwohl der Cookie gesetzt wurde...

    Ich bitte um Hilfe! Vielen Dank,
    mfg E|_3ment
    0 Mitglieder finden den Beitrag gut.
  2. #2
    User Pic
    Jan Hall Of Fame
    Registriert seit
    17.01.2007
    Beiträge
    3.646
    Beitragswertungen
    54 Beitragspunkte
    Wenn JavaScript nicht installiert bzw. deaktiviert ist wird kein Cookie gesetzt.
    Warum nutzt du denn nicht php um den Cookie zu setzen?
    => externer Link

    Liebe Grüße
    Jan
    0 Mitglieder finden den Beitrag gut.
  3. #3
    User Pic
    E|_3ment Mitglied
    Registriert seit
    03.05.2008
    Beiträge
    33
    Beitragswertungen
    2 Beitragspunkte
    Vielen Dank für die schnelle Antwort! Irgendwie ist es ein wenig doof mit JavaScript den Cookie zu setzten und mit Php auszuwerten... Muss ich mir gleich mal ansehen!
    Trotzdem, ist es nicht komisch das mit JavaScript der Cookie gesetzt wird und php ihn nicht erkennt, ist natuerlich dann mein Code Fehler!
    0 Mitglieder finden den Beitrag gut.
  4. #4
    User Pic
    Jan Hall Of Fame
    Registriert seit
    17.01.2007
    Beiträge
    3.646
    Beitragswertungen
    54 Beitragspunkte
    Vielleicht ist der logische Ablauf falsch.

    1. Abfragen, ob Cookie gesetzt
    2. nicht gesetzt, also div anzeigen
    3. Cookie setzen

    => Es ist ein Cookie gesetzt und dein div wird trotzdem angezeigt.
    0 Mitglieder finden den Beitrag gut.
  5. #5
    User Pic
    E|_3ment Mitglied
    Registriert seit
    03.05.2008
    Beiträge
    33
    Beitragswertungen
    2 Beitragspunkte
    Ja aber das doch quasi nur beim ersten Mal! Denn nachdem der Cookie gesetzt wurde und neu abgefragt wird sollte das DIV doch ncht mehr angezeigt werden, oder mache ich da einen Denkfehler?
    0 Mitglieder finden den Beitrag gut.
  6. #6
    User Pic
    kdl Mitglied
    Registriert seit
    21.08.2010
    Beiträge
    333
    Beitragswertungen
    62 Beitragspunkte
    Schließt du zwischendurch den Browser/das Tab?

    Ansonsten könnte es sein, dass das Cookie einfach schon abgelaufen ist, da du bei "setCookie('cookiename', 1)" keine Zeit übergibst.
    Versuch doch einfach mal "setCookie('cookiename', 1, 7)".
    .
    0 Mitglieder finden den Beitrag gut.
  7. #7
    User Pic
    E|_3ment Mitglied
    Registriert seit
    03.05.2008
    Beiträge
    33
    Beitragswertungen
    2 Beitragspunkte
    Achso stimmt das kann gut sein! Ich wollte eigentlich ne leere Value angeben, weil nur der Name überprueft wird und wollte, dass es nach einem Tag entfällt... Muss ich gleich mal ausprobieren!
    Danke für den Tip!
    0 Mitglieder finden den Beitrag gut.
  8. #8
    User Pic
    E|_3ment Mitglied
    Registriert seit
    03.05.2008
    Beiträge
    33
    Beitragswertungen
    2 Beitragspunkte
    Hab folgendes eingesetzt:
    setCookie(\'cookiename\', \'cookiename\', 1);
    Doch das Problem bleibt grumml
    0 Mitglieder finden den Beitrag gut.
Geschlossen

Zurück zu HTML, PHP, SQL,...

Optionen: Bei einer Antwort zu diesem Thema eine eMail erhalten