Sessions
-
Wenn du aus einer Textarea einen Text mir Leerzeichen abschickst, werden die \n natürlich mitgeschickt, sollte eigentlich funktionieren, sie in <br>s umzuwandeln, z.B. mit str_replace().
Nochmal nen guter Link zu Sessions: http://www.dclp-faq.de/ch/ch-version4_session.html
-
Du müsstest halt für jeden zugriff in einer Tabelle die IP loggen (DB)
Sessions werden auf dem Server verwaltet, d.h. sind solang gültig wie der User die Session-ID weiß und du die Session halt noch nicht für ungültig erklärt hast
Die Zeilenumbrüche kannst du wie schon gesagt mit str_replace ersetzen oder auch mit nl2br()[ Dieser Beitrag wurde am 19.03.2003 um 22:37 Uhr von flenders editiert. ]
-
Danke, werde dann mal die funk nl2br() ausprobieren, da ich das mit dem str_replace() schon mal ausprobiert hatte.
Das mit den IP's in der Tabelle loggen, wie meinst du das, da es ja eigentlich viel zu viel Speicher verbraucht, normalerweise braucht man ja nur eine smallint variable...
meinst du dann ne Tabelle so in der form:| IP | Hits |
Aber dann könnte ich doch nicht kontrolieen, welcher User die IP hatte. Wenn jetzt ein user eine IP hat, sich ausloggt, nen anderer loggt sich ein, und bekommt die gleiche IP, dann wird der ja nicht mitgezählt.
-
eher so
IP
und dann
mysql_query("select IP from iptable where IP='".ip."'"); if(!mysql_numrows()) { mysql_qeury("insert..."); counter++;
}wobei ich eher für ein textfile wäre - denn die verbindung zur db aufbauen kostet doch sinnlos viel zeit
[ Dieser Beitrag wurde am 20.03.2003 um 15:50 Uhr von Shade Of Mine editiert. ]
-
Ja, aber dann ist man ja nicht davor bewart, dass wenn 2 user mit der gleichen ip auf die seite gehen, dass dann beide gezählt werden.
-
Außerdem dachte ich bisher immer, dass man eigentl. nur seltenst seine IP behält sondern fast bei jeder Einwahl ins Internet 'ne neue zugewiesen bekommt. Ohne Cookies ist das ganz doch dann damit hinfällig oder hab ich das falsch verstanden?
MfGTobsen
-
Genau, wenn du dich neu einwähst bekommst du ne neue, aber wenn nen anderer user sich nachdem du dich abgemeldet hast einwählt, und die gleiche IP bekommt wird er nicht regestriert.
Und wenn der jenige cookies deaktiviert hat funzt das mit den cookies nicht. Wenn man diese nicht ausschalten könnte wäre es einfach, aber so.
-
Ich hatte auch gesagt, dass du dann auch noch die Zeit mitprotokollieren müsstest! Und dann z.B. sagen, dass ein Zugriff nur gezählt wird, wenn innerhalb der letzten Stunde kein Zugriff von der selben IP erfolgte.
Aber wie schon gesagt: ganz korrekt wird es nie! Entweder er zählt zu viel oder mal zu wenig.
Und einen so großen Aufwand für einen Zähler zu betreiben, nur damit er einigermaßen richtig zählt halte ich auch für etwas übertrieben! -> Am ehesten einfach mit Cookies (die nur währen der aktuellen Browsersitzung bestehen) lösen
-
gut, wie kann ich Ihm sagen, dass er die löschen soll, wenn er den browser schliesst? ich kann doch nur die zeit bestimmen, wie lange er den cookie behalten soll, oder net?
Ich habe es jetzt mal mit cookies versucht:
include "includes/db.php"; if(empty($_COOKIE['lastIP']) OR $_COOKIE['lastIP'] != $_SERVER['REMOTE_ADDR']) { $mysql = login("forum"); ---> setcookie("lastIP", $_SERVER['REMOTE_ADDR']); $sql = "UPDATE `Counter` SET `hits` = `hits` + 1"; mysql_query($sql) or die("Fehler beim Aktualisieren des Counters"); $sql = "SELECT `hits` FROM `Counter`"; $result = mysql_query($sql) or die("Fehler beim holen des Counters"); $row = mysql_fetch_row($result); logout($mysql); }
Und da gibt er mir ---> da nen Warning.
Warning: Cannot add header information - headers already sent by (output started at c:\apache\htdocs\holymetalercase\show.php:1) in c:\apache\htdocs\holymetalercase\navigation.php on line 8Wodran kann das liegen?
Darf ich wie bei den sessions nix vorher ausgeben, oder?[ Dieser Beitrag wurde am 20.03.2003 um 19:02 Uhr von HolyMetaler editiert. ]
-
Wieso, du kannst doch in jedem Script oben in der Session die aktuelle Zeit speichern. Zuvor testest du, ob die Zeitdifferenz zwischen letztem Zugriff und aktueller Zeit einen bestimmten Wert überschreitet, wenn ja löscht du die Session!
Du kannst natürlich auch direkt im Verzeichnis, wo die Dateien der Sessions liegen alle löschen, deren letzter Zugriff zu lange her ist
-
Ja, ok, das hab ich jetzt glaube ich geschecked.
Und was kann das bei der Warnung 2 antworten weiter oben sein?
-
Ja genau! Das liegt nämlich daran, dass die PHP-Session-Verwaltung normalerweise schon von sich aus ein Cookie mit der Session-ID setzt! Warum machst du das jetzt nochmal
-
Ja, aber ich starte überhaupt keine Session, sondern setzte einen cookie.
Es ist für nen Besuchercounter, ja, ich weiss für den anfang nen bissl kompliziert, aber ich will es halt mit drin haben.
-
Darf ich wie bei den sessions nix vorher ausgeben, oder?
Darauf bezog sich mein 'Ja genau!'. Du darfst bei Sessions eben genau aus diesem Grund (setzen eines Cookies) vorher nichts ausgeben
-
Das ist aber kagge, da ich es die einzelnen dateien, in einer show.php include, wo ich aber schon den <html><body> starte, und nicht bei jeder datei den counter überprüfen will.
-
dann mach eben für die Ausgabe des Zählerstandes eine 2. Datei und binde die bisherige oberhalb von <html> ein
-
ok, ich werde mal gucken, muss dann zwar einiges umstriken, aber es ist ja net viel.
-
Kann ich es nicht auch über include_once machen, oder gilt das immer nur für die eine Seite, und wenn die neu geladen wird, wird die trotzdem wieder includet?
-
Gilt imho nur für das jeweilige Script
-
Also das mit den Cookies würde ich lassen. Wie flenders das ja schon beschrieben hat, werden bei Sessions sowieso Cookies verwendet.
Und für die Leute, die keine Cookies erlauben, gibst Du dann die SessionID einfach per GET in der URL weiter. Wenn bei Deinem Webspace/PHP trans-sid aktiviert ist, dann wird die SessionID an jede URL automatisch angehängt. Das ist ab PHP 4.0.3. defaultmäßig aktiviert.Und dann kannst Du meiner Meinung fast die SessionID verwenden, um nen wiederholten Seitenzugriff bei der Zählung auszuschließen. Aber ich bin da nicht 100pro sicher, von was die SessionID abhängt.
Zu Deinem Headers-Sent-Prob:
Wenn Du Sessions verwendest, dann schreib ein der ersten Zeile am besten session_start(); - dann kann Dir zumindest da nix mehr zwischen kommen.MfGr,
mid