Ich glaub ich bin zu doof für sessions :-( HELP!

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Ich glaub ich bin zu doof für sessions :-( HELP!

    Hallo ihr,

    gleich zu meinem Problem, ich habe eine Datei namens login, die wie folgt aussieht:


    <?php
    include 'dbconnect.php';

    $select = "SELECT nick, pw FROM users WHERE nick='$username' AND pw='$password' ";
    $selconn = mysql_query($select);
    IF ($daten = mysql_fetch_assoc($selconn)) {
    $login_username = $username;
    $login_password = $password;


    session_start();
    session_register("login_username");
    session_register("login_password");
    echo "<META HTTP-EQUIV=\"refresh\" CONTENT=\"0;URL=main.php?".session_name()."=".session_id()."\">";
    } ELSE {
    echo "<META HTTP-EQUIV=\"refresh\" CONTENT=\"0;URL=fehler2.php\">";
    }
    ?>

    so, das ganze ist für ein Forum... nun zu meinem problem... ich gebe da also meine daten ein name und passwort und werde auch richtig weitergeleitet an die main.php zusätzlich mit PHPSESSID=xxxxxxxxxxxxxxxxx (also ne session-id) hinter dem main.php... gut, in der main.php steht oben:

    <?php
    session_start();
    ?>

    so und dann ist man halt eingeloggt, ich arbeite auch mit den variablen, nutze sie für db abfragen und ähnliches, soweit so gut. Ich übergebe nun diese Session an jede Seite und füge oben auch immer:

    <?php
    session_start();
    ?>

    auch das geht alles, die session funzt also immer, super... so, dann schliesse ich meinen Browser, gehe erneut auf die Seite und was passiert? Ich bekomme ne neue Session zu gewiesen und bin nimmer eingeloggt, muss mich also jedes mal, nachdem ich den Browser schliesse und die seite wieder aufrufe neu einloggen und das ist echt tierisch nervig! Woran liegt das? Wenn ich mir meine session merke und gebe es dann halt so ein...

    main.php?PHPSESSID=xxxxxxxxxxxxxxxxx

    geht es, gehe ich aber nur auf main.php bekomme ich ne neue session, kann mir da vielleicht mal einer helfen?! Was soll ich tun, ich habe es schon so versucht, einfach ne weiterleitung per index.php die so aussieht:

    <?
    session_start(); (ohne dem kommt gar nix...)
    $sid = session_id();
    $sname = session_name();

    header ("Location: main.php?$sname=$sid");
    exit;
    ?>

    doch das funzt alles nicht, kann mir vielleicht mal jemand sagen wie ich auslesen kann welche session ich hatte als ich noch richtig eingeloggt war und wie ich die auch nach schliessen des browser wieder rausfinde und dann hinten an die main.php anfügen kann? Ich bin hier echt am verzweifeln, bin halt noch newbie in sachen php :-( Würde mich über Hilfe sehr freuen!

    Gruss,
    Etienne
    Zuletzt geändert von Etienne; 28.05.2002, 07:53.

  • #2
    Du kannst doch einfach die SID in einem Cookie speichern,

    bzw

    so weit ich weiss, legt ja PHP die SID automatisch in einem Cookie ab (name durch session_name("name") betsimmbar.

    Kommentar


    • #3
      Session = Sitzung
      Brower zu -> Sitzung zu ende
      Das ist schon so gewollt, wenn du einen dauerhaften Login haben willst, musst du die Daten in nem Cookie speichern und daraus dann ggf. ne neue Session erzeugen.

      //Edit: Satzbau entschärft
      Zuletzt geändert von PAB; 28.05.2002, 13:56.

      Kommentar


      • #4
        Hmh das habe ich mir schon fast gedacht *seufz* Also komme ich um Cookies nicht herum? Kannst du vielleicht mal ein Beispiel posten wie ich das mit cookies lösen kann? Habe mich damit noch recht wenig befasst, dachte es ist mit sessions so einfach besser.

        Gruss,
        Etienne

        Kommentar


        • #5
          Okay, ich habs hinbekommen, habe halt jetzt einfach nen cookie gesetzt mit der aktuellen sid, funzt auch, ist aber keine sehr elgante lösung :-( Also, wenn jemand noch ne besser kennt...! Würd mich freuen :-)

          Gruss,
          Etienne

          Kommentar


          • #6
            Nur ist auch diese Methode (SID -> Cookie) nicht zum dauerhaften Speichern geeignet, da sich ne Session nach 30 Min. ohne Zugriff beendet.

            Kommentar


            • #7
              Dann lässt man die Cookies eben auch nur solange Leben:
              PHP-Code:
              setcookie("sid"session_id(), ini_get("session.cache_expire") * 60); 
              Jetzt sitzt der Cookie auch nur 30 Minuten (bzw. so lange wie's in der php.ini gespeichert ist).
              Zuletzt geändert von Nezzar; 28.05.2002, 15:43.
              "Ach was soll's? Dann bau ich mir halt meinen eigenen Vergnügungspark mit Blackjack und Nutten." - Bender

              Kommentar


              • #8
                Was willst du überhaupt damit bezwecken ?
                Ich denke mal das Prinzip von Sessions ist dir nicht unbedingt klar und du hast ein Problem für das es sicher eine bessere Lösung gibt.

                Kommentar


                • #9
                  Hallo KinNeko,

                  Ich hatte einfach einen Denkfehler, ist meine Schuld. Ich muss dazu sagen, ich habe mich nur mit anderen Funktionen (Hauptsächlich mysql und if anweisungen beschäftigt), als es dann aber darum ging die user zu "identifizieren" dachte ich sofort an sessions, ich fand sie einfach besser als cookies und man konnte leicht Variablen übergeben etc. Nun war ich aber so blöd (und das ist meine Schuld, eigentlich hätte ich auch selbst drauf kommen können) zu glauben des eine Session bestand hat wie ein Cookie, aber das ist ja vollkommener Quatsch, denn eine session ist ja gerade dazu gedacht eine einmalige Identifizierung zu bieten, eben für die dauer, die man auf der Seite surft und nicht länger. Das Problem ist jetzt nur dies: Ich habe alle Funktionen in meinem Forum auf sessions gestellt, daher viele viele Abfragen mit:


                  <? if ((isset($HTTP_SESSION_VARS["login_username"])) && isset($HTTP_SESSION_VARS["login_password"])) {

                  usw. wie mache ich denn solche Vergleiche mit Hilfe eines Cookies?! Ich bin jetzt ziemlich aufgeschmissen, weil ich die ganze Zeit das probiert habe, was mir nun nix mehr bringt :-(, das ist echt frustrierend, aber ich bin eben noch en Newbie, leider :-(. Ich bin für jede Hilfe, cookie betreffend dankbar... wie muss ich die reg machen das er de cookies nach prüfen ob daten korrekt sind anlegt und wie kann ich dann abfragen ob dieses cookie wirklich dem user gehört... ich will ja damit sowas machen wie z.B. einige links für eingeloggte (logout usw. und einige für nicht angemeldete login etc.) und ich will nicht eingeloggten mitgliedern nit erlauben Beiträge zu posten (bei session frage ich einfach mit if blabla die session ab wie oben und mache dann ein die, falls die bedingung false meldet, aber wie realisiere ich sowas bei cookies?! Ich wäre für jede Hilfe dankbar!

                  Gruss,
                  Etienne

                  Kommentar


                  • #10
                    Eigendlich funktioniert das ganze wie bei den Cookies, da du ja nur prüfst ob eine Variable gesetzt ist.

                    Auch die Cookies sind in einem Globalen Array ($HTTP_COOKIE_VARS) gespeichert.

                    Sollten deine Cookies jetzt die Namen login_username und login_password haben, musst du bei deinem Beispiel von eben einfach folgendes machen:

                    <? if ((isset($HTTP_COOKIE_VARS["login_username"])) && isset($HTTP_COOKIE_VARS["login_password"])) {

                    Dies sollte die dan nauch nicht so viel Arbeit machen, deine ganzen If-Abfragen umzustellen !

                    Kommentar


                    • #11
                      Tipp : Einfach einen Texteditor benutzen und suchen & ersetzen wählen
                      HTTP_SESSION_VARS -> HTTP_COOKIE_VARS

                      Ich habe auch schon tausende sachen umsonst programmiert (session handling per db) die ich eigentlich nicht brauchte..aber du lernst mit jeder LoC.

                      Kommentar

                      Lädt...
                      X