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 > PHP für Fortgeschrittene und Experten
Hilfe Community Kalender Heutige Beiträge Suchen

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

Antwort
 
Themen-Optionen Ansicht
  #1  
Alt 07.01.2009, 12:28:37
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
PHPSESSID und session_regenerate_id( )

ich untersuche gerade ein phänomen, komme mit meinem eigenen latein nicht weiter und hoffe auf anregungen / hinweise von euch.

situation:

die web-anwendung nimmt anfragen auf htm, css und js über einen frontcontroller entgegen; images laufen über direkte verlinkung der ressource. htm-anfragen stossen session_regenerate_id( TRUE ) an. ob das nun sinnvoll ist oder eine einmaliges regenerate nach einem user-login ausreichend wäre, sei bitte kein diskussionsgegenstand.

problem:

bitte schaut euch dazu den mitschnitt der HTTP-header in der anhängigen textdatei an:

zeile 001: request index.php - response ok (neue sessid)
zeile 031: request spc=iport (eingebundenes objekt) - response ok
zeile 057: request gif - response ok
zeile 082: request kat=GTstats - response ok (neue sessid)
zeile 122: request gif - response ok
zeile 137: request spc=iport - response ok
zeile 163: request kat=MTcom - response ok (neue sessid)

jetzt kommt's:

zeile 192: request css mit alter sessid - response ok
zeile 217: request gif mit alter sessid - response ok
zeile 242: request spc=iport mit der korrekten sessid und der alten sessid - response ok
zeile 266: request index.php mit der alten sessid - sitzung wird abgebrochen / erneutes login fällig

ich kann mir zwei dinge nicht eklären:

1. wieso werden die requests in 192, 217 mit der alten sessid ausgeführt
2. wie kann es sein, dass der browser 2 sessid sendet (browser-unabhängig)

cx

Geändert von cortex (25.06.2009 um 09:55:13 Uhr)
Mit Zitat antworten
  #2  
Alt 07.01.2009, 12:47:30
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: PHPSESSID und session_regenerate_id( )

Mit session_regenerate_id() stolpert man schnell in Race Conditions.
Der Browser sendet u.U. ettliche Requests quasi gleichzeitig ab.
Es gibt keine Chance das Problem zu umgehen.


Testcode:
PHP-Code:
<?php
error_reporting
(E_ALL);
ini_set('display_errors'TRUE);


session_start();


//session_regenerate_id(TRUE);


sleep(2);


if(isset(
$_GET['frame']))
{
  echo 
'Zeit: '. (time() - $_SESSION['richtzeit']) .'<br>';
  exit;
}


$_SESSION['richtzeit'] = time();


?>
<frameset rows="20%,20%,20%,20%,20%">
  <frame src="?frame=<?php echo mt_rand()?>" name="test1">
  <frame src="?frame=<?php echo mt_rand()?>" name="test2">
  <frame src="?frame=<?php echo mt_rand()?>" name="test3">
  <frame src="?frame=<?php echo mt_rand()?>" name="test4">
  <frame src="?frame=<?php echo mt_rand()?>" name="test5">
</frameset>
Die Zeiten sollten im 2 Sekunden Takt in die Frames tröpfeln.
Mit session_regenerate_id(TRUE); hagelt es Meldungen, weil das gesendetet Cookie schon veraltet ist und das TRUE die Sessiondatei schon längst entsorgt hat. Auch das weglassen des TRUE bringt nicht viel, weil dann mit veralteten Sessiondaten gearbeitet wird.


Zitat:
ob das nun sinnvoll ist oder eine einmaliges regenerate nach einem user-login ausreichend wäre, sei bitte kein diskussionsgegenstand.
Doch doch!
Wenn du die "gleichzeitigen" Requests nicht verhindern kannst, und das kannst du nicht, wirst du dir darum schon Gedanken machen müssen.

Geändert von DokuLeseHemmung (07.01.2009 um 12:52:06 Uhr)
Mit Zitat antworten
  #3  
Alt 07.01.2009, 13:05:54
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
AW: PHPSESSID und session_regenerate_id( )

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Race Conditions
hm... in diese richtung gingen auch meine überlegungen.

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Der Browser sendet u.U. ettliche Requests quasi gleichzeitig ab
nun gut, aber sämtliche request (ausser bilder) laufen doch über den frontcontroller. ich bin davon ausgegangen, dass die anfragen an die index.php "seriell" verarbeitet werden. ist der webserver in der lage, die datei in mehreren "instanzen" zu lesen um parallele anfragen zu verarbeiten?

cx

ps. das phänomen gleichnamiger session-IDs, die vom browser gesendet werden, bleibt.

cx

Geändert von cortex (07.01.2009 um 13:07:32 Uhr) Grund: ps
Mit Zitat antworten
  #4  
Alt 07.01.2009, 13:20:43
DokuLeseHemmung DokuLeseHemmung ist offline
SELFPHP Experte
 
Registriert seit: Jun 2008
Alter: 15
Beiträge: 2.269
AW: PHPSESSID und session_regenerate_id( )

Zitat:
ich bin davon ausgegangen, dass die anfragen an die index.php "seriell" verarbeitet werden.
Nöö..
Je nach Konfiguration können tausende Prozesse nebeneinander laufen.

Die Sessionverwaltung erzwingt mit session_start() die gewünschte Serialisierung durch locken der Sessiodatei. Aber da du die SID dauernd wechselst klappt das nicht.


In meinem Beispiel sendet der Browser erst einen Request um das Frameset sammt Cookie zu erhalten. Mit diesen Cookiedaten schießt er auf einen Schlag 5 Requests ab um die Frames zu füllen. Der Wechsel der SID erfolgt also nachdem die Requests schon lange abgesetzt sind.
Mit Zitat antworten
  #5  
Alt 07.01.2009, 13:24:16
cortex cortex ist offline
SELFPHP Profi
 
Registriert seit: Apr 2008
Alter: 48
Beiträge: 1.938
AW: PHPSESSID und session_regenerate_id( )

Zitat:
Zitat von DokuLeseHemmung Beitrag anzeigen
Je nach Konfiguration können tausende Prozesse nebeneinander laufen.
siehste... da fehlt's mir ein bissel an hintergrundwissen .-

dank' dir für die aufmerksamkeit,

cx
Mit Zitat antworten
Antwort


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
phpsessid sacrifice PHP Grundlagen 11 17.03.2006 00:43:21
PHPSESSID wird beim ersten Aufruf an Links mit angehängt. crowl PHP Grundlagen 1 09.08.2005 19:45:48
PHPSESSID, sessions -wie finde ich gültige sessions ?? Hanjo PHP Grundlagen 3 16.04.2004 11:21:29
Phpsessid Funjoy PHP Grundlagen 11 10.06.2003 15:52:33
PHPSESSID und eine Ausgabe des WC3-Validators jpl PHP Grundlagen 2 29.05.2002 00:11:21


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:08:22 Uhr.


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


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