"return"

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

  • "return"

    wieso bekomm ich die variabel $worked nicht aus der funktion zurück ? Ich kanns, so scheint mir, drehen wie ich will es funktioniert nicht

    Code:
    <?php
    
    function login($username,$password) {
    	
    	//trim
    	$username=trim($username);
    	$password=trim($password);
    	
    	//var
    	$db="forum";
    	$table="user";
    	$password=md5($password);
    	
    	$link=mysql_connect("localhost","root","xxx") or die (mysql_error());
    	$query="select * from $table";
    	
    	$result=mysql_db_query($db,$query,$link) or die (mysql_error());
    	
    	while ($row=mysql_fetch_array($result)) {
    		if (($row[password]==$password) && ($row[username]==$username)) {
    		setcookie(login,true);
    		setcookie(id,$row[ID]);
    		$worked=true;
    		}
    	}
    	return $worked;
    
    }
    
    login($array[username],$array[password])
    
    ?>
    
    <html>
    <head>
    </head>
    <body bgcolor="#444444">
    
    <?php
    
    if ($worked) {
    	print("login succesful");
    } else {
    	print("login/password invalid !");
    }
    
    ?>
    
    </body>
    </html>
    Gruss Dominik


    </nonsense>

  • #2
    weil du $worked innerhalb der while Schleife initialisierst.
    Damit geht $worket bei der schließenden Klammer out of Range, und ist
    nichtmehr fesetzt.

    mach mal vor der while Schleife ein

    $worked=false;
    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

    Kommentar


    • #3
      $worked ist nicht global und Du gibst nur den Wert von $worked zurück, nicht die Variable. So gehts, falls der rest o.k. ist, was ich nicht überprüft habe:

      PHP-Code:
      <?php

      function login($username,$password) {
          
          
      //trim
          
      $username=trim($username);
          
      $password=trim($password);
          
          
      //var
          
      $db="forum";
          
      $table="user";
          
      $password=md5($password);
          
          
      $link=mysql_connect("localhost","root","xxx") or die (mysql_error());
          
      $query="select * from $table";
          
          
      $result=mysql_db_query($db,$query,$link) or die (mysql_error());
          
          while (
      $row=mysql_fetch_array($result)) {
              if ((
      $row[password]==$password) && ($row[username]==$username)) {
              
      setcookie(login,true);
              
      setcookie(id,$row[ID]);
              
      $worked=true;
              }
          }
          return 
      $worked;

      }

      $worked=login($array[username],$array[password]);

      ?>

      <html>
      <head>
      </head>
      <body bgcolor="#444444">

      <?php

      if ($worked) {
          print(
      "login succesful");
      } else {
          print(
      "login/password invalid !");
      }

      ?>

      </body>
      </html>

      Gruß
      Henry

      Kommentar


      • #4
        @pirat
        am rande habe ich mal noch ne bemerkung zu deinem script ...

        was für einen sinn macht es, alle user als select abzufragen und dann in einer schleife die authentifizierung durchzuführen? hat das einen bestimmten grund?

        dir ist auch klar, dass es um so länger dauert, je mehr user sich angemeldet haben?

        mache deine select anweisung besser.
        Code:
        SELECT * FROM ... [b]WHERE username = '....' AND passwort = MD5('...')[/b];
        du kannst auch mal bei den code-schnippseln schauen. da habe ich auch was gepostet, was du fast 1:1 verwenden könntest.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar

        Lädt...
        X