У меня простая система входа, и я ничего не получаю при попытке получить количество строк, тот же метод, который использовался для работы все время, я не знаю, что происходит сегодня.MySQLi Num Rows Does not Work
Код:
<?php
class LoginClass {
public $User;
public $Pass;
public $Query;
function Init() {
$User = $this->User;
$Pass = $this->Pass;
if($User != '')
{
if($Pass != '')
{
$this->HashPass();
}
else
{
echo 'Please Enter A Password.';
}
}
else
{
echo 'Please Enter A Username or E-Mail.';
}
}
function HashPass() {
$Pass = $this->Pass;
$this->Pass = hash('sha256', $Pass);
$this->CheckUser();
}
function CheckUser() {
$User = $this->User;
if(!filter_var($User, FILTER_VALIDATE_EMAIL))
{
$this->Query = 'SELECT * FROM Users WHERE User = "'.$User.'" AND Pass = "'.$this->Pass.'"';
}
else
{
$this->Query = 'SELECT * FROM Users WHERE EMail = "'.$User.'" AND Pass = "'.$this->Pass.'"';
}
$this->CheckDB();
}
function CheckDB() {
$Query = $this->Query;
$Connect = new mysqli("127.0.0.1", "root", "", "Data");
$Stmt = $Connect->prepare($Query)
$Stmt->execute();
$Stmt->store_result();
echo $Stmt->num_rows;
$Stmt->close();
$Connect->close();
}
function SetupSession() {
echo 'Test';
}
}
Чек DB является проблемой здесь, и им возможность повторить эту переменную запроса в этой функции все нормально, вот именно то, что я получаю
SELECT * FROM Users WHERE User = "Test" AND Pass = "532eaabd9574880dbf76b9b8cc00832c20a6ec113d682299550d7a6e0f345e25"
Я также проверил свою БД, и все мои таблицы настроены правильно, и нет пароля.
только хэширования пароля с SHA256 не достаточно. Вместо этого используйте [bcrypt] (http://stackoverflow.com/questions/4795385/how-do-you-use-bcrypt-for-hashing-passwords-in-php). –
Что такое 'var_dump ($ Stmt);' вывод (перед закрытием)? – bwoebi
@Marcel - Учитывая, что у его базы данных нет пароля root, я сомневаюсь, что это производственная среда. –