2013-06-24 3 views
0

Я преобразовал мою страницу входа в систему, чтобы использовать PDO, но теперь она не работает. Я проверил все виды примеров кода, и я не могу понять, где я ошибаюсь. Это выглядит идеально для меня. Также отчет об ошибках полностью включен, и все же я не получаю никаких ошибок. Я просто получаю ошибку браузера, чтобы страница была «неправильно настроена». FYI, это 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 Internal Server Error, что не совсем полезно ... Попробуйте создать фальшивую ошибку PHP. – silkfire

+0

Вам следует избегать хранения паролей в вашей базе данных. Вместо этого вы должны создать уникальную соль для каждого пользователя и хешировать свой пароль. – Paulpro

+0

@Paulpro У меня 0 контроль над этим, к сожалению. Я не создал эту базу данных. Я просто использую его. Как я сказал, правильно ли я дезинфицирую эти ресурсы? –

ответ

4

Проблема здесь:

$query_unpw->$fetch 

Оно должно быть:

$query_unpw->fetch() 

Это метод, поэтому пропустить этот $ знак.

Предлагаю вам использовать ini_set ('display_errors', "On") при разработке.

+0

Да, лол, хорошо замечен :) – silkfire

+0

Я рад, что вокруг нет детей, потому что я просто использовал много ненормативной лексики, очень громко .. lol. Спасибо. Извините за эту глупость. –

+0

на стороне записки, я санирую эти входы правильно или я все еще широко открыт для инъекций? –