Seite 1 von 1

2 Forenaccounts von einem PC

Verfasst: 21.09.2006 19:09
von Dominik Zeier
Hallo,

meine Freundin und ich haben jeder einen Forenaccount, gehen aber meistens an einem PC ins Forum.
Wenn sich der 2. dann einloggt, sind die Beiträge, die der erste gelesen hat, als gelesen makiert, auch beim 2. Account, obwohl dieser sie noch nicht gelesen hatte. (kompliziert zu erklären)
Kann man dagegen etwas machen ?

Verfasst: 21.09.2006 19:46
von SoLo1905
bitte KB:frage_recht

Verfasst: 21.09.2006 19:58
von felixx
Hi,

bevor Du Dich mit dem 2. Account einloggst die Cookies und den Browser Cache leeren, dann geht es. :wink:

Verfasst: 21.09.2006 19:59
von miccom
Verwende 2 unterschiedliche Browser... oder noch besser, 2 unterschiedliche Accounts auf eurem gemeinsamen PC.

Verfasst: 21.09.2006 20:09
von Dominik Zeier
SoLo1905 hat geschrieben:bitte KB:frage_recht
Also so schlimm war der Beitrag ja nun auch wieder nicht, deine 2 Nachfolger haben es ja auch verstanden.
Danke für die Antworten :)

Verfasst: 21.09.2006 21:19
von Xwitz
Der Beitrag ist weitgehend korrekt, lediglich etwas arg verschachtelt.

Verfasst: 21.09.2006 22:17
von Dominik Zeier
Ja, war irgendwie komisch zu erklären und ist dadurch etwas seltsam geworden, dass muss ich auch zugeben.

Verfasst: 22.09.2006 01:58
von Jensemann
Um das Problem noch auf technischer Basis zu erklären:

Der gelesen Status wird in Cookies gespeichert, leider haben diese keinen Hinweis auf den benutzten User im Namen (z.B. die UID, eigentlich seltsam wo gelesen/ungelesen bei phpBB.de sowieso nur für eingeloggte Nutzer geht), folglich wird dieser Status quasi immer als ein User behandelt.

Unterschiedliche Browser, 2 Accounts auf dem PC (wie eben genannt) oder (falls unterstützt) 2 verschiedene Browser-Profile würden hier Abhilfe schaffen. Sofern es sich um das eigene Forum handelt könnte man dieses natürlich auch anpassen und die UID in den Cookie Namen "einpflanzen".

Verfasst: 24.09.2006 12:11
von Dominik Zeier
jensemann hat geschrieben:Um das Problem noch auf technischer Basis zu erklären:

Der gelesen Status wird in Cookies gespeichert, leider haben diese keinen Hinweis auf den benutzten User im Namen (z.B. die UID, eigentlich seltsam wo gelesen/ungelesen bei phpBB.de sowieso nur für eingeloggte Nutzer geht), folglich wird dieser Status quasi immer als ein User behandelt.

Unterschiedliche Browser, 2 Accounts auf dem PC (wie eben genannt) oder (falls unterstützt) 2 verschiedene Browser-Profile würden hier Abhilfe schaffen. Sofern es sich um das eigene Forum handelt könnte man dieses natürlich auch anpassen und die UID in den Cookie Namen "einpflanzen".
Wie würde das mit dem "einpflanzen" denn funktionieren ?

Verfasst: 24.09.2006 18:37
von Jensemann
Ungetestet:

viewtopic.php Zeile 538:

Suche:

Code: Alles auswählen

$tracking_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t_']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) : array();
$tracking_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) : array();
Ersetze durch:

Code: Alles auswählen

$tracking_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t_' . $userdata["user_id"]]) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t_' . $userdata["user_id"]]) : array();
$tracking_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_' . $userdata["user_id"]]) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_' . $userdata["user_id"]]) : array();
viewtopic.php Zeile 562:

Suche:

Code: Alles auswählen

setcookie($board_config['cookie_name'] . '_t', serialize($tracking_topics), 0, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
Ersetze durch:

Code: Alles auswählen

setcookie($board_config['cookie_name'] . '_t_' . $userdata["user_id"], serialize($tracking_topics), 0, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
posting.php Zeile 598:

Suche:

Code: Alles auswählen

$tracking_topics = ( !empty($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) : array();
$tracking_forums = ( !empty($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) : array();
Ersetze durch:

Code: Alles auswählen

if ($userdata["session_logged_in"])
{
$tracking_topics = ( !empty($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t_' . $userdata["user_id"]]) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t_' . $userdata["user_id"]]) : array();
$tracking_forums = ( !empty($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_' . $userdata["user_id"]]) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_' . $userdata["user_id"]]) : array();
} else
{
$tracking_topics = ( !empty($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) : array();
$tracking_forums = ( !empty($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) : array();
}
posting.php Zeile 600:

Suche:

Code: Alles auswählen

setcookie($board_config['cookie_name'] . '_t', serialize($tracking_topics), 0, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
Ersetze durch:

Code: Alles auswählen

if ($userdata["session_logged_in"])
{
setcookie($board_config['cookie_name'] . '_t_' . $userdata["user_id"], serialize($tracking_topics), 0, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
} else
{
setcookie($board_config['cookie_name'] . '_t', serialize($tracking_topics), 0, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
}


index.php Zeile 55:

Suche:

Code: Alles auswählen

setcookie($board_config['cookie_name'] . '_f_all', time(), 0, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
Ersetze durch:

Code: Alles auswählen

setcookie($board_config['cookie_name'] . '_f_all_' . $userdata["user_id"], time(), 0, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
index.php Zeile 387:

Suche:

Code: Alles auswählen

if ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all']) )
{
    if ( $HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all'] > $forum_last_post_time )
Ersetze durch:

Code: Alles auswählen

if ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all'_ $userdata["user_id"]]) )
{
    if ( $HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_all_' . $userdata["user_id"]] > $forum_last_post_time )
viewforum.php Zeile 136:

Suche:

Code: Alles auswählen

$tracking_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f']) : array();
$tracking_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t']) : array();
Ersetze durch:

Code: Alles auswählen

$tracking_forums = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_' . $userdata["user_id"]]) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_f_' . $userdata["user_id"]]) : array();
$tracking_topics = ( isset($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t_' . $userdata["user_id"]]) ) ? unserialize($HTTP_COOKIE_VARS[$board_config['cookie_name'] . '_t_' . $userdata["user_id"]]) : array();
viewforum.php Zeile 149:

Suche:

Code: Alles auswählen

setcookie($board_config['cookie_name'] . '_f', serialize($tracking_forums), 0, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
Ersetze durch:

Code: Alles auswählen

setcookie($board_config['cookie_name'] . '_f_' . $userdata["user_id"], serialize($tracking_forums), 0, $board_config['cookie_path'], $board_config['cookie_domain'], $board_config['cookie_secure']);
Was bewirkt dieser lustige Code?

Alle Namen der Cookies die gesetzt werden um den gelesen/ungelesen Status eines Postings, Forums oder Topics zu markieren werden um "_$USER_ID" erweitert, somit können diese einem User zugeordnet werden und es finden keine Konflikte mehr statt.

Das ganze läuft jetzt Testing-by-Luser ;-) Du sagst mir nachher ob es funktioniert, wenn ja bau ich es bei mir auch ein *g*