2012-02-20 54 views
0

我玩弄,並嘗試將嵌套函數併入我的登錄腳本。這些功能都在下面。此外,我的功能下面是登錄腳本的一部分,我試圖將它們合併到一起。但是,每次我嘗試登錄時,它都會顯示無效的用戶名。但是,如果我在登錄腳本中使用函數a和b而不是函數d,則一切正常。有人可以告訴我我在哪裏,錯了嗎?謝謝。PHP的新...需要幫助...關於嵌套的功能

//a -username 

function username_check($username){ 

$usercheck = "SELECT user_id FROM users WHERE username ='$username'"; 
$userqry = mysql_query($usercheck) or die ("Could not match data because ".mysql_error()); 
$num_rows = mysql_num_rows($userqry); 
return ($num_rows == 1) ? true : false; 
} 

//b - password 

function password_check($password, $username){ 

$passwordcheck = "SELECT password FROM users WHERE username ='$username'"; 
$passwordqry = mysql_query($passwordcheck) or die ("Could not match data because ".mysql_error()); 

while($retrievepassword = mysql_fetch_array($passwordqry)) 

{ 

$password = md5($password); 

return ($password != $retrievepassword['password']) ? true : false; 

} 
} 
//c -email 

function email_check($email){ 

$emailcheck = "SELECT user_id FROM users WHERE email = '$email'"; 
$emailqry = mysql_query($emailcheck) or die ("Could not match data because ".mysql_error()); 
$num_rows = mysql_num_rows($emailqry); 

return ($num_rows == 1) ? true : false; 
} 

//d -username + password + email check? all in one? DOESNT WORK 

function user_check($username = NULL, $password = NULL, $email = NULL) { 

if(($email !=NULL)) { 
email_check($email); 
} 

elseif(($username !=NULL) && ($password!=NULL)){ 
password_check($password,$username); 
} 

elseif(($username !=NULL)) { 
username_check($username); 
} 

} 


//LOGIN SCRIPT 

if (user_check($username1) ==false) { 
    $logerrors[] = 'Invalid username'; 

} 
elseif (user_check($password1, $username1)) { 
    $logerrors[] = 'Incorrect password';` 
+2

1:你不嵌套函數。 2:將它們分解爲更簡單的任務3:'var_dump'和'print_r'是你最好的朋友,可以知道你的位置以及你不在腳本中的位置。 – Joseph 2012-02-20 05:15:45

+1

你期望它做什麼?你正在調用函數,而對返回值無所作爲。 – 2012-02-20 05:17:08

+0

也這行'返回($密碼!= $ retrievepassword ['密碼'])? true:false;'你的返回false應該是真的 ' – 2012-02-20 05:18:08

回答

4

對於其中一個,函數d不會返回任何值。

+0

sry我是新來的PHP /編程;剛剛在3周前開始。我會用函數d返回什麼?這會工作嗎? elseif(($ username!= NULL)){ return username_check($ username); – Anonymous 2012-02-20 05:24:42