[php/mysql] Session-System für einfache Besucher..wie am besten?

BartTheDevil89

Devilution Media
ID: 87739
L
2 Mai 2006
3.960
103
Hallo,

ich möchte für eine Homepage ein einfaches Session-System erstellen. Also zu jedem Besucher soll etwas gespeichert werden. Wieviel Pages er aufgerufen hat, wann er die Seite besucht hat, etc.....wie löse ich sowas am elegantesten?
Über session_start mir ne Session erstellen, in der eine Datenbankid eintragen und dann alles in der Datenbank speichern oder wie würdet ihr das lösen?

Was mir auch wichtig wäre, dass die Links suma-freundlich bleiben, also nicht mit ?sid=34434 gearbeitet wird, sondern über Cookies, etc. also versteckt.

Daher eben die Frage: Wie würdet ihr es am besten lösen?
Denn ich hab zwar schon mehrere Tutorials mir angeschaut, aber jedes arbeitet anders...daher die Frage: Wie am besten machen. ;)
 
eine tabelle erstellen in dem jeder seitenaufruf geloggt wird, und die einem user zuordnen, keiner session

session_start arbeitet immer über cookies, wenn möglich
 
warum? welche vorteile bringt das?

erstmal super, man hat keine ahnung auf wen du dich beziehst, solche posts sind wirklich sehr informativ :clap:

zu meinem lösungsvorschlag: man kann einfach auf alle daten zugreifen, wenn man es mit in die sessions schreiben würde, müsste man erst durch alle sessions iterieren um die daten zu bekommen, sehr schlechte möglichkeit
 
ey immer das rumgeheule! sorry für das fehlende e. aber nur die ip ist sinnfrei da ja mehere user die selbe ip haben können.
 
ey immer das rumgeheule! sorry für das fehlende e. aber nur die ip ist sinnfrei da ja mehere user die selbe ip haben können.
Aber relativ unwahrscheinlich, dass dies am gleichen Tag passiert.

Edit: Was heißt rumgeheule? Oder meckerst du deinen Compiler auch an, wenn er nichts macht, weil du ein "e" vergessen hast?
 
also ich und mein bruder haben jeden tag die selbe ip da wir über den gleichen router ins netz gehn. und in der schule sind wir mit 20 leuten mit der selben ip im netz. also ich denke mal wenn man das weiß kann man da gegensteuern.

könnte man nicht auf der startseite eine session starten (ohne login) und dann die sid zur identifizierung nutzen? (müsste doch eigentlich gehn auch wenns unüblich ist) sonst nat cooki(e!!)s


edit: klar mecker ich den an wenn er nicht macht was ich will ^^ seid doch nicht immer alle so ernst.
 
PS: IP gibt es zweimal: 1. die IP deines Router und 2. die IP deines Rechners... man könnte ja auch mal die IP des Rechners nehmen, sollte diese niht angegeben sein (ich glaube AOL sperrt ie, weiss da nichts genaues) dann nimmste einfach die IP des Routers,... dann hast du halt anstatt 100 Besucher nur vlt 95...ist ja kein Weltuntergang... ;-) 100%ige Statistiken ist sehr schwer (wenn sogar fast unmöglich) zu kriegen ;-)
 
Ähm ach so, falsch gelesen, ich dachte es geht um eingeloggte User.
Nur eins frage ich mich, warum verwendest du nicht gleich Google-Analytics, das macht alles für dich, und ich denke nicht, dass du die Erkennungssoftware selbst neu schreibst (wenn du schon so essentielle Frage stellst)
 
da lernt man auch nix bei.... mom nutze ichs ja, will aber weg von google....

ist das mit der session möglich/nützlich/effektiv?
 
hab ich gesagt das ich es nachbauen will? nein! schon klar das google besser ist wie ich! aber ich finds trotzdem besser wenn ich alles an meine bedürfnisse anpassen kann...
 
muss man das Rad jedesmal neu erfinden? Etwas vergleichbares zu Google Analytics nachzubauen würde Wochen dauern

Hast du Google Analytics mal genauer angeschaut... :ugly:

@BartTheDevil89 was willst du mit den Daten machen? Willst du einfach nur sehen wieviel Besucher grade Online, wo sie sind und wielange sie schon auf deiner Seite sind?

Dann starte für jeden Besucher einfach eine Session... die Session Id packst du in die Datenbank mit dem Datum wann sie erzeugt wurden ist, welche Seite grade Aufgerufen ist und dazu noch ein Counter. Bei jedem weiteren Aufruf Updatest du einfach die aktuelle Seite und erhöhst den Counter. Das alles geht mit einem Query...

