Variablen werden nicht in Session gespeichert

Gesperrt
BagHira
Beiträge: 486
Registriert: Do 23. Feb 2006, 19:42
Wohnort: Tirschenreuth / Oberpfalz / Bayern
Kontaktdaten:

Variablen werden nicht in Session gespeichert

Beitrag von BagHira »

Hallo zusammen,

ich wende mich heute mit einem Problem an euch, an dem ich die ganze Woche schon dran bin, aber anscheinend zu blöd dafür bin, es zu lösen :oops:

Ich hab einen "Mini-Blog" für meine Frau umgesetzt (http://www.handgewickelte-glasperlen.de/blog/index.html). Hierbei handelt es sich eigentlich nur um eine Artikelliste (dank an HerrnB) und eine Kommentarfunktion.
Mir geht es jetzt darum Doppelpostings zu vermeiden. Zur Zeit hab ich das wie im Gästebuch von Dodger77 realisiert, hier wird der User x Minuten für die Abgabe eines Kommentares (egal jetzt für welchen) gesperrt.

Was ich nun realisieren möchte ist folgendes:
Wenn ein User den Artikel mit der ID 4711 kommentiert hat, soll die Kommentarfunktion für diesen User für x Minuten gesperrt werden. Alle anderen Artikel Artikel soll er aber kommentieren können. Umsetzten möchte ich dies gerne über $_Session bzw. über das Sessionmanagement von Contenido ($sess).

Ich habe folgendes versucht:

Beim Absenden des Formulars für den Kommentareintrag mach das:

Code: Alles auswählen

if (($_POST['idart']+0)>1)
{
   $my_time=time()+$dauer*60;
   $_SESSION[$_POST['idart']]["blog_idart"] = $_POST['idart'];
   $_SESSION[$_POST['idart']]["blog_time2go"]= $my_time;
   ...
   echo '<pre>Session gespeicht'.print_r( $_SESSION[$_POST['idart']], true).'</pre>';
}
print_r() liefert mir:

Code: Alles auswählen

Session gespeichtArray
(
    [264] => Array
        (
            [blog_idart] => 264
            [blog_time2go] => 1246209038
        )

)
Soweit Okay :-)
Gehe ich aber jetzt auf die Übersichtsseite des Blog (oder sonst wo hin...), also ich verlassen das Formular, ist die $_Session weg. Also dachte ich, die Session wird auf anderen Seiten nicht gestartet und er verliert die Variablen.

Folgendes hab ich dann weiter versucht:
Ich habe das @session_start();, welches ich in dem Modul-Output drin hatte auskommentiert und in die "config.local.php" eingesetzt. Hiermit sollte mir die $Sessin ja in jeder Seite zur Verfügung stehen, aber Pustekuchen.
Resultat: Das gleiche wie oben, die Variablen waren weg :-(

Okay, dachte ich und versuchte mich an dem Sessionmanagement von Contenido...
1. Ich habe es nicht hinbekommen, ein Array (wie z.B. oben) in die $sess zu speichern.
2. Ich konnte nur eine Variable speichern die so ausschaut $artId.time() also z.B. 4711.1246209038. Leider hab ich keine Ahnung, wie ich jetzt Auswerten soll, ob der User den Artikel 4711 schon kommentiert hat oder nicht.

Jetzt die Frage an euch, wie kann ich dies Umsetzten, am liebsten mit $Session, falls das aber nicht gehen sollte auch mit $sess. Was ich nicht möchte, ist das Problem über Cookies lösen.

Ich hoffe ihr könnt mir helfen, bzw. in die richtige Richtung schubsen.
Gruß Holger

Träumer haben vielleicht keinen Plan, aber Realisten haben keine Vision.

Handgewickelte Glasperlen Facebook Google+
idea-tec
Beiträge: 1242
Registriert: Do 19. Sep 2002, 14:41
Wohnort: Dichtelbach
Kontaktdaten:

Re: Variablen werden nicht in Session gespeichert

Beitrag von idea-tec »

vielleicht hilft die dir dieser link. http://www.contenido-wiki.org/wiki/inde ... le=Session
oder das wiki insgesamt weiter
MfG, Karsten
Nicht Können bedeutet nicht, dass man etwas nicht beherrscht, sondern lediglich, dass man sich nicht traut es zu tun ;-)
| Internet | Ihr Logo deutschlandweit auf T-Shirts |
Diplomatie: Jemanden so in die Hölle zu schicken, dass er sich auf die Reise freut!!! ;-)
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Variablen werden nicht in Session gespeichert

