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注入的攻击究竟为什么要对模板文件进行登录验证?