2016-01-20 90 views
0

我想要做的事情的基礎是檢查用戶值。爲什麼php跳過if語句?

如果他們在那裏返回true並返回到頁面,否則返回false並打印空值。

$query = sprintf("SELECT * from Users where username = ? and password = ?"); 
$params1 = array($username, $password); 
$stmt = sqlsrv_query($conn, $query, $params1); 
if ($stmt === false) 
{ 
    die(print_r(sqlsrv_errors(), true)); 
} 

$Users = array(); 

while ($row = sqlsrv_fetch_array($stmt, SQLSRV_FETCH_ASSOC)) { 
    $username1 = $row['username']; 
    $password1= $row['password']; 
} 


$Users["username"] = $username1; 
$Users["password"] = $password1; 

//echo json_encode($Users); 
echo "you are here"; 

if ($username1==null) 
{ 
    return false; 
    echo "null values"; 
} 
else { 
    return true; 
    if (!empty($_SERVER['HTTP_REFERER'])) 
     header("Location: ".$_SERVER['HTTP_REFERER']); 
    else 
     echo "No referrer."; 
} 
echo "\n\nyou're at the end though"; 

sqlsrv_free_stmt($stmt); 

sqlsrv_close($conn); 

}  
else { 
    echo "Connection could not be established.<br />"; 
    die(print_r(sqlsrv_errors(), true)); 
} 

正如你所看到的,我試圖調試程序,看看程序在哪裏。它得到的地步

//echo json_encode($Users); 
echo "you are here"; 

之後沒有別的似乎工作,我不知道爲什麼。

+0

虛假的東西,爲什麼你使用'前'返回false ; if塊中的''或''true''? – jmattheis

+0

幫你一個忙,並設置xdebug,然後通過你的代碼。 echo或var_dump驅動的調試會讓人厭倦,並且會因爲不必要的語句而弄亂代碼庫。 – k0pernikus

回答

5

你的工作後直接echo您有:

if ($username1==null) 
{ 
    return false; 
    ... 
} 
else 
{ 
    return true; 
    ... 
} 

... 

所以在此之後什麼都不會得到,因爲return語句的執行。從manual

如果在一個函數中調用return語句,將立即 結束當前函數的執行,並返回其參數爲 函數調用的值。 return還會結束eval()語句或腳本文件的執行 。

如果從全局範圍調用,則當前腳本文件 的執行結束。

另外請注意,您應該檢查您的查詢返回的行數,現在如果未找到任何行,您將得到undefined variable警告。

+0

有沒有辦法重定向頁面,然後返回true或false到那個頁面呢? –

+0

@EoinÓCribín當然,你可以使用標題重定向。例如:'header('Location:some_page.php?result = true/false');退出;'。如果那是你的意思,當然。 – jeroen

+0

工作正常,但我想回頭看看發送請求的頁面是否有變量存儲? –

1

你進入THW而statment你需要檢查的行數中,如果statment如果不爲0,則返回true,否則返回這樣

if(sqlsrv_num_rows($stmt) 
{ 
// your code be here 
return true; 
}else{ 
// your code be here 
return false; 
} 

http://php.net/manual/en/function.sqlsrv-num-rows.php

+0

看起來不錯!任何想法如何返回真正的發送請求的頁面,所以我可以使用它作爲一個變量? –

+0

我認爲如果你嘗試使用這個代碼作爲函數將是好的和易於使用我的意思是$結果= fucttionname($用戶名,$密碼);並在這個函數中編寫你的代碼 –