keine doppelten sessions vom gleichen user. aber wie?
- Lord Potassium
- Mitglied
- Beiträge: 91
- Registriert: 09.02.2004 11:15
- Wohnort: Wien
keine doppelten sessions vom gleichen user. aber wie?
servus
wenn man auf meiner seite keine cookies akzeptiert wird mit jedem aufruf eine neue session_id erzeugt. da ich aber die derzeitigen user auf der seite mittels session_id und ip überprüfe und in eine tabelle schreibe, steigt die besucheranzahl pro klick um 1. da das natürlich nicht der realtität entspricht, möchte ich das verhindern.
mir ist bei phpbb aufgefallen, dass selbst wenn man keien cookies benutzt, die anzahl der besucher stehts richtig ist.
was ist der trick dabei bzw wie kann ich mein prob lösen?
btw: meine seite: www.kalium.org
wenn man auf meiner seite keine cookies akzeptiert wird mit jedem aufruf eine neue session_id erzeugt. da ich aber die derzeitigen user auf der seite mittels session_id und ip überprüfe und in eine tabelle schreibe, steigt die besucheranzahl pro klick um 1. da das natürlich nicht der realtität entspricht, möchte ich das verhindern.
mir ist bei phpbb aufgefallen, dass selbst wenn man keien cookies benutzt, die anzahl der besucher stehts richtig ist.
was ist der trick dabei bzw wie kann ich mein prob lösen?
btw: meine seite: www.kalium.org
Dosis venenum facit
Phillipus Aureolus Theophrastus Bombastus von Hohenheim
http://www.debattierclub.at |http://www.kalium.org
Phillipus Aureolus Theophrastus Bombastus von Hohenheim
http://www.debattierclub.at |http://www.kalium.org
- Blutgerinsel
- Mitglied
- Beiträge: 1801
- Registriert: 19.07.2004 18:53
- Wohnort: Landkreis Ulm
- Kontaktdaten:
Re: keine doppelten sessions vom gleichen user. aber wie?
Das ist schon der erste Punkt was nie sein kann.Lord Potassium hat geschrieben:servus
wenn man auf meiner seite keine cookies akzeptiert wird mit jedem aufruf eine neue session_id erzeugt.
ich initialisiere mit session_start() eine Session im Header am besten.
Und wiederhole dies in jedem Script wo ich auf die Session zugreifen möchte. Wer keine Session hat bekommt eine durch session_start und wenn es schon eine gibt macht dies session_start verfügbar und ich kann darauf zugreifen.
da ich aber die derzeitigen user auf der seite mittels session_id und ip überprüfe und in eine tabelle schreibe, steigt die besucheranzahl pro klick um 1. da das natürlich nicht der realtität entspricht, möchte ich das verhindern.
reichen diese Daten von der Logik?
Ich würde mich fragen wann wird eine Session ungültig?
Was passiert wenn ich mich einlogge?
Momentan fügst du lediglich immer neue Datensätze ein das ich dann u.A. mehrmals auftauche ist klar.
Warum trägst du keine Session Zeit ein und setzt diese auf Null z.B. wenn man sich ausloggt oder aber nach einer bestimmten Zeit?
PHPBB setzt eine Heap Table ein sprich eine temporäre Tabelle und da würde ich mir doch mal die Attribute anschauen.
Ach ja wie sehr gewichtest du die IP? Wenn ich 20 User über einen Proxy kommen hat das auswirkungen bei dir?
- Lord Potassium
- Mitglied
- Beiträge: 91
- Registriert: 09.02.2004 11:15
- Wohnort: Wien
ok. ups also ich hab mich schlecht ausgedrückt bzw einige sachen vergessen:
aslso meine session tabelle sie folgender maßen aus:
ID bigint(4) NOT NULL auto_increment,
Session_ID varchar(32) NOT NULL default '0',
Session_UID tinyint(4) NOT NULL default '0',
Session_Login int(11) NOT NULL default '0',
Session_Time int(11) NOT NULL default '0',
Session_IP varchar(8) NOT NULL default '',
Session_Location varchar(30) NOT NULL default '',
Session_Location_Link varchar(255) binary NOT NULL default '',
gelöscht wird wenn die session länger als 5 min nicht upgedatet worden ist. (zeit kann ich variabel einstellen)
(teil der datei common.php)
das cookie setze ich in einer datei (vars.php)ein, die vor der datei includet wird um zu sehen ob der user cookies akzeptiert, da eben sonst oben genanntes prob auftritt.
da die cookies aber erst gesetz werden, wenn das script fertig geparst ist, ist das zu spät.
ich include bei mir in jeder seite zuerst
config.php
vars.php
session.php
functions.php
common.php
die session_cookies werden in der session.php erzeugt die folgenden code hat:
aslso meine session tabelle sie folgender maßen aus:
ID bigint(4) NOT NULL auto_increment,
Session_ID varchar(32) NOT NULL default '0',
Session_UID tinyint(4) NOT NULL default '0',
Session_Login int(11) NOT NULL default '0',
Session_Time int(11) NOT NULL default '0',
Session_IP varchar(8) NOT NULL default '',
Session_Location varchar(30) NOT NULL default '',
Session_Location_Link varchar(255) binary NOT NULL default '',
gelöscht wird wenn die session länger als 5 min nicht upgedatet worden ist. (zeit kann ich variabel einstellen)
Code: Alles auswählen
if(isset($_COOKIE['Kalium_Check']) and $_COOKIE['Kalium_Check'] == "true"){
$query = mysql_query("SELECT * FROM kalium_sessions WHERE Session_ID = '".session_id()."' and Session_IP = '".encode_ip($IP)."' LIMIT 1");
checkquery($query);
$row = mysql_fetch_array($query);
if($_SESSION['UID'] == ''){
$user = 0;
}
else{
$user = $_SESSION['UID'];
}
if($row['ID'] != ''){
$query = mysql_query("UPDATE kalium_sessions SET Session_UID = '".$_SESSION['UID']."', Session_Time = '".time()."',
Session_Location = '".Position."', Session_Location_Link = '".Position_Link."'
WHERE Session_ID = '".session_id()."' AND Session_IP = '".encode_ip($IP)."'");
checkquery($query);
}
else{
$query = mysql_query("INSERT INTO kalium_sessions (Session_ID,Session_UID,Session_IP, Session_Login, Session_Time, Session_Location, Session_Location_Link)
VALUES ('".session_id()."','".$user."','".encode_ip($IP)."','".time()."','".time()."','".Position."','".Position_Link."') ");
checkquery($query);
}
}
//cleanup
$query = mysql_query("SELECT * FROM kalium_sessions");
$row = mysql_fetch_array($query);
while($row){
if($row['Session_Time'] < (time() - $config['session_del_frq'])){
$query_del = mysql_query("DELETE FROM kalium_sessions WHERE ID = '".$row['ID']."' LIMIT 1");
#echo "deleted";
}
$row = mysql_fetch_array($query);
}
das cookie setze ich in einer datei (vars.php)ein, die vor der datei includet wird um zu sehen ob der user cookies akzeptiert, da eben sonst oben genanntes prob auftritt.
da die cookies aber erst gesetz werden, wenn das script fertig geparst ist, ist das zu spät.
ich include bei mir in jeder seite zuerst
config.php
vars.php
session.php
functions.php
common.php
die session_cookies werden in der session.php erzeugt die folgenden code hat:
Code: Alles auswählen
if(!defined("InKalium")){
die("Hacking attempt");
}
else{
session_start();
session_register('LoggedIn');
session_register('UID');
session_register('Priv');
session_register('Pw');
session_register('Active');
session_register('AutoLogin');
session_register('NotDisabled');
session_register('Edit'); //um das menü zu bearbeiten
}
Dosis venenum facit
Phillipus Aureolus Theophrastus Bombastus von Hohenheim
http://www.debattierclub.at |http://www.kalium.org
Phillipus Aureolus Theophrastus Bombastus von Hohenheim
http://www.debattierclub.at |http://www.kalium.org
- Lord Potassium
- Mitglied
- Beiträge: 91
- Registriert: 09.02.2004 11:15
- Wohnort: Wien
keiner mehr ideen? 

Dosis venenum facit
Phillipus Aureolus Theophrastus Bombastus von Hohenheim
http://www.debattierclub.at |http://www.kalium.org
Phillipus Aureolus Theophrastus Bombastus von Hohenheim
http://www.debattierclub.at |http://www.kalium.org
- Lord Potassium
- Mitglied
- Beiträge: 91
- Registriert: 09.02.2004 11:15
- Wohnort: Wien
*raufschieb*


Dosis venenum facit
Phillipus Aureolus Theophrastus Bombastus von Hohenheim
http://www.debattierclub.at |http://www.kalium.org
Phillipus Aureolus Theophrastus Bombastus von Hohenheim
http://www.debattierclub.at |http://www.kalium.org
- Lord Potassium
- Mitglied
- Beiträge: 91
- Registriert: 09.02.2004 11:15
- Wohnort: Wien
vielleicht hab ich ja diesmal mehr glück.
kann mir jemand helfen?
kann mir jemand helfen?

Dosis venenum facit
Phillipus Aureolus Theophrastus Bombastus von Hohenheim
http://www.debattierclub.at |http://www.kalium.org
Phillipus Aureolus Theophrastus Bombastus von Hohenheim
http://www.debattierclub.at |http://www.kalium.org
- Lord Potassium
- Mitglied
- Beiträge: 91
- Registriert: 09.02.2004 11:15
- Wohnort: Wien
nein weil ich die session id ned immer dran haben will.Pyramide hat geschrieben:Übergibst du die Session-ID denn auch per URL, wenn das Cookie nicht akzeptiert wird (siehe z.B. append_sid bei phpBB)?
geht das auch, dass die sessionid nur an die url angehöngt wird wenn keine cookies angenommne werden?
Dosis venenum facit
Phillipus Aureolus Theophrastus Bombastus von Hohenheim
http://www.debattierclub.at |http://www.kalium.org
Phillipus Aureolus Theophrastus Bombastus von Hohenheim
http://www.debattierclub.at |http://www.kalium.org
Na dann ists ja kein Wunder. Wenn die Session-ID weder per Cookie noch per URL kommt, woher willst du dann wissen, daß es für den Benutzer schon eine gibt?Lord Potassium hat geschrieben:nein weil ich die session id ned immer dran haben will.
Ja, prüfe einfach, ob das Session-ID Cookie gesetzt ist und wenn nicht häng sie an die URL an.Lord Potassium hat geschrieben:geht das auch, dass die sessionid nur an die url angehöngt wird wenn keine cookies angenommne werden?