2016-02-01 2 views
0

Я не знаю, почему этот кусок кода:

if($sth->rows == 0){ 
    echo "Incorrect username or password - 1"; 
} 

тянет Undefined свойство ошибки: PDOStatement :: $ строк. Это отлично работает на другом PHP-скрипте, который в основном менял только несколько вещей. Тем не менее, я также получаю эхо «Неправильное имя пользователя или пароль -1», что означает, что оператор if выполнялся.

Вот полный код PHP.

<?php 
$lusername = $_POST['username']; 
$lpassword = $_POST['password']; 

//Hashing password 
$cost = 10; 

$salt = strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)), '+', '.'); 

$salt = sprintf("$2a$%02d$", $cost) . $salt; 

$hash = crypt($lpassword, $salt); 

// Create connection 
$dsn = 'mysql:dbname=weblupne_template3;host=localhost'; 
$username = 'somethingFreakingCrazyMagical'; 
$password = 'somethingEvenMoreCrazyFreakingMagical'; 
try { 
    $db = new PDO($dsn, $username, $password); // also allows an extra parameter of configuration 
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // set the PDO error mode to exception 
} catch(PDOException $e) { 
    die('Could not connect to the database:<br/>' . $e); 
} 

//Where to select from 
$sth = $db->prepare('SELECT password FROM login WHERE username = :username LIMIT 1'); 
$sth->bindParam(':username', $lusername); 
$sth->execute(); 
$user = $sth->fetch(PDO::FETCH_OBJ); 

if($sth->rows == 0){ 
    echo "Incorrect username or password - 1"; 
} 
else{ 
    //Tests if correct 
    echo $user->hash; 
    if (hash_equals($user->password, crypt($lpassword, $user->password))) { 
     echo "You check out"; 
    } 
    else{ 
     echo "Incorrect username or password - 2"; 
    } 
} 
?> 
+0

Возможно, выполнение запроса не удалось, вы не проверяете, вы просто предполагаете. –

+0

Я поместил часть выполнения в оператор try и catch и не получил никакого исключения. –

+0

нет вашего подключения в try \ catch not select querry –

ответ

0

Вы должны использовать $sth->rowCount(), не свойство с именем rows.

+0

Это работало безупречно. Я смущен, почему -> ряд работает на моей другой странице php. –

Смежные вопросы