URL mit Sessions ID von Nutzern..

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

  • URL mit Sessions ID von Nutzern..

    Hallöchen Forum,

    habe mal einen bescheidene Frage.
    gibt es bestimmt schon mein Thema ich iwie komme ich nicht weiter mit allem was mir helfen konnte..

    Mein Problem:

    Ich versuche seite Tagen mein Loginscript so zu erweitern dass zum Beispiel wenn man eingeloggt ist dieser link erscheint : http://meinedomain.de/login/myprofil.php?nutzername (hier soll dann der nutzername hin)

    bis jetzt kommt bei mir : http://domain.de/login/myprofil.php?session=

    Code:
          <?php
        error_reporting(E_ALL);
        include("mysql.php");
        include("functions.php");
    
        // Session starten
        session_start();
        include("autologout.php");
    
        if(isset($_POST['submit']) AND $_POST['submit']=='Einloggen'){
            // Falls der Nickname und das Passwort übereinstimmen..
            $sql = "SELECT
                            ID
                    FROM
                            User
                    WHERE
                            Nickname = '".mysql_real_escape_string(trim($_POST['Nickname']))."' AND
                            Passwort = '".md5(trim($_POST['Passwort']))."'
                   ";
            $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
            // wird die ID des Users geholt und der User damit eingeloggt
            $row = mysql_fetch_assoc($result);
            // Prüft, ob wirklich genau ein Datensatz gefunden wurde
            if (mysql_num_rows($result)==1){
                 doLogin($row['ID'], isset($_POST['Autologin']));
                 echo "<p>Willkommen <font style='color:#ff0000;'>".$_SESSION['Nickname']."</font></p>\n";
                 echo "<font style='color:#00ff00;'>Du wurdest erfolgreich eingeloggt.<br></font>\n<br>".
                      " <a href=\"player\" style='color:#069;' target=\"_blank\">Webradio</a> | <a href=\"#\" style='color:#069;'></a> | <a href=\"myprofil.php?session=$session\" target=\"_blank\" style='color:#069;'> Mein Profil </a> | <a href=\"logout.php\" style='color:#069;'>Ausloggen </a><br>";
            }
            else{
                 echo "<b>Du konntest nicht eingeloggt werden.</b><br>\n".
                      "<font style='color:#ff0000;'>Benutzername</font> oder <font style='color:#ff0000;'>Passwort fehlerhaft.</font><br>\n".
                      "Zurück zum <a style='color:#069;' href=\"".$_SERVER['PHP_SELF']."\">Login-Formular</a>\n";
            }
        }
        
        else{
            echo "<form ".
                 " name=\"Login\" ".
                 " action=\"".$_SERVER['PHP_SELF']."\" ".
                 " method=\"post\" ".
                 " accept-charset=\"ISO-8859-1\">\n";
            echo "<input type=\"text\" name=\"Nickname\" maxlength=\"32\" placeholder=\"Benutzername:\" style=\"border-radius:10px;\" autocomplete=\"off\">\n";
            echo "<br>\n";
            echo "<input type=\"password\" name=\"Passwort\" placeholder=\"Passwort:\" style=\"border-radius:10px;\" autocomplete=\"off\">\n";
            echo "<br>\n";
            echo "eingeloggt bleiben :\n";
            echo "<input type=\"checkbox\" name=\"Autologin\" value=\"1\">\n";
            echo "<br>\n";
            echo "<input type=\"submit\" name=\"submit\" value=\"Einloggen\" style=\"border-radius:10px;\">\n";
            echo "<br>\n</td>";
            echo "</form>\n";
        }
    Ich hoffe ihr habt Tipps für mich , ich verzweifel gleich

  • #2
    Die Ausgabe dieses Links ist die absolut einzige Stelle in deinem Script, wo $session verwendet wird – wo soll denn da diese Variable mit einem Wert belegt worden sein …?

    Btw., so viel HTML-Code mit echo auszugeben ist hässlich und umständlich. Schließe lieber den PHP-Bereich, schreibe „normales“ HTML, und öffne den PHP-Bereich nur an den Stellen wieder, wo du ihn bspw. für die dynamische Ausgabe von Werten brauchst … dann brauchst du auch nicht so viele Anführungszeichen escapen. Lies dir mal http://php.net/manual/de/language.ba...ax.phpmode.php durch.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      CODE geändert


      so habe es jetzt übersichtlicher gemacht.

      wie war das denn noch mal mit der Datenbank Abfrage ?

      Code:
      <?php 
      $sql = ("SELECT FROM user WHERE Nickname = '".mysql_real_escape_string(trim($_POST['Nickname']))."');
      
      $result = mysql_query($sql) OR die ("<pre>/n" .$sql. "</pre>/n" . myssql_error());
      
      $row = mysql_fetch_assoc($result);
      
      ?>
      und jetzt komme ich net weiter , weiß jetzt nich wie ich den User in $row bekomme und anschließend als url ausgeben kann (domain.de/login/username)

      Hier jetzt der etwas veränderte Code:

      Code:
            <?php
          error_reporting(E_ALL);
          include("mysql.php");
          include("functions.php");
      
          // Session starten
          session_start();
          include("autologout.php");
      
          if(isset($_POST['submit']) AND $_POST['submit']=='Einloggen'){
              // Falls der Nickname und das Passwort übereinstimmen..
              $sql = "SELECT
                              ID
                      FROM
                              User
                      WHERE
                              Nickname = '".mysql_real_escape_string(trim($_POST['Nickname']))."' AND
                              Passwort = '".md5(trim($_POST['Passwort']))."'
                     ";
              $result = mysql_query($sql) OR die("<pre>\n".$sql."</pre>\n".mysql_error());
              // wird die ID des Users geholt und der User damit eingeloggt
              $row = mysql_fetch_assoc($result);
              // Prüft, ob wirklich genau ein Datensatz gefunden wurde
              if (mysql_num_rows($result)==1){
                   doLogin($row['ID'], isset($_POST['Autologin']));
                   echo "<p>Willkommen <font style='color:#ff0000;'>".$_SESSION['Nickname']."</font></p>\n";
                   echo "<font style='color:#00ff00;'>Du wurdest erfolgreich eingeloggt.<br></font>\n<br>".
                        " <a href=\"player\" style='color:#069;' target=\"_blank\">Webradio</a> | <a href=\"#\" style='color:#069;'></a> | <a href=\"myprofil.php?session=$session\" target=\"_blank\" style='color:#069;'> Mein Profil </a> | <a href=\"logout.php\" style='color:#069;'>Ausloggen </a><br>";
              }
              else{
                   echo "<b>Du konntest nicht eingeloggt werden.</b><br>\n".
                        "<font style='color:#ff0000;'>Benutzername</font> oder <font style='color:#ff0000;'>Passwort fehlerhaft.</font><br>\n".
                        "Zurück zum <a style='color:#069;' href=\"".$_SERVER['PHP_SELF']."\">Login-Formular</a>\n";
              }
          }
          
          else{
              
              
              echo "<form ".
                   " name=\"Login\" ".
                   " action=\"".$_SERVER['PHP_SELF']."\" ".
                   " method=\"post\" ".
                   " accept-charset=\"ISO-8859-1\">\n";
                   
                   ?>
              <input type="text" name="Nickname" maxlength="32" placeholder="Benutzername:" style="border-radius:10px;" autocomplete="off"><br>
              <input type="password" name="Passwort" placeholder="Passwort:" style="border-radius:10px;" autocomplete="off"><br>
              eingeloggt bleiben :
              <input type="checkbox" name="Autologin" value="1"><br>
              <input type="submit" name="submit" value="Einloggen" style="border-radius:10px;"><br>
              <?php echo "</form>";
          }
      $session = session_id();
      ?>
      ;(

      Noch ein Hinweis dieses Script habe ich net selbst gemacht da ich dazu keine Zeit habe , habe allerdings kleine Änderungen vorgenommen.

      Kommentar


      • #4
        Mit der gezeigten Query bekommst du den Usernamen gar nicht, weil du ihn überhaupt nicht selektiert hast …

        Wenn du an fertigen Scripten herum basteln willst, wirst du trotzdem ein bisschen Grundlagenwissen brauchen, ohne das wird es nichts.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Naja bin eigentlich lieber jemand der an CSS Stylesheets bastelt.

          PHP Code nur wenn es unbedingt sein muss was in diesem Fall der Fall ist

          Aber mit Jquery oder Javascript bin ich nicht so der Freund davon.
          Obwohl es mit DW CC 14 etwas vereinfacht wird.

          Meistens bekomme ich bei meinem Scripten die ich erstelle nur rote Makierungen die eigentlich nicht dort sein sollen wo die sind sind im regelfall nur syntax fehler und auch meistens bei if / else abfragen.

          Vergess ab und zu die bescheidenen Klammern und dies mag Dreamweaver überhupt nicht.

          Zurück zum eigentlichen Problem.

          bei php-einfach.de hab ich was gelesen mit Get Variablen ($GET = ["session"] ) dies ist nämlich das was noch undefiniert ist weil ich da net weiter komme, falls das überhaupt sinn macht Get Variablen zu erstellen..

          Sinvoll oder sinnlos ?

          ($session = session_id )
          Sorry dass ich gerade etwas vom Thema abgleitet bin

          Kommentar


          • #6
            Ob das so schlau ist an Software rumzubasteln, die man nicht versteht? Vor allem wenn du ohne Ahnung an einem Login rumbastelst, kannst du das mit dem Login eigentlich gleich sein lassen und alles jedem zugänglich machen. Denn die Wahrscheinlichkeit, dass du Sicherheitslücken einbaust, ist ziemlich hoch.

            Kommentar


            • #7
              Wer sagt den dass ich keine Ahnung davon habe, ich weiß schon wie das Loginscript funktioniert schließlich habe ich die ganzen echo´s der Usernamen mit eingebaut das war nicht standard mäßig drin (<?php echo $_SESSION['Nickname']; ?>) und in der regestrierung habe ich einige sachen erweitert und es funktioniert einwandfrei ^^, da kommt zwar noch mehr rein aber fürs erste reicht es ja , die neuen felder können dann meine User selbst erweitern bzw selbst entscheiden welche daten sie angeben wollen.

              In der Regestrierung war nur das normale Benutzername und Passwort wählen...

              Jetzt haben die User die Variante folgende Sachen anzugeben...

              --> Email (Pflicht)
              --> AIM
              -->Wohnort
              --> Homepage
              --> Email anzeigen oder verstecken
              --> MSN
              --> YIM
              --> usw.

              Ich mag es auch nicht alle Daten von den Usern zu erzwingen bin ja nicht Facebook, deshalb können die sich es ja auch aussuchen was se angeben wollen oder nicht.

              Hauptsache die wichtigsten Daten habe ich ... Passwort , Email und Nutzername der Rest ist freiwillig..

              Muss dann nur noch gucken was mit der Passwort-vergessen.php nicht stimmt da macht es nicht das was es soll. Bekomme ich aber alleine hin

              Das Wissen wie man den nutzer als Url wiedergibt muss ich ehrlich zugeben kenne ich net bzw. behersche ich nicht.

              Ich kann mich noch daran erinnern dass ich es mal geschafft hatte aber ich weiß nicht mehr wie war vor ca einem Jahr. Dann hatte ich nämlich domain.de/djsven und das so hinzubekommen ist jetzt mein Ziel und habe auch da schon ne Idee

              Kommentar


              • #8
                Zitat von ssmiletkzi Beitrag anzeigen
                Wer sagt den dass ich keine Ahnung davon habe, ich weiß schon wie das Loginscript funktioniert schließlich habe ich die ganzen echo´s der Usernamen mit eingebaut das war nicht standard mäßig drin (<?php echo $_SESSION['Nickname']; ?>)
                Wunderbar, und hast damit gleich deine erste Sicherheitslücke gebaut.

                Werte, die in HTML-Code ausgegeben werden, müssen immer mit htmlspecialchars() maskiert werden.

                Zitat von ssmiletkzi Beitrag anzeigen
                und in der regestrierung habe ich einige sachen erweitert und es funktioniert einwandfrei ^^
                Es ist häufig so, dass es für denjenigen, der die Fehler in Anwendungen macht, die Anwendung funktioniert. Sonst würde es keine fehlerhaften Anwendungen geben, wenns der Programmierer selber erkannt hätte

                Kommentar


                • #9
                  Stimmt wo du recht hast haste halt recht. jetzt weiß ich was ich eigentlich machen wollte danke für den Tipp

                  melde mich wieder wenn ich ein bissel weiter bin...

                  in meinen Login und Regstrierung habe ich die htmlspecialchars() verwendet ^^


                  .....

                  Ich kanns doch noch ^^ funktioniert username wird als Link ausgeben einfach : <a href=\"myprofil.php?id=".$row['Nickname']."\">".$row['Nickname']."</a>\n
                  Zuletzt geändert von ssmiletkzi; 15.02.2015, 21:11.

                  Kommentar


                  • #10
                    Und hier hast du wieder zweimal htmlspecialchars() vergessen und einmal urlencode().

                    Kommentar

                    Lädt...
                    X