...und wo finde ich die am besten? natürlich bei zorg. hey, orkus and company... könnt ihr mir mal irgendein beispiel über zwei seiten schicken, die ein login behandeln? ich müsste zuerst die eingaben mit der tabelle vergleichen, danach die session eröffnen und dann das flag "online" in der tabelle auf 1 setzen. im php bin ich nicht mehr wirklich schlecht, immerhin proge ich jetzt seit einem monat php, abär die scheiss sessions...
merci, schon mal ein anfang... aber was bringt mir das ganze betreffend sessions? php habe ich sont eigentlich noch keine probleme, die ich nicht lösen konnte gehabt!
Diesen code finde ich gut: (braucht kein register-zeugs)
session_start();
// Use $HTTP_SESSION_VARS with PHP 4.0.6 or less
if (!isset($_SESSION['count'])) {
$_SESSION['count'] = 0;
} else {
$_SESSION['count']++;
}
?>
also...session's sind was sau gemütliches und auch nicht besonders kompliziert.
session ist allerdings nur gemütlich wenn php mit "--trans-sid" kompiliert wurde, ansonsten musst du nämlich die session ID von hand weitergeben.
kurzes erläuterung wie das session-handling funktioniert:
sessions sind grundsätzlich cookies (also files) auf dem server. Die session ID die du meist im URL-Feld deines Browsers findest, gibt an in welchem File deine Daten (cookie values) gespeichert sind. Damit PHP weiss das du eine session hast muss dein Browser diese session ID's über $_COOKIES[], $_POST[] oder $_GET[] jeder neuen seite neu übergeben.
Meine Erklärung funtioniert mit register-globals = off
empfehlens wert zum anfangen ist in jedemfall
set_ini("session.use_cookies","off");
damit die session ID nicht als cookie gespeichert wird sondern immer schön per querystring weitergereicht wird...ist so auch einfacher zum debuggen.
Beim Login ist es ansich ein ganz normaler POST:
du überprüfst username, und password, wenn beides stimmt kannst du das verwenden:
session_start(); //brauchst du eigentlich nicht, mach ich mir mehr zur Übersicht.
Var's benennung: es ist sinnvoll wenn du session vars mit s_varname benennst, da du dann sicher nie eine session-user-id mit einer post-user-id verwechselst.
die user_ID aus deiner DB Table speicherst du dann so in dieses session file aufm server:
hier empfielt es sich ein location-replace zu machen:
header("Location: http://www.meinserver.ch/login.php?PHPSID=".session_id()");
mit session_id(); kannst du die aktuelle session ID herausfinden, bei einem header-location-replace hängt PHP nicht von selbst die session ID an die URL, darum musst du das in diesem fall selber machen.
so nun musst du auf jeder page die sessions verwenden wollen prüfen ob eine solche besteht und wann ja das session-handling starten.
hai...du scheinst nicht zu kapieren...wenn du -enable-trans-sid drin hast macht er bei links per ?sessid=xy und bei forms macht er ein hidden feld mit der session id...wen PHP jetzt was per Post bekommt schaut es gar nicht mehr in das GET array, ausser du greifst bischen tief in die configs ein, was allerdings zur folge haben kann das dann andere sachen nicht mehr wie gewohnt laufen.
cookies sind in diesem fall nicht nötig. z.org hat auch keine session-cookies, so viels mir isch.
du musst das hiddenfeld aber schon selber schreiben, oder? und übrigens: was ist wenn ich eine alte php-version habe? ich sollte glaube ich mit $HTTP_SESSION_VARS arbeiten! kann mir einer erklären, wie ich dann die daten handle? einlesen per
<?php
session_start();
$HTTP_SESSION_VARS['s_userid']= $id //vom benutzer die id
$HTTP_SESSION_VARS['s_pass']= $pass //des benutzers passwort
?>
aber wie lese ich die aus? ich programmiere seit der 5. klasse, aber so etwas ist mir noch nie untergekommen!
ich weiss, ich studiere sehrwahrscheinlich viel zu weit.
sind was saugemütliches wenn mans kapiert, hä? mein scheiss (ja, ich reg mich jetzt nach einer woche testen langsam aber sicher auf, und zwar deftig!!!) code will und will einfach keine sessionid generieren. ich sehe immer oben anstatt die sessionID die direkten variablen mit den dazugehörigen werten. z.B.:
easeli.ch/test/index.php?userid=easy&pass=iseli&submit=login
manchmal machen wir coder-sessions, an nem WE-Tag coden wir was zusammen. In Zukunft wollen wir diese Treffen öffentlich machen; wär sicher was für dich.
wär sicher was für mich. nur komme ich von hinter dem ricken (von euch aus gesehen) und habe nicht die möglichkeit (zug) mich an den zorg-treffen einfach so mal sehen zu lassen. aber die coder-session wäre noch cool, denn ich lerne wie schon gesagt jetzt php...
ja was passiert denn hier?
meine argument "action" im beschriebenen fall?
man sollte die sessionID in der url sehen, nicht? ich sehe sie nicht... das hiddenfeld in dem formular ist auch nicht vorhanden (auch dann wenn ich es vom server hole) und ich kann die werte nicht auslesen...
und wie leite ich auf das file um in dem ich eingeloggt bin? oder kann ich dafür if eingeloggt verwenden?
übrigens: die obenbeschriebenen php-files sind online unter easeli.ch/test abrufbar...
so nun kannst du die session vars im stil von echo $_SESSION['s_var']; ausgeben. Hier sollte auch grad automatisch die session id an jeden link gehängt werden, sofern du trans-sid aktiv hast.
hmmm.... wegen dem header jumpt er jetzt bevor ich das formular sehe weiter in die eingeloggtseite. wohin muss ich den header genau schreiben? oder per if checken ob das form ausgefüllt wurde?
ABER:
juhuuuuu, die sessionID wurde generiert!!!! danke, danke, danke, danke....
jaja... ich hans ändlich gschafft! min lehrmeischtär hät mär än seich aageh, beträffänd php-version ufäm server! abär jetzt da allä funktioniärt, chöndär si ungeniert go aaluägä...
nur dä login muän ich im momänt no sälbär machä, falls är also einä wännd, müästädär äs meil a mich schriibä!
habe ich schon noch vor, keine angst! aber das iimeil geht trotzdem zuerst an mich, und ich muss es eintragen.
zudem ist die page eh noch im alpha-stadium, wie du vielleicht bemerkt hast. die alte site ist ja noch online.
andere frage: wie kann ich ein flag ("online";int) auf 0 zurücksetzen, wenn der benutzer sich nicht manuell ausloggt? wenn man ausloggen klickt, schliesst sich die session und das flag wird wieder auf 0 gesetzt. aber wenn er einfach das fenster schliesst, schliesst die session nicht manuell, ODER?