Ankündigung

Einklappen
Keine Ankündigung bisher.

session für login - frage?

Einklappen

Neue Werbung 2019

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

  • session für login - frage?

    Guten morgen,

    ich habe folgende Fragen zu Sessions, die ich für einen Login benutze.

    Auf einem host (z.b. Localhost) laufen mehrere Projekte:
    -Projekt A
    -Projekt B

    A und B sind unabhängig im Inhalt voneinander, haben allerdings ähnlichen Code.
    z.B. Klasse Login, in welcher ich mit POST mir die Formulareingaben hole und dann mit der Datenbank vergleiche um dann eine Sessionvariable bei Übereinstimmung zu erstellen.

    Erstelle ich $_SESSION['user'] für eine website, ist die Session ja für einen user gültig der auf einem host verbunden ist. Frage ich dann auf beiden Projekte if(isset($_SESSION['user'])) ab, bekomme ich auf beiden Projekten TRUE, folglich bin ich auf beiden projekten gleichzeitig eingeloggt, wenn ich mich nur auf einem anmelde.

    Was ja auch irgendwie logisch ist, denn die sessionvariablen heissen gleich und die php-Seiten befinden sich auf dem selben host (in unterschiedlichen ordner).

    Was wäre hier also sinnvoll? die Sessionnamen aufgrund der Projekte zu wählen? Das würde das Problem lösen, ist das aber elegant?

    projekt 1:
    $_SESSION['user_projekt1'];

    projekt 2:
    $_SESSION['user_projekt2'];


    mfg,
    amigo


  • #2
    Setz die Cookie-params anständig, sodass ein Session-Cookie nicht für beide Projekte gilt.
    Zitat von nikosch
    Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

    Kommentar


    • #3
      Hi danke für deine antwort, allerdings benutze ich gezielt keine Cookies, da es aus Sicherheitsgründen nicht erwünscht ist, angemeldet zu bleiben, ebenso ist eine funktion aktiv, die den benutzer nach 20 min inaktivität raushaut.

      Kommentar


      • #4
        Also hängst du die Session-ID hinten an die URL dran?
        Zitat von nikosch
        Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

        Kommentar


        • #5
          wie meinst du das ? nein, ich habe ein funktion anmelden($passwort,$benutzername) in welcher geprüft wird, ob $passwort && $benutzername == dem des datenbankeintrags, wenn ja dann erzeuge eine neue $_SESSION Variable mit dem Name $_SESSION['username'] und dem Inhalt = $benutzername.

          Dann prüfe ich auf anderen seiten mit der funktion CheckLogIn() ob $_SESSION['username'] exisitiert.

          Kommentar


          • #6
            Also nutzt du nun doch Session-Cookies? Ich bin verwirrt.
            http://php.net/manual/de/function.se...kie-params.php
            Zitat von nikosch
            Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

            Kommentar


            • #7
              nein diese funktion benutze ich nicht.

              Hier ein Auszug:


              PHP-Code:
                  public function anmelden($pw$user) {
                      
                      
              $this->password $pw;
                      
              $this->username $user;

                      
              $select "SELECT user_password, user_name FROM webuser";
                      
              $ergebnis pg_query($select) or die('Query is wrong: ' pg_last_error());

                      while (
              $row pg_fetch_object($ergebnis)) {

                          if (
              $row->user_password == $pw && $row->user_name == $user) {
                              
              date_default_timezone_set('Europe/Berlin');
                              
              $time date("Y-m-d  H:i:s");
                              
              $update "UPDATE webuser SET time_loged_in ='" $time "' WHERE user_name='" $user "'";
                              
              pg_query($update) or die('Query is wrong: ' pg_last_error());

                              
                              
              $_SESSION['user'] = $user;
                              
                          }
                      }

                      
                  }

                  public function 
              logedincheck() 
                  {
                      
                      
              session_start();
                      
                      
              $this->kickForInactivity();
                      
                      if (!isset(
              $_SESSION['user'])) 
                      {
                          
              header("Location: login.php");
                      }
                  } 
              Und auf seiten, auf dennen ich dann also nachschauen will, ob ich eingeloggt bin:

              PHP-Code:
              <?php
              include 'classes/Login.php';
              $Intern = new Login();
              $Intern->logedincheck();
              ?>

              Kommentar


              • #8
                Die solltest du aber benutzen, siehe hier:
                Zitat von tkausl Beitrag anzeigen
                Setz die Cookie-params anständig, sodass ein Session-Cookie nicht für beide Projekte gilt.
                Btw: Dass du die Session in der Methode dort startest wird dir irgendwann nochmal um die Ohren fliegen. Starte sie einfach im bootstrap der Seite, also irgendwo in der index ziemlich am Anfang oder in irgend einer Datei die du von überall einbindest.
                Zitat von nikosch
                Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.

                Kommentar


                • #9
                  Hashst du das Passwort schon vorher oder speicherst du das wirklich im Klartext in die Datenbank o.O?

                  Kommentar


                  • #10
                    Ich bin verwirrt ich möchte doch gar keine Cookies benutzen, da ich die Session nur so lange aktiv halten möchte, wie der User den Browser offen hat...
                    Für was dann Cookies ? Könntest du mir anhand meines Codes und meiner "Bedürfnisse" sagen wie ich es anders machen soll ?

                    Kommentar


                    • #11
                      Zitat von TessaKavanagh Beitrag anzeigen
                      Hashst du das Passwort schon vorher oder speicherst du das wirklich im Klartext in die Datenbank o.O?

                      Ich benutzte derzeit noch keine Hashfunktion, die kommt aber noch, möchte MD5 verwenden. Möchte erstmal dieses Problem hier lösen.

                      Kommentar


                      • #12
                        Ich bin verwirrt ich möchte doch gar keine Cookies benutzen
                        Sessions nutzen "intern" aber Cookies, zumindest per default.

                        Zitat von Doku
                        Einem Besucher wird beim Aufruf Ihrer Website eine eindeutige ID, die sogenannte Session-ID, zugeordnet. Diese wird entweder benutzerseitig in einem Cookie abgelegt oder in der URL übermittelt.
                        https://php.net/manual/de/intro.session.php

                        die kommt aber noch, möchte MD5 verwenden
                        Nein, md5() ist "veraltet" (~ technisch überholt), siehe hier, ganz unten auf der Seite steht was du verwenden sollst: http://php.net/manual/de/faq.passwords.php

                        PS: Überdenke deinen PHP-Kenntnisstand, als "Fortgeschritten" bekommst du normal solche antworten gar nicht, weil das zu den Basics gehört.

                        LG
                        Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                        PHP.de Wissenssammlung | Kein Support per PN

                        Kommentar


                        • #13
                          Mein Kenntnisstand ist nicht fortgeschritten, weiß nicht wieso das dort so steht, vermutlich mal vor ewigkeiten etwas angegeben.

                          Nun also sollte ich Cookies benutzen, auch wenn ich nicht möchte, das diese gespeichert werden, sobald der Browser geschlossen wird? Könntet ihr mir anhand meines Codes sagen, wie ich es mit Cookies realisieren könnte, so das ein Cookie für ein Projekt gilt aber die lebenszeit erlischt sobald der Broswer geschlossen wird ? Kurz nocheinmal was gefragt: was passiert wenn ich Cookies verwenden möchte der Browser es clientseitig verbietet?

                          Kommentar


                          • #14
                            Nun also sollte ich Cookies benutzen, auch wenn ich nicht möchte, das diese gespeichert werden, sobald der Browser geschlossen wird?
                            Hat nie jemand behauptet.. bzw. steht alles in der Doku, lies dich doch mal ein:"session.cookie_lifetime": http://php.net/manual/de/session.con...ookie-lifetime

                            Mein Kenntnisstand ist nicht fortgeschritten, weiß nicht wieso das dort so steht, vermutlich mal vor ewigkeiten etwas angegeben.
                            Ist eine Einstellung in deinem Profil. Wollte es nur erwähnen damit du dich nicht wunderst Antworten zu bekommen die du dann nicht/schwer verstehst.
                            Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
                            PHP.de Wissenssammlung | Kein Support per PN

                            Kommentar


                            • #15
                              Also ich habe jetzt mal etwas rumprobiert und bin auf folgende Lösung gestoßen:

                              Projekt A


                              PHP-Code:
                              include 'inc/session_config.php'
                              session_config.php

                              PHP-Code:
                              <?php

                                  session_set_cookie_params
                              (0'/projektA/');
                                  
                              session_start();
                                  
                              var_dump (session_get_cookie_params());
                                  
                              ?>
                              Projekt B

                              PHP-Code:
                              include 'inc/session_config.php'
                              session_config.php

                              PHP-Code:
                              <?php

                                  session_set_cookie_params
                              (0'/projektB/');
                                  
                              session_start();
                                  
                              var_dump (session_get_cookie_params());
                                  
                              ?>
                              Ich binde also bei jeder Seite auf der eine Sessionvariable verwendet wird, die parameter-konfiguration ein. Das hat nun geklappt.

                              (wobei das etwas umständlich ist, denn die Einstellungen sind für den Localhost zum entwickeln, wenn ich die Datein hochlade, ist die Ordnerstruktur anders und ich müsste das dann jeweils immer ändern, da sich ONLINE beide projekte auf unterschiedlichen Servern befinden.)

                              Eine Frage bleibt mir dennoch: Wenn ich bei nur einem Projekt den path="/" setze, bin ich wieder auf allen Projekten eingeloggt. Ist das nicht aus Sicherheitsgründen irgendwie problematisch, dass die Session irgendwie von außen gesetzt werden könnte und der User dann auf allen Websiten des Host eingeloggt wäre? Gäbe es da Möglichkeiten?

                              Kommentar

                              Lädt...
                              X