[Funktion] problem mit funktion

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [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 */

    Comment


    • #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...

      Comment


      • #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 */

        Comment

        Working...
        X