0

こんにちは、php で基本的なログイン スクリプトを作成しています。セキュリティについて心配しているわけではないので、機能させたいだけです。しかし、何らかの理由で、データベースに値がある場合に false を返し続けます。

編集: connection.php には、データベースにログインするための情報が含まれています。

$config['db'] = array(
'host' => 'localhost',
'username' => 'root',
'password' => '',
'dbname' => 'mywebsite'
);




$db = new PDO('mysql:host=' . $config['db']['host']. ';dbname=' . $config['db']['dbname'] , $config['db']['username'] , $config['db']['password']);

connection.php の終わり

if (isset($_POST['username']) && isset($_POST['password']))
{

    require_once 'Connection.php';
    $user = $_POST['username'];
    $pass = $_POST['password'];


        $sth = $db->prepare('SELECT `username` , `password` from `library` where `username`  = ? And `password` = ? ');

        $sth->bindParam(1, $user);
        $sth->bindParam(2, $pass);
        $sth->execute();

        if($sth->fetchColumn() > 0) {
            echo $user;
        } else {
            echo 'false';
        }
}

私は何を間違っていますか?たとえば、ユーザーの場合は ill send in test、パスワードの場合は 123 です。これは私のライブラリに存在し、false を返します。

4

1 に答える 1

2

列名に区切り記号を使用しないでください:

SELECT username, password FROM `library` WHERE username = ? AND password = ? 

あなたのifテストも間違っています。PDOStatement::fetchColumn整数値を返すことはないため、変更する必要があります。

if($sth->fetchColumn() > 0) {

に:

if($sth->fetchColumn() != false) {
于 2013-09-28T14:06:01.400 に答える