php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.10.2004, 10:18  
Gast
 
Beiträge: n/a
Standard [Erledigt] Session ID Programmierung

Hi.

Ich habe bis jetzt relativ einfache logins für Seiten geschrieben, die eh keiner hackt oder wo Schutz besonders wichtig wäre.
Dennoch arbeitete ich bis jetzt folgendermaßen:

- User loggt sich ein
- bei richtigem Passwort bekommt der user eine UIN geschickt.
- diese UIN wird zusammen in einem cookie namens "user_loggedin" gespeichert.
- bei jedem seitenaufruf einer geschützten seite überprüft selbige ob die UIN, die uebergeben wird auch in der Textdatei steht.
- WICHTIG: bei jedem neuen login wird geschaut ob die UIN älter als einen Tag ist, und sollte das der Fall sein wird sie erneuert.

Ich war zuerst ganz stolz auf mich (g) weil ich mir das alleine ausgedacht und als totaler phpNoob auch noch hinbekommen habe.

Dann merkte ich...der Cookie.
Viele User (ich glaube in ServicePack2 bereits standart) haben Cookies deaktiviert - so bliebe also nur die SessionID-Programmierung.

Das Prinzip verstehe ich ja:

- Bei login wird SessionID gespeichert (die nach 20 min. verfällt)
- Jeder login bekommt eine eigene Session ID (halt immer ne andere generieren)
- die Session ID's werden auf dem Server gespeichert (TextDatei? Array?)
- jede Seite uebergibt bis zum logout ihre SessionID an die folgende - und natürlich bei Aufruf an den Server, der dann überprüft ob die ID gültig ist.


Aber die Umsetzung...
Mein Problem ist ja, dass ich die SessionIDs nicht nur speichern will, sondern dass diese auch mit der Zeit verfallen sollen.
Ein Cookie verfällt wenn der Browser geschlossen wird.
Gut
Eine Serverseitige Variable muss von einem script zerstört werden und WIE kann ich einem Script sagen dass es sich alle 20 min aufrufen soll?

Ich kann doch keine Endlosschleife machen, oder?

Ich dachte noch an sowas:

PHP-Code:
<?php
//----------------SessionDeleter.php-------------------
...
//Intro u.s.w.

while ($x 5)
{
 
//NICHT x hochzählen -> Endlosschleife
 
lookAtSessionIds(); //eine woanders deklarierte wenn-dann-lösch-funktion
 
wait(20); //warte 20 minuten.
}
...
<?
php
Gibt es so eine wait funktion und würde ich nicht ärger mit meinem provider kreigen wenn ich da ne endlosschleife mache?

wisst ihr ne schönere lösung?


danke!

Simon
  Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 06.10.2004, 10:40  
Gast
 
Beiträge: n/a
Standard

du kannst doch das session timeout beeinflussen. kannste ja höher stellen ..
und mit alle 20 minuten selber aufrufen wirste auf dauer auch nicht glücklich
und du hast erheblich mehr traffic.

zudem noch was anderes: wer cookies ausgeschaltet hat, egal ob nun selber
absichtlich oder xp sp2 laufen hat - der ist selber schuld, und muss sich halt
nach einer gewissen zeit inaktivität wieder neu anmelden ..
  Mit Zitat antworten
Alt 06.10.2004, 10:40  
Gast
 
Beiträge: n/a
Standard

a) ( sollten cookie ON sein )

// ****** SET SESSION NAME ******
session_name('sid');
$path = dirname(__FILE__).'/tmp';
session_save_path($path);

// ****** SESSION START ******
session_start();

// ****** SET SESSION COOKIE ******
setcookie(session_name(), session_id(), time()+7200);



b) ( sollte Cookie OFF sein )
verfällt die Session eh nach beenden des Browsers oder verlassen der Seite ( d.h. bei nicht weiterer Übergabe der SessionID an die nächste Seite )


mfg

ps: session_save_path hab ich in diesem Beispiel da ich im mom probs mit meinem Hoster hab ( im standart /tmp keine del rechte ) man bekommt imer ein error welcher nicht schlimm ist aber für ein ordentliches Script doch nervig und unprofessionell )
  Mit Zitat antworten
