Sessionverwaltung

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
hackepeter13
Valued Contributor
Beiträge: 3570
Registriert: 21.04.2004 12:22
Wohnort: Berlin
Kontaktdaten:

Beitrag von hackepeter13 »

Miriam hat geschrieben:dann suche in der page_header.php, index.php und viewonline.php nach

Code: Alles auswählen

session_time >= " . ( time() - 300 ) 
und passe das an... (300s sind 5 Minuten)
Nur mal so nebenbei.
In meiner index.php gibt es diesen Teil garnicht.

Nicht mal in der originalen neuen .22er Version ist da noch was von vorhanden.
hiffi
Mitglied
Beiträge: 15
Registriert: 17.09.2005 20:39
Wohnort: Sinzig

Beitrag von hiffi »

gn#36 hat geschrieben:Dazu könntest du diese Konstante gegen eine Variable tauschen die du mit übergibst die den aktuellen Wert enthält. Um das aber nicht zu einem Sicherheitsrisiko zu machen solltest du das dann gegen eine WHITELIST abgleichen.
So jetzt die Frage woher die variable nehmen?! Und was in gottes namen ist eine WHITELIST ???

@ hackepeter13: Dann lässt es einfach weg ;) Vielleicht war das in einer früheren Version vielleicht so?! Wenn man phpbb unverändert lässt wird die (richtige) onlineliste ja nur im index.php angezeigt, wenn man in foren geht wird ja in page_header.php die SQL abfrage verändert darauf wer grade in diesem forum ist.
hackepeter13
Valued Contributor
Beiträge: 3570
Registriert: 21.04.2004 12:22
Wohnort: Berlin
Kontaktdaten:

Beitrag von hackepeter13 »

hiffi hat geschrieben: @ hackepeter13: Dann lässt es einfach weg ;) Vielleicht war das in einer früheren Version vielleicht so?! Wenn man phpbb unverändert lässt wird die (richtige) onlineliste ja nur im index.php angezeigt, wenn man in foren geht wird ja in page_header.php die SQL abfrage verändert darauf wer grade in diesem forum ist.
Klar lass ich es dann weg, bzw. aus mit dem verändern, weils ja nicht da ist, logisch.

Sollte ja auch nur ein Hinweis drauf sein, nicht das dann sowas kommt wie "Hilfe meine index.php is kaputt, hab das bei mir nicht drin" oder so weißt.
Wer das also noch drin hat, hat wohl eine ältere Version.
Und wer ne ältere Version benutzt is selber schuld, sag ich nur :wink:
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

hiffi hat geschrieben:
gn#36 hat geschrieben:Dazu könntest du diese Konstante gegen eine Variable tauschen die du mit übergibst die den aktuellen Wert enthält. Um das aber nicht zu einem Sicherheitsrisiko zu machen solltest du das dann gegen eine WHITELIST abgleichen.
So jetzt die Frage woher die variable nehmen?! Und was in gottes namen ist eine WHITELIST ???
Eine WHITELIST ist eine Liste der erlaubten Werte. Also z.B. ein Array mit allen erlaubten Einträgen. Da kannst du dann ganz einfach abgleichen ob der Inhalt der Variablen als Wert erlaubt ist. In diesem Fall wäre es vermutlich auch ausreichend zu prüfen ob es sich um einen integer handelt, bei negativen Zahlen außerdem ob dieser Wert erlaubt ist (das sind dann so Seiten wie Index, Private Nachrichten ...) und bei positiven Werten ob das zu dieser Zahl gehörige Forum existiert.
Die Variable nimmst du als Übergabeparameter. Dein Ajax muss ja auch irgendwie wissen auf welcher Seite es sich befindet, da kann es dann auch gleich seinen Aufenthaltsort an die PHP Seite weitergeben.
->Du "erfindest" die Variable quasi neu.
Sofern dann die Daten auf die oben beschriebene Weise geprüft werden sollte das auch kein erhöhtes Sicherheitsrisiko darstellen.
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
hiffi
Mitglied
Beiträge: 15
Registriert: 17.09.2005 20:39
Wohnort: Sinzig

Beitrag von hiffi »

@ hackepeter13: oder zu faul die neue version zu isntallieren^^

@ gn#36: Sorry aber das hat mir nicht wirklich weitergeholfen, ich weiß jetzt zwar was ne WHITELIST bewirken soll aber ich hatte mir ehr erhofft zuerfahren wie ich das programmiere! Es ist nämlich etwas schwer das herauszufinden über php.net oder so wennn man keinen tag hat!

Und zum "variable neu erfinden" genau das will ich nicht! ich möchte die session aktualisieren ohne den ort zu aktualisieren (bzw. den ort aus der DB auslesen und wieder updaten)

wenn ich zusammenfasse willst du drauf hinaus das ajax den intger-wert sendet vom ort oder?! -> wie les ich ihn aus?
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Also eine WHITELIST zu programmieren sollte nicht das Problem sein
Einfachste Form:

Code: Alles auswählen

$var = intval($var);
if($var < 0)
{
if(in_array($var,array(-1,-2,-3,...ALLE ERLAUBTEN WERTE IM NEGATIVEN)))
{
//JA IST ERLAUBTER WERT, KANN EINGETRAGEN WERDEN
}
else
{
//UNGÜLTIG; AM BESTEN ABBRUCH
}
}
else
{
$sql = 'SELECT forum_id FROM '.FORUMS_TABLE . ' WHERE forum_id = '.$var;
$result = $db->sql_query($sql) OR message_die(GENERAL_ERROR,'SQL FEHLER');
if($db->num_rows($result))
{
//GÜLTIGES FORUM
}
else
{
//UNGÜLTIGES FORUM AM BESTEN ABBRUCH
}
}
Ein wenig Programmierarbeit ist nun mal erforderlich.
Bezgl. der Variable: Irgendwie muss auch das Ajax doch wissen was es gerade tut? Ich kenne mich mit AJAX nicht aus. Die Werte findest du in der includes/constants.php Datei, wenn sich jemand in einem Forum aufhält wird der Wert positiv.
-> Ja ich will darauf hinaus dass das AJAX mitteilt was es gerade tut. Irgendwie muss es das doch sowieso tun, schließlich landet ja sonst nix in der Datenbank, oder?
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
hiffi
Mitglied
Beiträge: 15
Registriert: 17.09.2005 20:39
Wohnort: Sinzig

Beitrag von hiffi »

Das alles zu schwer und zu komplex ich hab mich jetzt noch mal hingesetzt und überlegt dabei kam das heraus!
Alerdings weiß ich nicht genau wie ich es hinkriege das '0' erlaubt ist aber '' nicht.
Das ganze steht in der session.php in der funktion session_pagestart (ca. Linie 250)

Code: Alles auswählen

	if ( empty($thispage_id) && !empty($session_id) ) {
		$sql = "SELECT session_page FROM " . SESSIONS_TABLE . " WHERE session_id = '$session_id'";
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(CRITICAL_ERROR, 'Error doing DB query session_page row fetch', '', __LINE__, __FILE__, $sql);
		}
		$spage = $db->sql_fetchrow($result);
		$thispage_id = $spage['session_page'];
	}

	$thispage_id = (int) $thispage_id;
Also insgesamt soll die abfrage so aussehen das wenn $thispage_id = ''; (ACHTUNG nicht $thispage_id = 0; ) die Abfrage ausgeführt wird und halt der letzte wert ermittelt wird!

Ich weiß nicht ob isset funktioniert...wegen:
funktion session_pagestart($var1, $var2)
hiffi
Mitglied
Beiträge: 15
Registriert: 17.09.2005 20:39
Wohnort: Sinzig

Beitrag von hiffi »

Problem ganz einfach gelöst!

Hier:
session.php

Code: Alles auswählen

	if ( $thispage_id == '5001' && !empty($session_id) ) {
		$sql = "SELECT session_page FROM " . SESSIONS_TABLE . " WHERE session_id = '$session_id'";
		if ( !($result = $db->sql_query($sql)) )
		{
			message_die(CRITICAL_ERROR, 'Error doing DB query session_page row fetch', '', __LINE__, __FILE__, $sql);
		}
		$spage = $db->sql_fetchrow($result);
		$thispage_id = $spage['session_page'];
		unset($spage);
	}

	$thispage_id = (int) $thispage_id;
constants.php

Code: Alles auswählen

define('PAGE_AJAX', 5001);
check.php (von Ajax aufgerufene Datei)

Code: Alles auswählen

$userdata = session_pagestart($user_ip, PAGE_AJAX);
Benutzeravatar
gn#36
Ehrenadmin
Beiträge: 9313
Registriert: 01.10.2006 16:20
Wohnort: Ganz in der Nähe...
Kontaktdaten:

Beitrag von gn#36 »

Ich denke es wäre günstig, wenn du einen Negativen Wert für deine AJAX Seite nimmst, sonst gerät evtl. die "Wer ist Online" Anzeige (im Detail, wer ist wo) ins Schleudern und versucht ein Forum daraus zu machen...
Begegnungen mit dem Chaos sind fast unvermeidlich, Aber nicht katastrophal, solange man den Durchblick behält.
Übertreiben sollte man's im Forum aber nicht mit dem Chaos, denn da sollen ja andere durchblicken und nicht nur man selbst.
hiffi
Mitglied
Beiträge: 15
Registriert: 17.09.2005 20:39
Wohnort: Sinzig

Beitrag von hiffi »

ja da ist was dran... machen we das mal...
Antworten

Zurück zu „Coding & Technik“