2017-01-25 4 views
0

Я пытаюсь исправить систему входа в систему из старого проекта друга, и я не могу заставить его принять законный логин вместо того, чтобы идти и проходить имя и идентификатор пользователя из БД, он просто выдает ошибку, даже когда он может получить правильное имя пользователя и идентификатор из БД. Любая идея, является ли эта часть кода причиной ошибки и что такое решение?Передача результатов от MySQL-запроса до входа в PHP-сессию

MySQL Query и PHP Session

<?php 
$row = mysqli_fetch_assoc(mysqli_query($con,'SELECT id,usr FROM tz_members WHERE usr="{.$_POST[username]}" AND pass="{.$_POST[password]}"')); 
if($row['usr']) 
{ 
    $_SESSION['usr'] = $row['usr']; 
    $_SESSION['id'] = $row['id']; 
    $_SESSION['rememberMe'] = $_POST['rememberMe']; 
} 
else { 
    //(display error message) 
} 
?> 

Войти Форма

<form> 
    <label class="grey" for="username">Username:</label> 
    <input class="field" type="text" name="username" id="username" value="" size="23" /> 
    <label class="grey" for="password">Password:</label> 
    <input class="field" type="password" name="password" id="password" size="23" /> 
    <label><input name="rememberMe" id="rememberMe" type="checkbox" checked="checked" value="1" /> &nbsp;Remember me</label> 
    <div class="clear"> 
    </div> 
    <input type="submit" name="submit" value="Login" class="bt_login" /> 
</form> 

Полный код

http://pastebin.com/kj6i9Y8h

+0

это ваш зашифрованный пароль в БД? – mith

+0

Привет, во-первых, НИКОГДА не используйте дезинфицированные входы. Я ссылаюсь здесь на ваше прямое использование $ _POST ['username'] и $ _POST ['password']. В настоящее время становится общепринятой практикой использовать параметризованный SQL. Возможно, стоит также взглянуть на уровень абстракции базы данных, такой как доктрина, так как вы выиграете от исследования высокопрофессиональных людей и безопасности, которую они реализуют. В любом случае, что произойдет, когда вы запустите этот SQL-запрос в PHPMyAdmin? Он что-то возвращает? Кроме того, что, если вы var_dump mysqli num_rows? –

+0

@mith В настоящее время нет, только для целей тестирования. Будет сделано позднее. – Fortera

ответ

0

Я надеюсь, что это помогает :)

$row = mysqli_fetch_assoc(mysqli_query($con,'SELECT "id", "usr" FROM "tz_members" WHERE usr="'.$_POST['username'].'" AND pass="'.$_POST['password'].'"')); 
+0

К сожалению, не работал. По-прежнему получен NULL для mysqli_num_rows. – Fortera

+0

Вы можете попробовать '$ row = mysqli_fetch_assoc (mysqli_query ($ con, 'SELECT id, usr FROM tz_members WHERE usr ='. $ _ POST ['username']. 'AND pass ='. $ _ POST ['password']. ' ')); 'и если вы получите NULL, тогда нет способа, чтобы имя пользователя и пароль соответствовали этой таблице tz_members (неверное имя пользователя или пароль?), или у вас есть недопустимый $ con? –

+0

$ con является правильным, так как я могу читать и изменять содержимое таблицы, которая не требует меня для входа в систему, а имя пользователя и пароль верны, поскольку их ввод в PHPMyAdmin напрямую с использованием используемого запроса дает правильный результат. – Fortera

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