2010-12-02 7 views
0

Ich habe index.php und function.php.PHP: Array zurückgeben?

In index.php i aufgenommen haben function.php

In index.php im login("Bla","123"); Aufruf, die in function.php

In index.php existiert Ich habe eine if (!empty($err)){ foreach(..) echo $err ... }

login() sollte ein Array namens $ err, (mit return $ err;) wenn es irgendwelche Fehler gibt, und dann sollte es es in der foreach in index.php zurückgeben.

Aber irgendwie kann ich es nicht zum laufen bringen . Kannst du es nicht so machen? Ich bekomme nichts zurück.

Ich habe im Login():

$err = array(); 
    $err[] = "Something went wrong"; 
     return $err; 
     exit(); 

Was ist hier falsch? Oder irgendeine andere Lösung, um dies zu tun?

+2

Warum 'exit()' 'nach return'? Kannst du uns die Login-Funktion zeigen? – Skilldrick

+0

Wie sieht der Code in index.php aus, der $ err einstellt? –

+0

PS es würde wirklich helfen, Code zur Verfügung zu stellen, den wir tatsächlich verwenden können, um das Problem zu replizieren. – Hamish

Antwort

3

return return liefert den Wert von $err zurück. Die Variable $err ist nicht global verfügbar. mit

Versuchen:

$err = login('Bla', '123'); 
+0

Schön, vergaß das, danke – Karem

1

das ersetzen exit() mit nurreturn;

function login() 
{ 
    //Blah 
    exit(); 
} 
login(); 

echo 'You shall never see this.'; 

das ist, was Sie tun sollten:

$errors = array(); 
function login($user,$pass) 
{ 
    global $errors; 
    if(empty($user) || empty($pass)) 
    { 
     $errors[] = "username/Password invalid"; 
    } 

    //More Checks 

    //at the end. 
    if(count($errors) == 0) /*no errors*/ 
    { 
     return true; 
    } 
} 

und dann in Ihrem index.php

if(!login("user","pass")) 
{ 
    foreach($errors as $error) 
    { 
     echo $error . "<br />"; 
    } 
    exit(); 
} 

//Successful login 
+0

Ich habe eine ähnliche Antwort zuvor erstellt, aber dann erkannte ich, dass 'exit()' nie ausgeführt wird, weil Karem das 'return' Schlüsselwort verwendet hat (das die Funktion beendet).Ich denke, Hamish hat Recht. – rhino

+0

ja, ich meinte ersetzen Ausfahrt mit nur 'return;' – RobertPitt

0

ive bereits eine Antwort hinzugefügt, aber ich denke, krank hinzufügen eine andere Beschreibung OOP Weg, dies zu tun.

eine Datei login.class.php namens Erstellen und eine Klasse erstellen, wie so

class Login 
{ 
    var $username,$password; 

    public function __cosntruct($username,$password) 
    { 
     $this->username = $username; 
     $this->password = $password; 
    } 

    //Checks 
    public function isValidUsername() 
    { 
     return strlen($this->username) > 8; 
    } 

    //..Etc 
} 

dann können Sie tun:

$Login = new Login("Username","Password"); 

if(!$Login->isValidUsername()) 
{ 
    echo 'username invalid'; 
}