login mit aktivation verification problem

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

  • login mit aktivation verification problem

    Hallo liebe User.
    ich habe mir einem Login zusammen gebastelt was auch super funktioniert, allerdings komme ich bei folgendes Problem nicht weiter.

    Das Login Script soll in der db suchen ob der User aktiviert ist.
    Ist das der Fall + Login Name und Passwort stimme, gehst weiter.

    $qry="SELECT * FROM members WHERE login='$login' AND passwd='$password' AND status='activated'";
    so kann ich mich einloggen, solange der user aktiviert ist AND status='activated'.

    Nun wen der User aber nicht aktiviert ist, kommt der selbe Meldung wie wen das Pw falsch ist.
    header("location: login-failed.php");
    Stadt dessen soll dann da auch stehen der Userxxxx ist nicht aktiviert.

    Darum würde ich gerne wissen wie genau ich
    status='activated' für aktiviert Bsp..
    status='verify' für offenestehende Aktivierunggen, definieren soll das bei status='verify' die fehlermeldung kommt
    'Sie müssen ihren account noch aktivieren'

    Ich hab da was mit if anfrage versucht, aber jergendwie ging alles nicht.

    So schaut das Login Code aus:
    PHP-Code:
    //Create query
        
    $qry="SELECT * FROM members WHERE login='$login' AND passwd='$password'";
        
    $result=mysql_query($qry);
        
    //Check whether the query was successful or not
        
        
            
        
    if(status=="activated") {
            
    //Login Successful
                
    session_regenerate_id();
                
    $member mysql_fetch_assoc($result);
                
    $_SESSION['SESS_MEMBER_ID'] = $member['member_id'];
                
    session_write_close();
            
    header("location: member-index.php");
            exit();

        }else 
        
        if (
    status=="verify"){    
            die (
    "You account ist not activated, please check your email.");
            exit();
        }else{
            die(
    "Query failed");
        }    
    ?> 
    nun solte ich eigentlich garnicht so daneben liegen.
    momentan leitet der code zur : die("Query failed");
    wie ender ich das nun das if($status=="activated") {
    status ist die tabelle, und activated oder verify der eintrag hierzu ein kleines bild von phpmyadmin.


    Leider weiß ich da nicht wie ich die tabelle abfragen kann
    sitze schon 3 tagen daran bitte um hilfe

    Lg und schon einmal vielen dank

  • #2
    Dein Problem ist offenbar, dass du nicht weißt, wie du einen aus der Datenbank ausgelesenen Datensatz in PHP auswertest und auf die Inhalte einzelner Spalten zugreifst.
    Das ist Grundlagenwissen, also arbeite bitte ein entsprechendes Tutorial durch.
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Zitat von wahsaga Beitrag anzeigen
      Dein Problem ist offenbar, dass du nicht weißt, wie du einen aus der Datenbank ausgelesenen Datensatz in PHP auswertest und auf die Inhalte einzelner Spalten zugreifst.
      Das ist Grundlagenwissen, also arbeite bitte ein entsprechendes Tutorial durch.

      ne das ist eben nicht das problem, aber ich bekomme die nicht mit den if anfrage, ich hab schon soviel probiert das ich schon garnicht mehr weiß was ich probiert hab und was nciht...

      wen ich es jetzt z.b so mache??!!

      PHP-Code:
      //Create query
          
      $qry="SELECT * FROM members WHERE login='$login' AND passwd='$password'";
          
      $result=mysql_query($qry);
          while (
      $zeile mysql_fetch_array$resultMYSQL_ASSOC))

              
      //Check whether the query was successful or not
          
          
              
          
      if($zeile['status']== "activated") {
              
      //Login Successful
                  
      session_regenerate_id();
                  
      $member mysql_fetch_assoc($result);
                  
      $_SESSION['SESS_MEMBER_ID'] = $member['member_id'];
                  
      session_write_close();
              
      header("location: member-index.php");
              exit();

          }else 
          
          if(
      $zeile['status']== "verify"){    
              die (
      "You account ist not activated, please check your email.");
              exit();
          }else{
              die(
      "Query failed");
          }
          
      ?> 
      leitet er mich zwahr nicht mehr zu die("Query failed");
      Aber da da jetzt dann was mit der session_regenerate_id();
      nicht stimmt, werd ich zur seite acess denied geleitet.

      Access Denied!
      You do not have access to this resource.
      Zuletzt geändert von seby1302; 22.04.2011, 22:11.

      Kommentar


      • #4
        Zitat von seby1302 Beitrag anzeigen
        Aber da da jetzt dann was mit der session_regenerate_id();
        nicht stimmt, werd ich zur seite acess denied geleitet.
        Woraus schließt du, dass damit was nicht stimmt, und was soll „nicht stimmt“ überhaupt bedeuten?

        Bitte liefere deutliche und nachvollziehbare Problembeschreibungen.
        I don't believe in rebirth. Actually, I never did in my whole lives.

        Kommentar


        • #5
          Das heißt.

          Ist der Eintrag in der bd 'status' 'activated' leitet er mich zur header("location: member-index.php");

          ABER da irgendwas jetzt nicht klappt mit der session generieren!
          Haut er eine später rein wegen kein Berechtigung.

          wen ich jetzt in der db den Eintrag activated ändere zu verify, läuft es auch richtig und es kommt die Meldung..
          die ("You account ist not activated, please check your email.");

          aber ich verstehe da nicht was ich da falsch mache das er mir kein oder falsche session schreibt..

          Kommentar


          • #6
            Gerade erst gestartete Sessions (oder regenerierte, in diesem Fall) in Kombination mit einem Location-Header führen immer mal wieder zu Problemen, weil das Setzen des Session-Cookies sich mit der Weiterleitungen nicht verträgt.

            Mein Vorschlag wäre, dass du entweder in der Weiterleitungs-Adresse die SID explizit per GET mitgibst, oder auf die Weiterleitung verzichtest, und dein Script so strukturierst, dass es ohne diese auskommt. (In der Gegend herum zu leiten ist sowieso oft ein Indiz dafür, dass die Strukturierung des Scriptes eher ungünstig ist.)
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Naja ich woltes aber auch so haben

              So jetzt leuft alles perfeckt.
              habe noch ein weiteres
              $db_erg = mysql_query( $qry );
              hinzugefügt weil das erste
              $result= mysql_query( $qry );
              ist für der session zuständig gewesen.
              und dan noch den code angepast.
              hier komplet fals jemand sowas brauchen sollte.

              PHP-Code:
              <?php
                  
              //Start session
                  
              session_start();
                  
                  
              //Include database connection details
                  
              require_once('config.php');
                  
                  
              //Array to store validation errors
                  
              $errmsg_arr = array();
                  
                  
              //Validation error flag
                  
              $errflag false;
                  
                  
              //Connect to mysql server
                  
              $link mysql_connect(DB_HOSTDB_USERDB_PASSWORD);
                  if(!
              $link) {
                      die(
              'Failed to connect to server: ' mysql_error());
                  }
                  
                  
              //Select database
                  
              $db mysql_select_db(DB_DATABASE);
                  if(!
              $db) {
                      die(
              "Unable to select database");
                  }
                  
                  
              //Function to sanitize values received from the form. Prevents SQL injection
                  
              function clean($str) {
                      
              $str = @trim($str);
                      if(
              get_magic_quotes_gpc()) {
                          
              $str stripslashes($str);
                      }
                      return 
              mysql_real_escape_string($str);
                  }
                  
                  
              //Sanitize the POST values
                  
              $login clean($_POST['login']);
                  
              $password clean($_POST['password']);
                  
                  
              //Input Validations
                  
              if($login == '') {
                      
              $errmsg_arr[] = 'Login ID missing';
                      
              $errflag true;
                  }
                  if(
              $password == '') {
                      
              $errmsg_arr[] = 'Password missing';
                      
              $errflag true;
                  }
                  
                  
              //If there are input validations, redirect back to the login form
                  
              if($errflag) {
                      
              $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
                      
              session_write_close();
                      
              header("location: login-form.php");
                      exit();
                  }
                  
                  
              //Create query
                  
              $qry="SELECT * FROM members WHERE login='$login' AND passwd='$password'";
                  
              $result=mysql_query($qry);
                  
              $db_erg mysql_query$qry );
              if ( ! 
              $db_erg )
              {
                die(
              'erg Query failed: ' mysql_error());
              }


                  while (
              $zeile mysql_fetch_array($db_ergMYSQL_ASSOC))


              //Check whether the query was successful or not
                 
              if($zeile['status']== "activated") {
                      
              //Login Successful
                          
              session_regenerate_id();
                          
              $member mysql_fetch_assoc($result);
                          
              $_SESSION['SESS_MEMBER_ID'] = $member['member_id'];
                          
              $_SESSION['SESS_login'] = $member['login'];
                          
              $_SESSION['SESS_FIRST_NAME'] = $member['firstname'];
                          
              $_SESSION['SESS_LAST_NAME'] = $member['lastname'];
                          
              $_SESSION['SESS_Post_code'] = $member['plz'];
                          
              $_SESSION['SESS_Location'] = $member['ort'];
                          
              $_SESSION['SESS_Country'] = $member['country'];
                          
              $_SESSION['SESS_Language'] = $member['Language'];
                          
              $_SESSION['SESS_Email'] = $member['userMail'];
                          
              $_SESSION['SESS_************'] = $member['************'];
                          
              $_SESSION['SESS_regData'] = $member['regData'];
                          
              $_SESSION['SESS_regtime'] = $member['regtime'];
                          
              $_SESSION['SESS_regIp'] = $member['regIp'];
                          
              session_write_close();
                          
              header("location: member-index.php");
                      exit();

                  }else 
                  
                  if(
              $zeile['status']== "verify"){    
                      die (
              "You account ist not activated, please check your email.");
                      exit();
                  }else{
                      die(
              "Query failed");
                  }
              ?>

              Kommentar


              • #8
                Zitat von seby1302 Beitrag anzeigen
                habe noch ein weiteres
                $db_erg = mysql_query( $qry );
                hinzugefügt weil das erste
                $result= mysql_query( $qry );
                ist für der session zuständig gewesen.
                Das ist kompletter Humbug.
                Du scheinst nicht wirklich eine Ahnung zu haben, was du da eigentlich machst.
                I don't believe in rebirth. Actually, I never did in my whole lives.

                Kommentar


                • #9
                  Außerdem ist das noch so ein Login-System, wo man sich ohne ein Passwort zu wissen in einen beliebigen User-Account reinhacken kann. Bitte lies dir was zum Thema SQL Injections durch und im PHP Handbuch den Abschnitt zu mysql_real_escape_string.

                  Gruß,

                  Amica
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Kommentar


                  • #10
                    login mit aktivation verification problem - SELFPHP Forum
                    Wir werden alle sterben

                    Kommentar


                    • #11
                      Zitat von wahsaga Beitrag anzeigen
                      Das ist kompletter Humbug.
                      Du scheinst nicht wirklich eine Ahnung zu haben, was du da eigentlich machst.
                      Wieso soll das den ein unbug sein, hab es mit firedebuger getestet da ist nix mit buggs.

                      Außerdem ist das noch so ein Login-System, wo man sich ohne ein Passwort zu wissen in einen beliebigen User-Account reinhacken kann. Bitte lies dir was zum Thema SQL Injections durch und im PHP Handbuch den Abschnitt zu mysql_real_escape_string.
                      ach ja dan zeig du mir wie du dich da rein hackst.
                      du must schon eine password und benutzername wissen und die tabelle aufrufen zu können.

                      deshalb hab ich das
                      [COLOR=#000000][COLOR=#CC0000]SELECT * FROM members WHERE login='$login' AND passwd='$password'

                      und nicht
                      [/COLOR][/COLOR][COLOR=#000000][COLOR=#CC0000]SELECT * FROM members WHERE login='$login'[/COLOR][/COLOR]
                      aber wie können drüber disqutieren bis zum grau werden...
                      *CLOSED*

                      Kommentar


                      • #12
                        Zitat von seby1302 Beitrag anzeigen
                        ach ja dan zeig du mir wie du dich da rein hackst
                        Kein Ding, gib mir die Adresse der Seite und schon geht's los.

                        Zum Thema "Humbug". Dieses Wort bezeichnet keinen speziellen Bug sondern ist ein Ausdruck, der in etwa "Unsinn", "Käse", "Unfug" bedeutet.
                        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                        Super, danke!
                        [/COLOR]

                        Kommentar

                        Lädt...
                        X