Hi, ich wollte fragen, ob jemand eine Möglichkeit kennt eine Datei per PHP alle 24h zu löschen??
Wenn deine Seite regelmäßig aufgerufen wird, dann kannst du einfach die Uhrzeit überprüfen und sie dann löschen…
Ne andere Möglichkeit gäbe es mit PHP meines Wissens nicht, da dafür immer die Seite aufgerufen werden muss.
[COLOR=„blue“]Edit: Ok dann geht es so wie Gilles das sagt.
MfG
Über einen Cronjob, der alle 24h eine php Datei aufruft.
Cronjob.de - Kostenlose Cronjobs / Crontab
Die Datei die aufgerufen wird, löscht dann die Datei. Mit PHP: unlink - Manual
mein problem ist es halt, das ich ein forum hab, das als benutzererkennung die IP des users verwendet die beim ausloggen gelöscht wird.
Das eigentliche problem ist nicht beim löschen während des ausloggens, sondern wenn der User vergisst sich auszuloggen.
Dann bleibt er nämlich so lange eingeloggt, bis er oder ein anderer User mit der IP sich ausloggt!!
Dann würde ich sagen, dass du dein System überdenken musst.
Das ist sau gefährlich was die Sicherheit angeht - was, wenn die IP inzwischen einem anderen Rechner zugeordnet wurde?
Für Logins benutzt man SESSIONs und eventuell COOKIES.
[Letztere nur zum Merken des Logins - wie zum Beispiel hier das Häkchen bei „angemeldet bleiben“]
Da brauchst du keinen Cronjob für. Sobald jemand eine Seite eingeloggt aufruft, erneuerst du die letzte Zeit, in der der user eingeloggt war.
Bei jedem Login prüfst du alle Leute, die den Status online haben. Sollte da jemand die Zeitspanne überschritten haben, stellst du ihn als offline dar.
Gibt vielleicht noch eine andere Methode, aber wüsste garde nicht welche
Das ist absolut sinnfrei.
Die IP# ist eine Kennung für einen COMPUTER, aber nicht für einen Benutzer!
Das heißt also, dass mehrere Benutzer, die an einem Rechner arbeiten, bei Dir alle unter dem selben Namen und gleichzeitig arbeiten können!
Bitte nicht nur in Windows- oder MSDOS-Dimensionen denken. Es ist keine Seltenheit, dass auf einem Computer auch mal 100 Leute arbeiten.
Und dann gibts da noch die Proxies…
es ist noch dramatischer wie efchen schreibt. jeder router bzw jedes gateway hat eine ip.
im klartext: pro internetanschluss gibt es eine ip (gibt ausnahmen spielt aber hier keine rolle)
und wie soll ich die user dann kennzeichnen??
wenn beiträge gemacht werden, überprüft mein ‚Forum‘ die IP und schreibt dann den unter der IP gespeicherten Namen als Ersteller des Beitrags/ Threats…
Nutze Sessions (wie ich oben bereits schrieb)
ich hab mir mal ein zwei tutorials zu sessions angeguckt und versteh das nich so richtig… vllt. könnt ihr mir ja weiterhelfen und mir sagen was ich richtig und was ich falsch verstanden hab…
Also, Sessions, sind dateien, in denen z.B. der Benutzername des Users abgespeichert ist ( $_SESSION[‚username‘] = „wert“; ).
Der User hat diese Datei, die nur über seinen Rechner zugänglich ist.
und wenn ich dann sage das der username aufgerufen werden soll, gibt mir die session genau den inhalt wieder.
Auch wenn zwei leute die gleiche Session haben (beide haben die session username mit jeweils anderem inhalt) können sie unabhängig voneinander die Session benutzen.
Und wenn jetzt z.B. ein User ein Beitrag im Forum gemacht hat, und er sich ausloggt, ( session_destroy(); )
bleibt der Username beim Beitrag stehen und die Session wird gelöscht.
Hab ich alles richtig verstanden??
Ich glaube im Grunde ja.
Sessions sind Dateien, die auf dem Server gespeichert werden. Auf dem Client wird lediglich eine zufällige ID als Cookie erzeugt, anhand derer der Server die richtige Session-Datei dem richtigen Client zuordnen kann (ID = Dateiname). Das heißt: Wenn der Client eine existierende ID an den Server schickt, wird dort der Inhalt der zugehörigen Datei in die $_SESSION-Variable geladen und nach Ausführung des Scripts mit allen Änderungen wieder dorthin geschrieben. Das passiert vollautomatisch, wenn du session_start() aufrufst.
Zwei Clients können deshalb im Normalfall nicht auf dieselben Session-Daten zugreifen, da sie nicht dieselbe Session-ID zugewiesen bekommen (sie müssten schon irgendwie das Cookie kopieren). Das heißt allerdings nicht, dass sich nicht zwei Clients gleichzeitig mit demselben Account einloggen können. Sie würden dann aber nicht einen Satz an Session-Daten teilen, es würde eine zweite unabhängige Datei angelegt, was natürlich zu Synchronisationsproblemen führen kann.
Wenn nun ein Nutzer, der eingeloggt ist, einen Beitrag erstellt, wird zusammen mit dem Beitrag ein Identifikationsmerkmal dieses speziellen Nutzers gesichert (in der Regel in einer Datenbanktabelle). Das ist quasi immer die laufende Nummer des Benutzeraccounts, die eine eindeutige Identifizierung ermöglicht. Ab dann ist völlig unabhängig von aktiven Sessions klar, welchem Nutzer ein Beitrag zugeordnet werden kann.
Sessiondateien löschen sich bei gängigen Servereinstellungen automatisch, sobald sie eine gewisse Zeit nicht angefordert wurden (meist nach 20-30 Minuten) oder sobald der Nutzer das Browserfenster schließt.
Statt des Cookies gibt es noch die Möglichkeit, die Session-ID an die URL anzuhängen. Davon ist aber unbedingt abzuraten, da eine URL mit Session-ID natürlich viel schneller aus Versehen kopiert oder irgendwo gepostet werden kann als ein lokal gespeichertes Cookie.
Also kann ich als Login in meinen Code nicht schreiben:
$name= §_POST[‚username‘];
$_SESSION[‚username‘] = „$name“;
Und wie läuft das mit dem aufrufen der sessions?? reicht das wirklich wenn ich in den code
session_start();
schreibe??
ja
php legt normalerweise ein cookie auf dem betreffenden pc ab, in dem die sessions_id liegt. session_start() eröffnet eine session oder setzt diese auch fort.
beachte, dass eine session eine bestimmte lebensdauer hat, die in der php.ini festgelegt wird. es kann also sein, dass eine session schon nach einer 1/4 stunde abgelaufen ist, wenn sie nicht mit sesssion_start() erneuert wurde.
also geht das auch mit dem ersten code??
kann ich für mehrere Personen den code nutzen??
$name= §_POST[‚username‘];
$_SESSION[‚username‘] = „$name“;
Denn dann ham doch alle die session username oder hat das damit nix zu tun??
das alleine reicht wohl nicht, da dein script ja irgendwo auch die session abfragen muss.
überall da, wo die ip eingetragen wird und abgefragt wird muss dann der session eintrag b.z.w. die sessions abfrage hin.
und ja, jeder user bekommt eine eigene session zugewiesen (die übrigens beim schliessen des browsers normalerweise erlischt).
ein permanentes login löst man dann z.b. über ein cookie.
Also, abfragen, so hab ich das verstanden, tut man indem man session_start();
ganz oben ins dokument reinschreibt!
aber wie frage ich eine session ab??
Die Session-Daten liegen im superglobalen Array $_SESSION. Damit kannst du arbeiten wie mit jedem normalen Array auch. Es wird bei session_start() mit den Werten aus der zugehörigen Session-Datei gefüllt. Nach Scriptende wird dann der aktuelle Inhalt des Arrays wieder in die Datei geschrieben.
[php]<?php
session_start();
if (isset($_SESSION[‚test‘])) {
echo $_SESSION[‚test‘];
} else {
echo ‚Daten gesetzt. Bitte Seite aktualisieren.‘;
$_SESSION[‚test‘] = ‚Hallo Welt!‘;
}[/php]
Danke… weißt du zufällig, wie man das macht, das nach einer bestimmten Anzahl Beiträge bzw. Threats eine neue Seite entsteht, zu der man dann über ‚seite 2‘ oder so kommt??
So wie in diesem Forum!!
Ja das weiß ich zufällig…
Ach du wolltest das wissen?
PHP Blätterfunktion