Alt 06.10.2004, 10:53  
Erfahrener Benutzer
 
Registriert seit: 19.11.2003
Beiträge: 172
BastianX75
Standard

Hi,

wenn du mit Sessions arbeitest, dann werden die Session-Variablen von PHP selbstständig gelöscht.

Guck mal in deiner phpinfo() unter dem Punkt session gibt es die Directiven:
session.gc_divisor = z.B. 100
session.gc_maxlifetime = z.B. 1440
session.gc_probability = z.B. 1

In diesem Fall würde PHP mit einer Wahrscheinlichkeit von 1/100 (also 1%) aller Seitenaufrufe alle Sessions, die älter als 1440 Sekunden sind, löschen.
__________________
Schönen Gruß
Sebastian

Erfahrung ist eine nützliche Sache. Leider macht man sie immer erst kurz nachdem man sie braucht.
BastianX75 ist offline   Mit Zitat antworten
Alt 07.10.2004, 11:28  
Gast
 
Beiträge: n/a
Standard

Cool

Hab heute erst gelernt, dass php session-variablen bietet.
SelfPHP ist doch nützlich...

klar das probiere ich.
Ach ja, ich hätte jetzt wahrscheinlich so angefangen:

PHP-Code:
$thefile="sid.txt";
$open fopen($thefile,"a+");
$data file($thefile);
$data[count($data)] = "[i]Neue_generierte_Sid[/i]

fwrite($open, "
$data"); 
ich habe die funktionen aus dem kopf geschrieben und garantiere für gar nix. die sollen nur verdetulichen wie umständlich ich das gemacht hätte.

ausserdem hätte ich (ist mir erst heute morgen eingefallen) eine zeit in die datei geschrieben (hinter die jeweilige sid) wann diese verfällt.

bei jedem check einer sid würde dann auch geschaut werden, ob eine verfallen ist und wenn ja - diese gelöscht.


egal - die vorgefertigten funktionen ersparen mir da umstand.

danke!
simon
[/php]
  Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Session Problem karina_02 PHP Tipps 2008 6 18.05.2008 22:37
Session Variablen als Referenz!? O_o Sam781 PHP-Fortgeschrittene 4 01.10.2007 11:19
Problem bei session Lifetime Cyberbob_at_tot PHP Tipps 2007 5 05.06.2007 17:47
Session in Session tinchen PHP Tipps 2007 22 21.03.2007 19:53
session nach seitenwechsel leer... GELight PHP Tipps 2006 8 17.09.2006 15:17
session array Timo Trallala PHP Tipps 2006 18 22.04.2006 13:45
Frage zur Anwendung einer Session mehrfach... GELight PHP Tipps 2006 10 12.03.2006 16:47
[Erledigt] php session problem :( PHP Tipps 2005-2 5 21.10.2005 16:37
Klassenobjekt in ner Session speichern?! Finkman PHP Tipps 2005-2 5 09.08.2005 00:38
Session wird nicht angelegt PHP Tipps 2005-2 7 24.07.2005 13:35
Kreieren einer Session PHP Tipps 2005 11 28.05.2005 15:16
verliere Session Sonja PHP Tipps 2005 3 27.04.2005 09:32
[Erledigt] Formulardaten in einer Session speichern, per Link übergeben PHP Tipps 2004-2 2 29.12.2004 15:47
[Erledigt] Hilfe...PhpBB Session Problem!! PHP Tipps 2004-2 2 15.12.2004 18:28
$_GET und Session PHP Tipps 2004 9 20.06.2004 19:17

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php session erneuern, session erneuern, php session id erneuern, session id erneuern, merkliste programmieren, merkliste php, php merkliste, session id erneuern php, php sessionid erneuern, id programmierung, session erneuern php, sessionid php, php session eigene id, session programmieren php, session programmierung php, php sessionid generieren, php eigene session id, merkliste in php programmieren, swisscom , session ermeuern, merkliste mit cookies programmieren

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:11 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.