If statement Smarty使用{if}语句检查登录

If statement Smarty使用{if}语句检查登录,if-statement,smarty,If Statement,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

我正在检查脚本中的用户名和密码

诸如此类

$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');
第三方物流:

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

GOOD

{else}

Bad

{/if}
代码没有被应用,当我从页面发送一个空数据时,我的意思是不写任何用户或pass,它会返回“GOOD”消息 但是当我写任何东西时,不管它是否与数据库中的用户名和密码匹配,它仍然会返回“坏”消息

根据smarty中的{debug}函数和我得到的结果,我试图自己解决这个问题

对于$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编码,它应该可以正常工作。但是,假设有时未找到任何记录(无效数据),则应向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注入的攻击

究竟为什么要对模板文件进行登录验证?