2012-02-20 9 views
0

ログインスクリプトに入れ子関数を組み込んでいます。機能は以下の通りです。また、私の機能の下には、ログインスクリプトの中にそれらを組み込もうとしている部分があります。しかし、ログインしようとするたびに無効なユーザー名が表示されます。しかし、私が関数dの代わりにログインスクリプトでユーザー関数aとbを使うと、すべて正常に動作します。どこかに教えてもらえますか?私は間違っていますか?ありがとう。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

+1

あなたは何を*期待していますか?あなたは関数を呼び出し、戻り値で何もしません。 –

+0

この行 'return($ password!= $ retrievepassword ['password'])? true:false; '真でなければならないfalseを返す ' –

答えて

4

でも、関数dは値を返しません。

+0

sry私はphp/programmingを使い慣れていません。ちょうど3週間前に始まりました。関数dで何を返すのですか?これは効果がありますか? elseif(($ username!= NULL)){ return username_check($ username); – Anonymous

関連する問題