Einfach mal kundig machen, dann wirst du das auch einsehen!
Dass irgendwann ein Parameter hinzugefügt wurde, heißt nicht, dass es vorher nicht funktioniert hat. Es ist jetzt allerdings mit Parameter meist sinnvoller, da gebe ich dir recht.
Es wurde also kein Bug behoben, sondern nur ein optionales Feature hinzugefügt.
Ich dachte eher an die Probleme mit dem Verlust der Session, wenn jemand ohne Cookies gleichzeitig mehrere Browser-Fenster (oder Tabs) der gleichen Website geöffnet hat.
Mit session.use_trans_sid ist regenerate weiterhin wenig brauchbar. Daran hat sich nichts geändert und daran wird sich nichts ändern. Aber eigentlich bringt es da nur das generelle transsid Problem in den Vordergrund. Ist also auch kein Fehler des Regenerate().
Auch Mit session.use_cookies_only kann es RaceConditions geben. Und das liegt an den HTTP Eigenschaften. Da beißt keine Maus einen Faden ab. Das Problem ist auch nicht wirklich in den Griff zu bekommen.
Sessionlocking/RaceCondition Test:
In die folgenden Frames sollten die Zeiten im 2 Sekunden Takt tröpfeln. Die Hits sollten fortlaufend kommen. Dabei ist die Reihenfolge, in der die Frames gefüllt werden vom Browser/Router/Gateway/Proxy bestimmt und kann sich durchaus ändern.
Auch die unerwünschten Seiteneffekte von session_regenerate_id() lassen sich damit schön vorführen.
PHP-Code:
<?php
error_reporting(-1);
ini_set('display_errors',TRUE);
session_start();
//session_regenerate_id(); // erzeugt Race Conditions
//session_regenerate_id(TRUE); // erzeugt Race Conditions und Fehlermeldungen
sleep(2);
if(isset($_GET['frame']))
{
++$_SESSION['hitcounter'];
echo 'Zeit: '. (time() - $_SESSION['richtzeit']) .'<br>';
echo 'Hits: '. $_SESSION['hitcounter'] .'<br>';
exit;
}
$_SESSION['richtzeit'] = time();
$_SESSION['hitcounter'] = 0;
?>
<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>
Wo hast Du denn diesen ausgemachten Blödsinn her (mal abgesehen davon, dass Du Konstanten meinst, define() ist eine Funktion zum Definieren ebensolcher)? Du solltest jetzt wirklich mal anfangen, das
Einen Kommentar schreiben: