User abfrage

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

  • User abfrage

    Hallo,

    ich möchte das die Nutzer sich mit dem Benutzernamen sowie der Email Adresse einloggen können, das funktioniert auch wunderbar mit
    PHP-Code:
     $sql   "SELECT
                            `user`,`password`,`aktiviert`,`email`
                      FROM
                            `login`
                      WHERE
                            LOWER(`user`)     = '" 
    .mysql_real_escape_string($username). "' OR
                            `email`           = '" 
    .mysql_real_escape_string($username). "'
                            AND
                            `password`        = '" 
    .mysql_real_escape_string($password). "' AND
                            `aktiviert`       = 1"

    Problem ist jetzt nur da ich in dem fall email und benutzername aus der selben variable nehme, das mein $_SESSION['user'] = $username; mir auf allen seiten die Email Adresse anzeigt wenn sich mit der einloggt, wenn ich die Nutzer anspreche.

    Meine frage ist nun wie kann ich das lösen, ich habe schon den ganzen tag versucht den Benutzernamen aus der Datenbank zu ziehen und den anzeigen zu lassen aber irgendwie bekomme ich das nicht hin, das der Benutzer auftaucht der sich eingeloggt hat. Hoffe das war soweit verständlich.
    Ich bedanke mich voraus

    Hab die SuFu benutzt und ganz viel gegooglet auch Sachen gefunden aber die waren von 2005 usw. php.net war ich auch und habe probiert aber nichts ging.

  • #2
    Dann musst du das entsprechend aufteilen oder dich für einen entscheiden.
    Du kannst ja mit email überprüfen aber dennoch der Session den Usernamen zuweisen oder überschreiben.

    $_SESSION['userName'] = $username;
    $_SESSION['email'] = $email;

    Zeig mal deinen kompletten Code

    Kommentar


    • #3
      Ja aber vorher muss ich ja den Benutzernamen aus der Datenbank holen, ich habe das ja nun so das aus dem input mit dem der Benutzer sich einloggt (benutzernamen/email) die Variable gemacht. Das in die Session gebracht um die Nutzer ansprechen zu können mit z.b. Hallo Felix, wenn er sich nun aber mit der email anmeldet würde da Hallo felix.mustermann@gmx.de stehen. Also dachte ich kann ich ja den Nutzernamen aus der Datenbank holen in eine variable packen und den ausgeben und das bekomme ich nicht ganz hin.

      Hier mal der code, nicht meckern das ist nur ein übungsprojekt von mir

      PHP-Code:
      <?php
      session_start
      ();                                                      

      $_SESSION['login'] = FALSE;                                         
      $username          $_POST['username'];
      $password          $_POST['password'];
      $error             '';
      $_SESSION['user']  = $username;

      function 
      db_connect()                                                 
      {
          
      $dbhost      ='localhost';
          
      $dbuser      ='';
          
      $dbpassword  ='';
          
      $dbname      ='testlogin';


          
      $conid mysql_connect($dbhost$dbuser$dbpassword)
             or die (
      'Verbindungsfehler!');

          if (
      is_resource($conid))
          {
              
      mysql_select_db($dbname$conid)
                or die (
      'Datenbankfehler');
          }
          return 
      $conid;
      }

      if (isset(
      $_COOKIE['userlogin']))                           
      {
          
      $conid db_connect();
          
      $sql "SELECT
                        `id`
                  FROM
                        `login`
                  WHERE
                        `cookie_hash` = '" 
      .mysql_real_escape_string ($_COOKIE['userlogin'])
                        .
      "' AND `aktiviert` = 1";

          
      $result mysql_query($sql$conid);

          if (
      mysql_num_rows ($result) == 1)
          {
              
      $_SESSION['login'] = TRUE;
              
      header('location: ../index.php');
              exit;
          }
      }

      if (isset(
      $_POST['login']))
         {
             if (
      get_magic_quotes_gpc())
              {
                  
      $_POST array_map('stripslashes',$_POST);
              }

              
      $username strtolower(trim($_POST['username']));
              
      $password md5(trim($_POST['password']));

              
      $conid db_connect();
              
      $sql   "SELECT
                              `user`,`password`,`aktiviert`
                        FROM
                              `login`
                        WHERE
                              LOWER(`user`)     = '" 
      .mysql_real_escape_string($username). "' OR     //Betroffene Stelle
                              `email`           = '" 
      .mysql_real_escape_string($username). "'
                              AND
                              `password`        = '" 
      .mysql_real_escape_string($password). "' AND
                              `aktiviert`       = 1"
      ;




             
      $result mysql_query($sql ,$conid);

             if (
      mysql_num_rows($result) == 1)
             {
                 
      $usercookie mysql_fetch_assoc($result);
                 
      $_SESSION['login'] = TRUE;
                 
      setcookie ('userlogin'$usercookie['cookie_hash'], time() +600);
                 
      header('location: ../index.php');
                 exit;
             }
             else
             {
                 
      $error '<h3>Die Anmeldung war fehlerhaft</h3>';
             }
          }


      print_r(mysql_error())
      ?>
      Zuletzt geändert von diebo; 26.03.2013, 10:00.

      Kommentar


      • #4
        hmm vllt versteht ihr nicht so ganz was ich meine also nochmal

        ich möchte das die Leute sich mit ihrem Benutzernamen sowie mit der Email Adresse anmelden können, so wie ich das nun habe klappt es auch. Aber da das in meinen Fall nach dem eingeben und abschicken in eine Variable kommt und ich die Variable in die Session speicher um den Benutzer direkt ansprechen zu können z.b. so Hallo Diebo, entspricht das nicht ganz mein Vorstellung weil wenn man sich mit der Email Adresse einloggt würde da stehen Hallo diebo@muster.de
        und dewegen wollte ich denn den Benutzernamen aus der Datenbank ziehen. Nur wie bekomme ich genau seinen Namen und nicht irgendeinen?

        Kommentar


        • #5
          PHP-Code:
          $link mysql_connect(bla,blubb..);
          mysql_select_db(tri_tra_trullala);

          $query  "SELECT `user`,`password`,`aktiviert`,`email`
                          FROM `login`
                          WHERE
                          (LOWER(`user`)     = '" 
          mysql_real_escape_string ($username) . "'
                              OR `email`     = '" 
          mysql_real_escape_string ($username) . "')
                          AND
                          `password`         = '" 
          mysql_real_escape_string ($password) . "'
                          AND `aktiviert`       = 1
                          LIMIT 0,1;"
          ;
          $result mysql_query ($query,$link);
          if (
          is_resource ($result))
          {
              
          $row              mysql_fetch_row ($result);
              
          $_SESSION['user'] = $row[0];
              
          mysql_free_result ($result);
          } else
          {
              
          //kein db treffer

          ich glaube, sollte ich dein problem richtig verstanden haben, mit diesem lösungsansatz kommst du zu deinem gewünschten ergebnis.

          Kommentar


          • #6
            Vielen Dank das ist genau das was ich gesucht habe.

            Kommentar


            • #7
              Zitat von diebo Beitrag anzeigen
              Vielen Dank das ist genau das was ich gesucht habe.

              Das mag sein!
              Aber willst du das wirklich?

              Ich halte es für falsch den Usernamen und seine Email in Session zu halten.
              Wie will man ihn umtaufen?
              Seine Email ändern?
              Alle unangenehmen Seiteneffekte, der doppelten Datenhaltung, drohen...

              Es wäre völlig ausreichend, die UserID in Session zu halten.
              Wir werden alle sterben

              Kommentar


              • #8
                Es wird doch jetzt "nur" sein Nutzername in Session gehalten, ich habe jetzt nach dem Login sein Namen und die Bestätigung das er eingeloggt ist in der Session. Ich nehme ja über input sein Nutzername oder seine Email auf

                PHP-Code:
                WHERE
                                        LOWER
                (`user`)     = '" .mysql_real_escape_string($username). "' OR
                                        `
                email`           = '" .mysql_real_escape_string($username). "' 
                hiermit ermögliche ich das er sich mit beiden einloggen kann und dann hol ich mir erst sein namen aus der Datenbank und lagere ihn in der Session. Also habe ich nur sein Namen oder verkenne ich da was?

                Kommentar

                Lädt...
                X