Hallo
Ich habe folgende 3 funktionen, die ich mittels echo und var_dump() kontroliere.
Script Anfang
Mein script startet die Session, und ruft die function wb_session_firewall() auf.
Ablauf
in wb_session_firewall() ersetze ich die IP in eine Zahlenfolge ohne "." (Punkte). Nun prüfe ich ob das Ende der Sessions ID diese Punktlose IP beinhaltet. Die ist natürlich nicht der Fall.
Also bekomme ich die Ausgabe ja und
wb_logout(); wird abgerufen!
In wb_logout() wird nun die Session terminiert und eine neue angelegt. nun wird wb_minimumlogin(); abgerufen, die dafür sorgt, dass du einen usernamen und userrang hast. Neben bei, wandelt diese Funktion deine Sessions ID um, und Sessions ID gefolgt von der Punktlosen IP.
Diese Ip wird dort korrekt an den Monitor gebracht, siehe Ziele:
$wb_seiteninhalt .= "<br> new ".session_id(); // $wb_seiteninhalt wird auf dieser HP zum schluss mittels echo ausgegeben
O.K.
Nun wechsel ich die Seite z.B mittels eines Links, und die Sessions id ist wieder die alte, obwohl kein logout war. Wieder springt in wb_session_firewall() wb_logout ein(), und soweiter. Irgend wie will php meine neue ID nicht akzeotieren woran kann das leigen?
Ich habe folgende 3 funktionen, die ich mittels echo und var_dump() kontroliere.
PHP-Code:
function wb_logout() {
include("global.inc.php");
mysql_query("DELETE FROM user_online WHERE username
= '".$_SESSION['user_name']."' AND ip = '".$REMOTE_ADDR."'");
unset($_SESSION);
session_destroy();
if ($_COOKIE['loger']) {
@setcookie("loger","",time() - 3600);
echo preg_replace("/\\$(.*)#/Ue","".recalltemplate
('\\1')."",calltemplate("logoutheader"));
exit;
}
session_start();
wb_minimumlogin();
}
function wb_minimumlogin() {
if (!isset($_SESSION['user_name'])) {
global $REMOTE_ADDR;
$_SESSION['user_name'] = "Gast";
$newid = session_id().str_replace('.','',$REMOTE_ADDR);
session_id($newid);
global $wb_seiteninhalt;
$wb_seiteninhalt .= "<br> new ".session_id();
}
if (!isset($_SESSION['user_rang'])) {
$_SESSION['user_rang'] = 0;
}
}
function wb_session_firewall() {
global $REMOTE_ADDR;
$ipanhang = str_replace('.','',$REMOTE_ADDR);
$sess_a = session_id();
$laenge = strlen($sess_a);
for($i = $laenge - strlen($ipanhang); $i <= $laenge; $i++) {
$vergleich .= $sess_a["$i"];
}
if ($vergleich != $ipanhang) {
global $wb_seiteninhalt;
$wb_seiteninhalt .= "ja $vergleich";
wb_logout();
}
wb_minimumlogin();
}
Mein script startet die Session, und ruft die function wb_session_firewall() auf.
Ablauf
in wb_session_firewall() ersetze ich die IP in eine Zahlenfolge ohne "." (Punkte). Nun prüfe ich ob das Ende der Sessions ID diese Punktlose IP beinhaltet. Die ist natürlich nicht der Fall.
Also bekomme ich die Ausgabe ja und
wb_logout(); wird abgerufen!
In wb_logout() wird nun die Session terminiert und eine neue angelegt. nun wird wb_minimumlogin(); abgerufen, die dafür sorgt, dass du einen usernamen und userrang hast. Neben bei, wandelt diese Funktion deine Sessions ID um, und Sessions ID gefolgt von der Punktlosen IP.
Diese Ip wird dort korrekt an den Monitor gebracht, siehe Ziele:
$wb_seiteninhalt .= "<br> new ".session_id(); // $wb_seiteninhalt wird auf dieser HP zum schluss mittels echo ausgegeben
O.K.
Nun wechsel ich die Seite z.B mittels eines Links, und die Sessions id ist wieder die alte, obwohl kein logout war. Wieder springt in wb_session_firewall() wb_logout ein(), und soweiter. Irgend wie will php meine neue ID nicht akzeotieren woran kann das leigen?
Kommentar