2013-06-24 39 views
0

我将登录页面转换为使用PDO,但现在不起作用。我已经通过了各种代码示例,我无法弄清楚我要去哪里错了。这对我来说看起来很完美。此外错误报告已完全启用,但我没有得到任何错误。我刚刚得到页面的“浏览器错误”配置错误。仅供参考,这是一个SQL分贝使用PDO登录失败并显示正确的信息

//代码

<?php 

require ("../Android/connect_db.php");  

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

try { 
    $query_unpw = $db->prepare(" 
     SELECT member_mast.company_name 
     FROM member_mast 
     WHERE username = ? 
     AND password = ? 
    "); 

    //$username = $_POST['username']; 
    //$password = $_POST['password']; 
    $username = 'abc'; 
    $password = 'abc'; 
    $name = "name"; 

    $query_unpw->bindValue(1, $username, PDO::PARAM_STR); 
    $query_unpw->bindValue(2, $password, PDO::PARAM_STR); 

    $query_unpw->execute(); 

    $count = $query_unpw->rowCount(); 

    if ($count > 0) { 
     while ($row = $query_unpw->$fetch(PDO::FETCH_ASSOC)) {   
       $name = $row['company_name'];    
     } 
     echo $name;  
    } else { 
     echo "Username/Password is invalid"; 
    } 

} catch(PDOException $e) { 
    die($e->getMessage()); 
} 

?> 

现在我已经能够注释掉不同的代码片段后找出的唯一的事情是,如果我注释掉的用户名和密码,这样

//$username = 'abc'; 
//$password = 'abc'; 

然后在页面加载,只是给我我else回声“用户名/密码无效”。但是我不认为我使用他们错了,我知道他们是正确的。所以明显的问题是我瞎了,这里有什么问题?奖金问题是,因为我会在这些变量使用_POST这些变量时,我是否正确地清理了用户输入? PDO还真的很新,我想确保我正确地做到这一点。谢谢您的帮助!

+2

也许你根本没有启用PHP错误?如果你不是通常得到500内部服务器错误,这是不完全有用的...尝试生成一个假的PHP错误。 – silkfire

+0

您应该避免将密码存储在数据库中。相反,您应该为每个用户生成一个独特的盐,并使用它来散列密码。 – Paulpro

+0

@Paulpro我不幸的有0控制。我没有设计这个数据库。我只是用它。这就是说,我是否正确地消毒这些投入? –

回答

4

问题是在这里:

$query_unpw->$fetch 

它必须是:

$query_unpw->fetch() 

这是一个方法,所以跳过$迹象。

我建议你在开发时使用ini_set('display_errors',“On”)。

+0

是的,哈哈,发现很好:) – silkfire

+0

我很高兴周围没有孩子,因为我只是用了很多亵渎,非常大声..大声笑。谢谢。对不起,这个愚蠢。 –

+0

在旁边注意,我是否正确消毒这些输入或我仍然开放注射? –

相关问题