Beitrag von xmurrix »

Hallo BagHira,

wenn Werte in $_SESSION auf der nächsten Seite nicht zur Verfügung stehen, wird die Session, warum auch immer, nicht gespeichert. Per Default werden Session-Daten im Filesystem abgelegt, also braucht PHP ein Verzeichnis und Schreibrechte darin...

Mit dem Contenido Sessionmanagement sollte es folgemdermaßen funktionieren:

Code: Alles auswählen

if (($_POST['idart']+0)>1)
{
   $my_time=time()+$dauer*60;
   global $blogComments;
   $sess->register('blogComments');
   if (!is_array($blogComments)) {
      $blogComments = array();
   }
   $blogComments[$_POST['idart']]["blog_idart"] = $_POST['idart'];
   $blogComments[$_POST['idart']]["blog_time2go"]= $my_time;
   ...
   echo '<pre>Session gespeicht'.print_r($blogComments[$_POST['idart']], true).'</pre>';
}
Auswerten kannst es mit:

Code: Alles auswählen

global $blogComments;
$idart = 123;
if ($sess->is_registered('blogComments') && is_array($blogComments) && isset($blogComments[$idart])) {
    echo 'artikel kommentar timer: ' . $blogComments[$idart]['blog_time2go'];
}

Der Link von idea-tec ist natürlich auch sehr hilfreich ;-)


Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: Variablen werden nicht in Session gespeichert

Beitrag von Oldperl »

xmurrix hat geschrieben:Per Default werden Session-Daten im Filesystem abgelegt,...
Dies stimmt für Contenido so nicht. Contenido, respektive die eingesetzte PHPLib, speichert Sessions per Default in der DB (con_phplib_active_sessions), siehe auch am Ende des Wiki-Eintrages. Dieses, wie im Wiki beschrieben, auf das Filesystem umzustellen kann, abhängig von der Serverkonstellation, Verbesserungen der Performance bringen.

Gruß aus Franken

Ortwin
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
xmurrix
Beiträge: 3215
Registriert: Do 21. Okt 2004, 11:08
Wohnort: Augsburg
Hat sich bedankt: 4 Mal
Danksagung erhalten: 17 Mal
Kontaktdaten:

Re: Variablen werden nicht in Session gespeichert

Beitrag von xmurrix »

Oldperl hat geschrieben:
xmurrix hat geschrieben:Per Default werden Session-Daten im Filesystem abgelegt,...
Dies stimmt für Contenido so nicht. Contenido, respektive die eingesetzte PHPLib, speichert Sessions per Default in der DB (con_phplib_active_sessions), siehe auch am Ende des Wiki-Eintrages. Dieses, wie im Wiki beschrieben, auf das Filesystem umzustellen kann, abhängig von der Serverkonstellation, Verbesserungen der Performance bringen...
Ok, habe mich nicht verständlich ausgedrückt, das kann dann missverstanden werden.

$_SESSION wird in PHP per default im Filesystem abgelegt (siehe php.ini session.save_handler). Die Session in Contenido ist anders, hat mit $_SESSION nichts zu tun und wird über die Sessionverwaltung von PHPlib gesteuert.

Gruß
xmurrix
CONTENIDO Downloads: CONTENIDO 4.10.1
CONTENIDO Links: Dokumentationsportal, FAQ, API-Dokumentation
CONTENIDO @ Github: CONTENIDO 4.10 - Mit einem Entwicklungszweig (develop-branch), das viele Verbesserungen/Optimierungen erhalten hat und auf Stabilität und Kompatibilität mit PHP 8.0 bis 8.2 getrimmt wurde.
BagHira
Beiträge: 486
Registriert: Do 23. Feb 2006, 19:42
Wohnort: Tirschenreuth / Oberpfalz / Bayern
Kontaktdaten:

Re: Variablen werden nicht in Session gespeichert

Beitrag von BagHira »

Baoh, wie geil ist das den :lol: :lol: :lol:
Es geht, funktioniert perfekt - da sieht man dann doch ganz deutlich den unterschied zwischen einem Freizeittipsler und den Hardcoreprogrammieren.
Ich bin da ne Woche dran gesessen und hab’s nicht zusammen gebracht :oops:


Vielen, vielen herzlichen Dank. :!: :P :!:
Gruß Holger

Träumer haben vielleicht keinen Plan, aber Realisten haben keine Vision.

Handgewickelte Glasperlen Facebook Google+
Gesperrt