2014-09-21 3 views
0

Я пытаюсь проверить имя пользователя и пароль в моем скриптеSmarty с {}, если заявление для проверки входа в систему

что-то вроде этого

$username = htmlspecialchars($_POST['username']); 
$password = htmlspecialchars($_POST['password']); 

$sql = "SELECT * FROM `db_user` WHERE Username='$username' AND Password='$password'"; 
$query = mysqli_query($db_handle, $sql) or die ("Error in query: " . mysqli_error($db_handle)); 

$user_row = mysqli_fetch_assoc($query); 

mysqli_close($db_handle); 


$smarty->assign("DATA", $user_row); 
$smarty->assign("USERNAME", $username); 
$smarty->assign("PASSWORD", $password); 
$smarty->caching=0; 
$smarty->display('sign_in.tpl'); 

в .TPL:

{if $DATA.Username eq $USERNAME and $DATA.Password eq $PASSWORD} 

GOOD 

{else} 

Bad 

{/if} 

код не применяется, и когда я отправляю пустые данные со страницы, я имею в виду не писать ни одного пользователя и не передавать, он возвращает мне сообщение «GOOD» , но когда я пишу что-нибудь, независимо от того, совпадает ли он с usernam e и пароль в базе данных он все равно возвращает мне сообщение «BAD» !!

Я попытался решить это самостоятельно, в зависимости от функции {debug} в smarty и здесь, что у меня есть.

за $ DATA: который содержит информацию о базе данных:

Smarty_Variable Object (3) 
->value = Array (10) 
    ID => "14" 
    Username => "myuser" 
    Password => "mypass" 
    Name => "me" 
    Email => "an email" 
    Country => "Russia" 
    Activation => "1" 
->nocache = false 
->scope = "file:sign_in.tpl" 

Smarty это хорошо, но это убивает меня, когда я останавливаюсь, прежде чем нечто, я использовал, чтобы сделать с закрытыми глазами в обычном кодировании PHP -_-

+0

** почему на земле вы делаете проверку входа на файл шаблона? ** – Sharky

ответ

0

Он должен работать без проблем. Однако если предположить, что иногда нет записи найдены (не корректные данные), вы должны добавить дополнительную проверку в шаблон Smarty:

{if $DATA neq null and $DATA.Username eq $USERNAME and $DATA.Password eq $PASSWORD} 

    GOOD 

{else} 

    Bad 

{/if} 

должен сделать вещь. Это работает для меня. Если это не для вас, укажите точные данные, если они не работают для вас ($DATA, $USERNAME и $PASSWORD от Smarty debug).

Вы также должны использовать подготовленные заявления, потому что теперь ваш код уязвим для MySQL инъекции

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