Antworten auf deine Fragen:
Neues Thema erstellen

[PHP] Cookie-Problem

nullnullsix

foto.Graf

Hallo Menschen!

Ich habe ein Problem, und zwar bin ich gerade dabei auf einer Homepage einen Besucher zu installieren. Der Zähler besteht aus zwei Modulen, Modul1 speichert wie oft die Seite aufgerufen wurde, und Modul2 speichert das Ganze nochmal aber in einem anderen Ordnersystem (Ordner für jeden Wochentag/wochentag_tageszeit.txt)
Bei Beiden Speichervorgängen, gibt es eine Cookie-Abfrage um Wiederholungen zu vermeiden. Beim Ersten Vorgang (Normaler Besucherzähler) funktioniert das wunderbar, die wiederholung wird ausgefiltert.

Code:
    $datei_name = "besucher.txt";
    $dz = fopen($datei_name, "r");
    $counter = fread($dz,20);
    fclose($dz);
    $besucher = $_COOKIE['besucher'];
    if(!isset($besucher)){
        setcookie ("besucher","ja");
        $counter++;
        $dz = fopen($datei_name, "w");
        fwrite($dz, $counter);
        fclose($dz);
}
Beim zweiten Vorgang (Besucherzähler für Statistik) funktioniert das nicht. Der cookie wird zwar gesetzt, aber bei der nächsten abfrage nicht erkannt! im folgenden code sind die variablen $tag und $stunde modifizierte date(); ergebnisse.

Code:
$datei_name_stat = "statistik/tag-zugriff/".$tag."/".$tag."_".$stunde.".txt";
if(!file_exists($datei_name_stat)){
    $dz_stat = fopen($datei_name_stat, "w");
    fwrite($dz_stat, "1");
    fclose($dz_stat);
}
    $cookie_name_stat = $tag."_".$stunde;
    $cookie = $_COOKIE['$cookie_name_stat'];
    if(!isset($cookie)){
        setcookie("$cookie_name_stat","visited");
        $dz_stat = fopen($datei_name_stat, "r");
        $counter_stat = fread($dz_stat, 10000) + 1;
        fclose($dz_stat);
        $dz_stat = fopen($datei_name_stat, "w");
        fwrite($dz_stat, $counter_stat);
        fclose($dz_stat);
    }else{echo $cookie_name_stat;}//diese klammer ist das ende der cookie-abfrage
Seht ihr warum das if(!isse($cookie)) ignoriert wird? ich habe keine ahnung!
Danke für eure Hilfe
Viele Grüße
nullnullsix
 

nullnullsix

foto.Graf

AW:
PHP:
 Cookie-Problem[/b]

Hey!
Erstmal danke, dass du dich durch den code durchgelesen hast! :):)
Ich versteh ehrlichgesagt gerade nicht was du mir damit sagen willst! Soll ich bei setcookie($cookie_name_stat, "visited") die anführungstriche weg machen? ich teste mal! danke!
 

netbandit

Aktives Mitglied

AW:
PHP:
 Cookie-Problem[/b]

Hallo nullnullsix,

meinte eigentlich:

[quote]
<?
$datei_name_stat = "statistik/tag-zugriff/".$tag."/".$tag."_".$stunde.".txt";
if(!file_exists($datei_name_stat)){
    $dz_stat = fopen($datei_name_stat, "w");
    fwrite($dz_stat, "1");
    fclose($dz_stat);
}
    $cookie_name_stat = $tag."_".$stunde;
    $cookie = $_COOKIE[[B][COLOR=Red]'[/COLOR][/B][COLOR=Red][B]$cookie_name_stat[/B][B]'[/B][/COLOR]];
    if(!isset($cookie)){
        setcookie([B][COLOR=Red]"$cookie_name_stat"[/COLOR][/B],"visited");
        $dz_stat = fopen($datei_name_stat, "r");
        $counter_stat = fread($dz_stat, 10000) + 1;
        fclose($dz_stat);
        $dz_stat = fopen($datei_name_stat, "w");
        fwrite($dz_stat, $counter_stat);
        fclose($dz_stat);
    }else{echo $cookie_name_stat;}//diese klammer ist das ende der cookie-abfrage
?>
[/quote]Da kannst Du bei beiden die Anführungszeichen (Nicht unbedingt fasch) und die Hochkommas (falsch) weglassen.

Btw. macht es mehr Sinn zu prüfen ob [B]$_COOKIE[$cookie_name_stat][/B] vorhanden ist (anstelle von [B]$cookie[/B]). $cookie hast Du vorher definiert, ist also auf jeden Fall vorhanden (Es sei denn $cookie ist NULL).

Vorsichtshalber; also statt:

[php]
if(!isset($cookie)){
...
PHP:
if(!isset($_COOKIE[$cookie_name_stat])){
...
Sind so die ersten Sachen die mir aufgefallen sind.

Grüße
 
Zuletzt bearbeitet:

nullnullsix

foto.Graf

AW:
PHP:
 Cookie-Problem[/b]

[COLOR=Red][SIZE=6]MAAAN!

[COLOR=Black][SIZE=2]Dankeschön!!! Das ich das nicht gesehen hab! So blind kann man sein!=)



[/SIZE][/COLOR][/SIZE][/COLOR][code][COLOR=#000000][COLOR=#007700]if(!isset([/COLOR][COLOR=#0000bb]$cookie[/COLOR][COLOR=#007700])){
...  [/COLOR][/COLOR][/code][COLOR=Red][SIZE=6][COLOR=Black][SIZE=2]
Das funktioniert schon, bei der ersten Cookie-abfrage mach ichs ja genauso! 

LG
nullnullsix

-EDIT-

Ich war glaub ich ein wenig zu überschwänglich!!!
Es funktioniert immernoch nicht!
[php]$cookie_name_stat = $tag."_".$stunde;
    if(!isset($_COOKIE['$cookie_name_stat'])){
        setcookie($cookie_name_stat,"visited");
        $dz_stat = fopen($datei_name_stat, "r");
        $counter_stat = fread($dz_stat, 10000) + 1;
        fclose($dz_stat);
        $dz_stat = fopen($datei_name_stat, "w");
        fwrite($dz_stat, $counter_stat);
        fclose($dz_stat);
    }else{echo $cookie_name_stat;}//diese klammer ist das ende der cookie-abfrage
Das echo $cookie_name_stat im ELSE hab ich zu testzwecken hinzugefügt um zu sehen ob das ausrufezeichen vor "isset" überhaupt interpretiert wird. anscheinend nicht! ich bin ratlos!
[/SIZE][/COLOR][/SIZE][/COLOR]
 
Zuletzt bearbeitet:

saila

Moderatorle

AW:
PHP:
 Cookie-Problem[/b]

Hi,

ich meng mich hier mal mit ein. Vorab - wenn du prüfen willst ob Daten vorhanden oder nicht vorhanden sind zu POST, GET oder COOKIE empfiehlt es sich eine REQUEST-Ausgabe machen zu lassen. Sprich
[php]
<?php
echo '<pre>'; print_r($_REQUEST); echo '</pre>';
?>

Auf diesem Wege kannst du sehen, ob - wie in deinem Fall - ein Cookie gesetzt wurde oder nicht und ob es Daten liefern kann oder nicht.

In deinem ersten Beispiel, übergibst du Daten aus einem cookie, was offensichtlich nicht existiert und in deinem letzten Post machst du im Grunde wieder das selbe. Du prüfst auch jedes mal auf Nichtvorhandensein und vernachlässigst die Gegenprüfung auf Vorhandesein.

Reicht dies als Anstoss?
 

netbandit

Aktives Mitglied

AW:
PHP:
 Cookie-Problem[/b]

Und packst $cookie_name_stat schon wieder in einfache Anführungszeichen. :uhm:

[php]

$cookie_name_stat='test';

echo $cookie_name_stat; // gibt test im Browser aus (richtig)
echo "$cookie_name_stat"; // gibt test im Browser aus (richtig, aber übertrieben da PHP erst nach der Variabel im String suchen muss)
echo '$cookie_name_stat'; // gibt $cookie_name_stat im Browser aus (falsch)
Grüße
 

Chriss1987

me.drinkCoffee();

AW:
PHP:
 Cookie-Problem[/b]

Hi,

netbandit hat schon Recht, ums mal anders zu formulieren:
Strings in einfachen Anführungszeichen werden NICHT nach Variablen durchsucht.
Strings in normalen Anführungszeichen werden nach Variablen durchsucht!

Schöne Grüße aus dem Sauerland!
Chriss
 

nullnullsix

foto.Graf

AW:
PHP:
 Cookie-Problem[/b]

Hey!
Ich fang mal der Reihe nach an mit dem beantworten:

@saila Das mit Request hab ich auchschon gehört, aber eben auch, dass es besser ist, wenn man explizit mit $_COOKIE, oder $_POST (oder get) aufruft!
Was hat es sich mit [php]echo '<pre>'
auf sich? ich hab grad eben gegoogelt und nichts wirklich brauchbares gefunden!

@netbandit
Oh ja stimmt! Stimmt ich tat es, weil ich gelernt habe, den cookie/wert ausm Array mit $_COOKIE['cookie']; zu übernehmen, daran dass das schwachsinn im Bezug auf eine Variable ist hab ich nicht gedacht! Allerdings hat mir Dreamweaver den nachfolgenden Code sehr unschön gefärbt als ich die anführungsstriche weggelassen habe, was mich stutzig gemacht hat! Ich denke ich mach das einfach mit " . Ich teste mal!
Vielen Dank!

@chriss
Dankeschön! :)
 

saila

Moderatorle

AW:
PHP:
 Cookie-Problem[/b]

du sollst den vorgeschlagenen Code von mir zur Entwicklung hinzufügen! Nicht für die Verarbeitung verwenden. Du kannst damit alle POST/GET/COOKIE und sonstnochwas sehen und somit feststellen ob z.B. gerade dein COOKIE, was dir solch Probleme macht schon vorhanden ist oder nicht.
 

K-Dawg

********

AW:
PHP:
 Cookie-Problem[/b]

[quote="nullnullsix, post: 1272083"]Hey!
Ich fang mal der Reihe nach an mit dem beantworten:

@saila Das mit Request hab ich auchschon gehört, aber eben auch, dass es besser ist, wenn man explizit mit $_COOKIE, oder $_POST (oder get) aufruft!
Was hat es sich mit [php]echo '<pre>'
auf sich? ich hab grad eben gegoogelt und nichts wirklich brauchbares gefunden![/QUOTE]

Um dir das zu beantworten. Damit kannst du die Ausgaben die dir Saila vorgeschlagen hat formatieren um es besser auswerten (Lesen) zu können. Kannst ja mal testen und einmal mit und einmal ohne ausgeben.

Greetz
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben