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 ::

Einführung in XHTML, CSS und Webdesign

Einführung in XHTML, CSS und Webdesign 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 > PHP für Fortgeschrittene und Experten

PHP für Fortgeschrittene und Experten Fortgeschrittene und Experten können hier über ihre Probleme und Bedenken talken

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 09.01.2004, 00:37:39
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
problem mit session und cookie

hallo!

ich versuche hier mal mein problem zu beschreiben, welches mir ein rätsel aufgibt:

ich starte in einem script eine session. dann wird, falls vorhanden, ein cookie gelesen, später dann verändert gesetzt. nun hat zeigt mir mein browser für die seite 2 cookies an: den einen, den ich gesetzt habe, und den anderen, der SESSID heißt.

wenn ich dann meine seite erneut aufrufe, wird die SESSID an den url dran gehängt, und ich sehe nur noch einen cookie, nämlich den gesetzten, und nicht mehr den cookie namens SESSID.

wenn ich dann den cookie lösche, geht das so lange gut, bis ich die session beende (alle browserinstanzen schließe) und die seite wieder neu aufrufe; nun wird die SESSID wieder an den url dran gehängt.

kennt dieses problem jemand? kann das an meiner wamp umgebung liegen? wird kein session-cookie mehr gesetzt, wenn von der seite schon einer vorhanden ist, der aus der zeit vor der aktuellen session stammt?

wäre echt super glücklich, wenn mir jemand helfen könnt...also bitte helft mir! <= an alle php-götter da draußen!!!
Mit Zitat antworten
  #2  
Alt 09.01.2004, 01:35:56
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
Re: problem mit session und cookie

Zitat:
Original geschrieben von feuervogel
ich starte in einem script eine session. dann wird, falls vorhanden, ein cookie gelesen, später dann verändert gesetzt. nun hat zeigt mir mein browser für die seite 2 cookies an: den einen, den ich gesetzt habe, und den anderen, der SESSID heißt.
Das ist leider falsch. Wenn Du Session nutzen willst, dann laß den Keks in Ruhe, weil PHP einen sendet, in dem session_name und session_id enthalten ist. Störst Du das Verfahren, dann knipst Du die Session ab.

Wenn Du was speichern willst, dann speichere das so:
PHP-Code:
$_SESSION['variablenname'] = 'wert'
Auf der nächsten Seite kannst Du dann mit
PHP-Code:
echo $_SESSION['variablenname']; 
wieder darauf zugreifen.

Weiterhin mußt Du darauf achten, ob PHP den 'Sitzungs Keks' losgeworden ist. Will der Client nämlich keinen Keks, mußt Du session_name und session_id entweder als GET Parameter an die Links kleben oder als input type=hidden in POST Formularen weitergeben.

Ein Kennzeichen für den erfolgreichen Keksbetrieb ist die Konstante SID. Ist diese == '', dann hat der CDlient den Keks geschluckt. Ansonsten steht dort sowas drin wie 'PHPSESSID=2984fwe8ighe98'.

Bei Links isses einfach:
PHP-Code:
printf ('<a href="php-file.php?%s">linkname</a>'SID); 
Bei Formularen etwas umständlicher:
PHP-Code:
<form trallala>
<?php
if (defined('SID') AND SID != '')
{
  
printf ('<input type="hidden" name="%s" value="%s">'session_name(), session_id());
}

Geändert von meikel (†) (09.01.2004 um 01:38:25 Uhr)
Mit Zitat antworten
  #3  
Alt 09.01.2004, 03:00:56
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
hallo!

erstmal vielen lieben danke für die antwort; das problem ist aber, dass ich (es geht um ein board) etwas über die session hinaus speichern will, nämlich welche themen der besucher bereits gelesen hat. also _brauche_ ich cookies. aber da es in dem ding auch einen (admin-)bereich geben soll, wo mit login/logout gearbeitet wird, brauche ich also auch sessions.

dass mit dem anhängen an den url passiert z.z. automatisch, was aber auch absichtlich ein problem dar stellt: erstens arbeite ich mit templates, also printf und sowas kann ich nicht anwenden. zweitens aber: was passiert, wenn ein besucher den link kopiert und meinetwegen per mail verschickt...der andere besucher ist automatisch unter dessen session auf der seite...und das ist nicht sooo optimal...
Mit Zitat antworten
  #4  
Alt 09.01.2004, 03:04:39
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
lösung?

ach, was mir grade eingefallen ist, ich hatte da mal zwei lösungsansätze im kopf:

einerseits könnte ich ja vor session_start den inhalt meines cookies auslesen und ihn dann löschen, da dürfte sich dann doch eigentlich nichts in die quere kommen...hat aber irgendwie nicht funktioniert...

andererseits: was passiert, wenn ich meinen sessid-cookie einfach selbst setze? respektive einfach die session-id aus einem cookie auslese und dann damit die session starte...
Mit Zitat antworten
  #5  
Alt 09.01.2004, 03:59:47
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
Zitat:
Original geschrieben von feuervogel
das problem ist aber, dass ich (es geht um ein board) etwas über die session hinaus speichern will, nämlich welche themen der besucher bereits gelesen hat. also _brauche_ ich cookies.
Nein, sowas willst Du ganz bestimmt nicht. Oder hast Du etwa vor, in einem 2 KB kleinen File alle IDs der 126799 Texte, die der User gelesen hat, abspeichern?

Speichere einfach in der Usertabelle die Zeit des letzten Zugriffs ab. Alle jüngeren Texte kannst Du ihm als 'ungelesen' auflisten.

Zitat:
aber da es in dem ding auch einen (admin-)bereich geben soll, wo mit login/logout gearbeitet wird, brauche ich also auch sessions.
Du brauchst immer dann Sessions, wenn sich der Webserver an den User erinnern können soll.
Zitat:
dass mit dem anhängen an den url passiert z.z. automatisch, was aber auch absichtlich ein problem dar stellt: erstens arbeite ich mit templates, also printf und sowas kann ich nicht anwenden.
Es ist völlig Wurscht, mit was Du arbeitest. Will der User keinen Keks und ist session.use_trans_sid = 0, dann mußt Du session Name und ID an Links und Formulare anhängen. Oder Du setzt session.use_only_cookies = 1 - dann kommt nur dann eine Session zustande, wenn der User den Keks haben will.
Zitat:
zweitens aber: was passiert, wenn ein besucher den link kopiert und meinetwegen per mail verschickt...der andere besucher ist automatisch unter dessen session auf der seite...und das ist nicht sooo optimal...
Das hängt davon ab, auf wieviel sec. in session.gc_maxlifetime gesetzt wurde. Danach ist die Session gestorben.

Es hängt aber auch davon ab, daß Du kein PHP 4.1.x verwendest, weil das Teil von einer kranke Sessionverwaltung gekennzeichnet ist. Da PHP 4.2.x andere Macken hat, ist eine aktuelle PHP Version >= 4.3.3 angeraten.
Mit Zitat antworten
  #6  
Alt 09.01.2004, 04:10:59
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
Re: lösung?

Zitat:
Original geschrieben von feuervogel
einerseits könnte ich ja vor session_start den inhalt meines cookies auslesen und ihn dann löschen, da dürfte sich dann doch eigentlich nichts in die quere kommen...hat aber irgendwie nicht funktioniert...
Richtig erkannt: der Keks wird zusammen mit dem HTTP Protokoll geschickt. Löschst oder erstellst Du den Keks selber, müßtest Du, um die Session starten zu können, einen Location Header auf eine andere Seite abschicken. Ist der Keks einmal weg, meutert der Sessionmanager.
Zitat:
andererseits: was passiert, wenn ich meinen sessid-cookie einfach selbst setze?
Siehe meinen anderen Text. Nutze einfach die Möglichkeiten, die Dir der Session Betrieb bietet, und beharre nicht auf dem Vorsatz, einen harmlosen Keks mit redundaten Firlefanz vollzumüllen.

Literatur:
http://pear.php.net/manual/en/

Stichworte: DB, Auth, Template
Mit Zitat antworten
  #7  
Alt 09.01.2004, 04:15:15
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
so, also zuerst einmal:

ich speichere nicht die ids der texte ab, sondern die id des threads mit zugehörigem timestamps des neuesten beitrags...also kann es auch themen geben mit ungelesenen beiträgen, die älter sind als der timestamp des letzten besuchs.

es handelt sich hier um ein kleines board, also wird der keks nicht so groß.

hm, ich werde mich jetzt mal ins bett hauen und über die vorschläge grübeln...

UND ich installier mir erst mal version >=4.3.3, weil mir grade aufgefallen ist, ich habe z.z. die 4.2.2...

Geändert von feuervogel (09.01.2004 um 04:17:55 Uhr)
Mit Zitat antworten
  #8  
Alt 09.01.2004, 04:22:00
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
Zitat:
Original geschrieben von feuervogel
ich speichere nicht die ids der texte ab, sondern die id des threads mit zugehörigem timestamps des neuesten beitrags...also kann es auch themen geben mit ungelesenen beiträgen, die älter sind als der timestamp des letzten besuchs.
Schreib das in die Usertabelle der DB. Da paßt mehr rein und es macht keine Zicken. Du muß doch eh den Userrecord suchen, wenn sich der Kunde anmeldet.

Update:
Zitat:
weil mir grade aufgefallen ist, ich habe z.z. die 4.2.2... [/B]
Ein Update ist dringends angeraten. Besonders dann, wenn Du PhpMyAdmin benutzt...
Mit Zitat antworten
  #9  
Alt 09.01.2004, 04:43:20
feuervogel feuervogel ist offline
SELFPHP Guru
 
Registriert seit: Jan 2004
Ort: Leipzig
Beiträge: 4.549
so, hab mir das installshield runtergeladen, installiert, dann stand da irgendein mist von wegen httpd.conf, dann hab ich in der rumkopiert und gemacht was ich in der php/install.txt gefunden habe, und jetzt ist mein apache im eimer :-/ hab zwar die default-datei zur httpd.conf gemacht, hat aber nix gebracht...

vielleicht sollte ich mal den apache während der php installation aus machen?
Mit Zitat antworten
  #10  
Alt 09.01.2004, 07:40:30
Benutzerbild von meikel (†)
meikel (†) meikel (†) ist offline
SELFPHP Guru
 
Registriert seit: Dec 2003
Ort: Erfurt
Alter: 75
Beiträge: 4.001
Probleme:
Zitat:
Original geschrieben von feuervogel
http://www.bigapache.org/BigApache_V_1_05.91.0.html

erst die gute Nachricht:
-Open-Source software (BSD-style license)
-Useable for both commercial and non-commercial use
-Available for Win32 (NT/2000/XP) platform
-Apache 2.046
-128-bit strong cryptography world-wide (SSLv2, SSLv3 and TLSv1)
-mod_ssl with openSSL 0.9.7b
-PHP 4.3.x with PEAR, and the Zend Opt
-Mysql 4.x with GUI Syslog
-mod_perl with Perl 5.8 and ASP::Apache
-mod_jk with JBoss and integrated Tomcat 4.1.x
-mod_python with Python 2.x
-Mailserver Mercury with POP3, SMTP, IMAP and AntiSpam
-CA Management for SSL keys
-Logfileanalyzer with Analog and Report Magic

Dann die Schlechte:
92115 kb
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


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:58:27 Uhr.


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


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