2016-01-20 124 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($用户名,$密码);并在这个函数中编写你的代码 –