Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.38 veröffentlicht (30.04.24)


Benutzer, die gerade dieses Thema anschauen: 3 Gast/Gäste
Cookies
#1
Hallöchen,

ich interessiere mich sehr für Cookies und dazugehörige Anzeige- und Delete-Scripts. Dabei ist mir jetzt aufgefallen, dass sich die MyBB-Cookies mit eckigen Klammern nicht auslesen lassen. Cookies wie z.B. "forummybbuser" oder "forumloginattempts" werden ganz normal angezeigt, aber z.B. "forummybb[lastvisit]" verursacht Probleme. Hier mal ein Beispiel-Script, wo Ihr selbst sehen könnt, was ich meine:

PHP-Code:
<?php
echo "Es sind insgesamt " count($_COOKIE) . " Cookies gesetzt: <br /><br/>\n";
foreach(
$_COOKIE as $cookieName => $cookieValue)
{
     echo 
"Cookie <b>$cookieName</b>: $cookieValue<br />\n";
}
?>

Es wäre wirklich gut, wenn man das mit den eckigen Klammern weglässt und z.B. durch einen Unterstrich löst -> "forummybb_lastvisit"

Es geht hier um mindestens diese Cookies: forummybb[lastactive], forummybb[lastvisit], forummybb[threadread]

btw: bei einem anderen CMS habe ich das selbe Problem wo eckige Klammern drin sind. Sollte also grundsätzlich in solchen Fällen nicht verwendet werden.
Zitieren
#2
Die kannst du doch problemlos als Array auslesen?
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#3
Also ich hab alles mögliche versucht, was man so im Netz findet, und immer wieder fehlen die Cookies, die eckige Klammern im Namen haben. Ich habe eine php angelegt, mit der die User mit einem Klick alle Forum Cookies löschen können. Nur eben die Anzeige der Cookies, wieviele vor der Löschaktion überhaupt vorhanden sind, will nicht klappen. Hast Du mal ein Beispiel-Script, was Deiner Meinung nach funktioniert?
Zitieren
#4
Schau dir mal die Funktion "my_set_array_cookie" im MyBB an.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#5
Wenn du
Code:
print_r($_COOKIE);
machst, wirst du erkennen warum man es mit eckigen Klammern löst Wink

MfG
Höre nie auf besser zu werden, weil dann hast du aufgehört gut zu sein.
Zitieren
#6
(06.10.2011, 08:37)StefanT schrieb: Die kannst du doch problemlos als Array auslesen?

Sagt mir nicht viel. Hätte viel lieber eine Antwort bzgl. Beitrag#1, warum das Script die betroffenen Cookies nicht anzeigt.

(07.10.2011, 08:42)StefanT schrieb: Schau dir mal die Funktion "my_set_array_cookie" im MyBB an.

Und dann? Meinst Du das bringt mich jetzt weiter, wenn ich überhaupt nichts damit anfangen kann?

(07.10.2011, 11:00)Megaleecher schrieb: Wenn du
Code:
print_r($_COOKIE);
machst, wirst du erkennen warum man es mit eckigen Klammern löst Wink

Leider erkenne ich hier nur, dass man als PHP-Anfänger echt aufgeschmissen ist wenn man Hilfe braucht. Das eigentliche Problem wird noch nicht mal im Ansatz beantwortet. Seit Monaten das selbe hier. Antworten, die aus 5 Worten bestehen (mehr Spam als sonst was), und Jeder setzt voraus, das man Euren Wissenstand hat. Echt absurd und nutzlos geworden hier...

Ihr könnt meinen Account löschen. Werde hier nur noch lesen, und mich garantiert nie wieder beteiligen.

- Thema erledigt -
Zitieren
#7
(08.10.2011, 05:47)Axxis schrieb: Das eigentliche Problem wird noch nicht mal im Ansatz beantwortet.
Dann habe ich deine Frage nicht verstanden. Was hast du überhaupt vor? Das Script funktioniert nicht, weil das MyBB hier mit Array arbeitet und das Script damit nicht umgehen kann. Mit dem Beitrag von Megaleecher sollte das leicht zu erkennen sein.
[Bild: banner.png]

Bitte die Foren-Regeln beachten und im Profil die verwendete MyBB-Version angeben.
Zitieren
#8
Du kannst durch ein mehr-ebiges (kann man das so schreiben?!) Array nicht mit einer simplen foreach-Schleife durchgehen.

Du musst hierfür eine rekursive Funktion schreiben die wie folgt aussehen könnte:
PHP-Code:
function print_array ($input = array()) {
    foreach(
$input as $key=>$value) {
        if (
is_array($value)) {
            
print_array($value);
            continue;
        }
        echo 
"<b>$key</b>: $value<br />\n";
    }
}

// Damit stößt du die Funktion an und es sollten alle Werte die sich im Array befinden ausgeben.
print_array($_COOKIE); 

MfG Megaleecher

PS: Du brauchst hier überhaupt keinen Anstand machen wegen schlechter Behandlung oder der gleichen...
Wenn du nicht fähig bist dich über das zu informieren, was wir dir erzählen und alles vorgekaut haben willst, dann bist du hier sowieso falsch.
Höre nie auf besser zu werden, weil dann hast du aufgehört gut zu sein.
Zitieren