PHP:
mysql_query("
INSERT INTO
    stats_online
SET
    session_id = ".session_id().",
    datum = NOW(),
    seite = 'aktuelle_seite',
    counter = 1
ON DUPLICATE KEY UPDATE
    seite = VALUES(seite),
    counter = counter + 1
");

Zustätzlich machst du noch ein Query der dir alte Datensätez löscht.
PHP:
DELETE FROM sats_online WHERe datum < DATE_SUB(NOW(),INTERVAL 30 MINUTES)

Den Query bindest du so ein das er alle X aufrufs ausgeführt wird. zb
PHP:
if(rand(0,9) = 5) mysql_query("DELETE FROM sats_online WHERe datum < DATE_SUB(NOW(),INTERVAL 30 MINUTES)");

Das X kommt drauf an weivel Besucher du hast. Wenn du viele hast kann x Ruhig groß sein, wenn du wenig hast sollte es "relativ" klein sein. (Am besten du bindest den Query auch auf der Seite ein wo die Auswertung statt findet)

Alternativ kann man sich auch ein eigenen Session Handler schreiben der mit der Datenbank arbeitet und kann da zusätzlich die Felder einfügen.

Quiny89 schrieb:
aber ich finds trotzdem besser wenn ich alles an meine bedürfnisse anpassen kann...

Dann müssen das schon besondere Bedürfnisse sein... von Besucherstatistiken her deckt Analytics meiner meinung nach wirklich sehr viel ab.
 
@BartTheDevil89 was willst du mit den Daten machen? Willst du einfach nur sehen wieviel Besucher grade Online, wo sie sind und wielange sie schon auf deiner Seite sind?

Mein Ziel ist es, dass ich Besucherzahlen gespeichert werden, eventuell Besucher online.
Außerdem hab ich die besondere Funktion, dass ich einem Besucher alle 2 Minuten eine Werbung bringen möchte. Also beim erstellen der Session wird die Werbung gezeigt und wenn der User dann weitersurft und mindestens 2 Minuten später wie ne Seite aufruft dann wieder die Werbung....

Dachte daher über sessions machen und dann den timestamp speichern, wann die Werbung gebracht wurde. Dann eben ne Kontrolle ob timestamp + 2 Minuten < aktuelle Zeit....in diesem Fall eben timestamp erneuern und Werbung zeigen.

Und für dieses Session-System suche ich eben das beste System.
 
Hast du Google Analytics mal genauer angeschaut... :ugly:

natürlich, sonst würde ich es ja nicht erwähnen ;)
Was gefällt dir denn daran nicht?


Außerdem hab ich die besondere Funktion, dass ich einem Besucher alle 2 Minuten eine Werbung bringen möchte. Also beim erstellen der Session wird die Werbung gezeigt und wenn der User dann weitersurft und mindestens 2 Minuten später wie ne Seite aufruft dann wieder die Werbung....

du solltest dir angewöhnen gleich zu erwähnen, was du machen willst, denn das rückt alles wieder in ein anderes Licht, da du alles selbst programmieren wusst
 
du solltest dir angewöhnen gleich zu erwähnen, was du machen willst, denn das rückt alles wieder in ein anderes Licht, da du alles selbst programmieren wusst

Das hat ja auch niemand behauptet, dass ich das nicht machen werde....hier geht es eher darum herauszufinden mit welchem Mittel man sowas am besten macht.:roll:;) Es geht mir nicht drum, dass ich hier nen fertigen Code bekomme und fertig...sondern es gibt halt dafür ne ganze variante von möglichkeiten und ich würde gern erfahren, was ihr bevorzugen würdet und warum.
 
natürlich, sonst würde ich es ja nicht erwähnen ;)
Was gefällt dir denn daran nicht?

Ich bin davon ehrlich gesagt begeistert... das was ein da geboten wird ist echt wow, vorallendingen für den Preis. ;) Und jedes mal frag ich mich wie die das machen. Ich hab zwar eine Vorstellung, aber um sowas fehlerfrei duchzuplanen und am ende umzusetzen sind etwas mehr als "Wochen" nötig. Selbst in einem eingespielten Entwicklerteam wird das mehr als nur "Wochen" kosten...

Das hat ja auch niemand behauptet, dass ich das nicht machen werde....hier geht es eher darum herauszufinden mit welchem Mittel man sowas am besten macht.

Das sollte man aber gleich am Anfang machen. Viele wege führen nach Rom und noch mehr wege führen aus Rom. ;) Um ein Konzept zu entwickelt sollte man das Ziel kennen, ansonsten wird das nix... zb den Ansatz den ich gepostet hab hilft dir relativ wenig bei deinem "Problem" weil ich ein ganz anderes Ziel angenommen hab. Dein Problem sind aber zwei verschiedene Schuh... das eine Problem kannst du ganz einfach mit PHP Sessions machen, das andere kannst du auf den Sessions mit Aufbauen.
 
Zuletzt bearbeitet: