[Funktion] problem mit funktion

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

  • [Funktion] problem mit funktion

    PHP-Code:
    <?php    
      
    function login_right($username$pass)    {        
        
    $sql "SELECT                    
                      COUNT(*) as Anzahl                
                    FROM                    
                      users                
                    WHERE                    
                      username = '"
    .$username."' AND                    
                      passwort = MD5('"
    .$pass."');";        
        
    $result mysql_query($sql) OR die(mysql_error());        
        
    $row mysql_fetch_assoc($result);        
        
    mysql_free_result($result);        
        return 
    $row['Anzahl'];    
      }
      
    ?>
    Diese function benutze ich bei einem Login-script, um zu überprüfen ob die eingegebenen Werte im Login-Formular in der Datenbank vorhanden sind!
    Sind sie vorhanden wird true zurückgegeben!

    PHP-Code:
    if(isset($_POST['username'], $_POST['passwort']) AND
                   
    login_right(addslashes($_POST['username']),
                               
    addslashes($_POST['passwort']))) {
                    
    $_SESSION['username'] = $_POST['username'];

                   
    /* Hier kämen dann weitere Abfragen */ 
    Jetzt zu meiner Frage:
    wie muss ich obige function login_righth ändern bzw. anpassen damit ich neben
    PHP-Code:
    $row['Anzahl'
    auch noch die restlichen Werte der MySQL - Tabelle users übergeben kann? Also nicht nur Wert username und passwort sondern z.B Wert userid...

    der code müsste irgentwie so weitergehen:
    PHP-Code:
    function login_right($username$passwort$_POST['userid']) {
        return 
    $row['Anzahl'];

        
    /* So müsste es glaube ich weitergehen */
    ... $row mysql_fetch_array($result);
        
    $_POST['userid'] = $row['userid'];
    ...

    Falls es so ungefähr stimmt, wie müsste ich dann $_POST['userid'] übergeben?

    So hats jedenfalls nicht funktioniert:
    PHP-Code:
    if(isset($_POST['username'], $_POST['passwort']) AND
                   
    login_right(addslashes($_POST['username']),
                               
    addslashes($_POST['passwort']),
                               
    /* So gehts net :( */
                               
    addslashes($_POST['userid']))) {
                    
    $_SESSION['userid']       = $_POST['userid'];
                    
    $_SESSION['username'] = $_POST['username']; 
    Warscheinlich ist mein Problem ganz simpel! Hab irgenteinen Fehler bei der Übergabe der Werte gemacht aber da ich diesen Wert userid unbedingt auslesen und übergeben muss, hoffe ich erbarmt sich jemand!

    Danke im vorraus!
    Geht net gibts net...

  • #2
    Zur ersten Frage:
    aus "SELECT COUNT(*) as Anzahl FROM" wird
    PHP-Code:
    SELECT   COUNT(*) as Anzahl , * FROM 
    oder
    PHP-Code:
    SELECT COUNT(*) as Anzahlfeldname1feldname2 .... feldnameN 
    wenn Du nur bestimmte Felder brauchst

    mysql_fetch_array ist richtig

    Die Übergabe von $_POST['userid'] an login_right() ist an sich richtig, nur mußt du den hmtl-image-tag auch escapen. Übersichtlicher wäre aber vielleicht die Übergabe eines numerischen Parameters($img_param), mit dem Du dann per switch($img_param) in der Funktion unterschiedliche Grafiken ausgeben lassen kannst.
    /* Meine Lieblingsantwort: Read The Fucking Manual */

    Kommentar


    • #3
      Also habs jetzt mal so gemacht:

      PHP-Code:
      function login_right($user_name$passwort){
        
      $sql "SELECT                    
                                  COUNT(*) as Anzahl, userid                
                              FROM                    
                                  ob_user                
                              WHERE                    
                                  username = '"
      .$user_name."' AND                    
                                  passwort = MD5('"
      .$passwort."');";        
              
      $result mysql_query($sql) OR die(mysql_error());        
              
      $row mysql_fetch_assoc($result);        
              
      mysql_free_result($result);                
              return 
      $row['Anzahl'];
              
      $row mysql_fetch_array($result);
              
      $_POST['userid'] = $row['userid'];
              return 
      $_POST['userid'];
               
      }

      if(isset(
      $_POST['username'], $_POST['passwort']) AND
                     
      login_right(addslashes($_POST['username']),
                                                           
      addslashes($_POST['passwort']),
                                                           
      addslashes($_POST['userid']))) {
                                      
      $_SESSION['userid']   = $_POST['userid'];
                          } 
      bekomme folgende Fehlermeldungen:

      Notice: Undefined index: userid in ...

      Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause

      hab auch schon noch folgendes versucht:

      statt
      PHP-Code:
      function login_right($user_name$passwort){
      ...

      dieses
      PHP-Code:
      function login_right($user_name$passwort/*Geht net, kommt Fehler*/$_POST['userid']){
      ...

      sorry echt ich peils net!
      Hoffe wirklich mir kann einer helfen...
      Geht net gibts net...

      Kommentar


      • #4
        Erstens: Zu einer Fehlermeldung sollte schon die entsprechende Zeile aus dem Script mit angegeben werden.

        Dann ist es ja wohl so, daß in der Funtion login_right() die Variable userid erst erzeugt wird: $_POST['userid'] = $row['userid'];
        Du brauchst also die Funktionsparamter nicht erweitern, "function login_right($user_name, $passwort)" ist richtig. Vielmehr kannst Du den Code abkürzen.
        Beende die Funtion mit: return $row['userid'];

        Aufruf der Funktion ist ja dann ungefähr so:
        $valid_user_id = login_right("schmidt","meinpasswort");


        Diese beiden Fehler hängen zusammen:
        "Notice: Undefined index: userid in ...
        Mixing of GROUP columns (MIN(),MAX(),COUNT()...) with no GROUP columns is illegal if there is no GROUP BY clause "
        Die SQL-Abfrage wird nicht ausgeführt, darum ist auch userid nicht gesetzt.
        Lies dazu im Manual nach.
        /* Meine Lieblingsantwort: Read The Fucking Manual */

        Kommentar

        Lädt...
        X