我再次被Smarty困住了,在我正在从事的一个项目中,我在登录中有一个注册/登录表单--例如,当我试图输入一个特定的"user/pass“时,正在进行一个sql查询,但问题是:
Smarty一直在缓存一个旧模板,即:“错误的用户名或密码”,我的意思是用简单的话来说,php在后面运行得很好,但是模板是从以前的缓存中检索的!!
还有一个例子,我在页脚“登录”表单上,您输入数据,脚本检查您的权限并将您发送到控制面板,现在在控制面板上,我在“页脚”中做了一个检查,所以如果用户只记录了一些其他的东西,比如“欢迎用户”,但是脚本不是那样的,相反,它仍然会带回“登录”表单,不管输入的数据是正确的还是不正确的!
我希望我说得很清楚!!
我告诉过你要把每个模板的聊天更改为0
$smarty->caching = 0;
$smarty->display("index.tpl");====================================================
下面是footer.tpl:
<footer class="page_row">
<div id="footer3">
//If the user is logged in
{if isset($smarty.session.logged) && $smarty.session.logged == true}
<span style='text-align:left; float:left; margin:4px;'>Login:</span>
<a href=index.php?do=members_panel&id=$md>{$smarty.session.name}</a></br>
<a href='index.php?do=logout'>Logout</a>
{else} //if the user is not logged in
<span style="text-align:left; float:left; margin:4px;">Login:</span>
<table width="20px" style="margin-left:auto; margin-right:auto;">
<form name="sign_in" method="POST" action="index.php?do=sign_in">
<tr><td><input name="username" type="text" class="textfield" id="username" placeholder="Username"/></td></tr>
<tr><td><input name="password" type="password" class="textfield" id="password" placeholder="Password"/></td></tr>
<tr><td><input type="submit" class="btn-style" value="Sign in"></td></tr>
</table>
{/if}
</div>在这里,PHP部分:
elseif ($_REQUEST['do'] == 'sign_in') { //Sign_in page
$username = mysqli_real_escape_string ($db_handle, $_POST['username']);
$password = mysqli_real_escape_string ($db_handle, $_POST['password']);
$login_sql = "SELECT * FROM `database` WHERE Username='$username' AND Password='$password'";
$login_query = mysqli_query($db_handle, $login_sql) or die("Bad Query: " . mysqli_error($db_handle));
if (mysqli_affected_rows($db_handle) == 1) {
$user = mysqli_fetch_assoc($login_query) or die("Error: " . mysqli_error($db_handle));
$_SESSION['logged'] == true;
$_SESSION['name'] = $user['Name'];
$smarty->assign('NAME', $user['Name']);
$smarty->assign('PASSWORD', $user['Password']);
$smarty->assign('EMAIL', $user['Email']);
$smarty->caching = 0;
$smarty->display('login_good.tpl');
}同样,问题是在我检查用户是否登录后,.tpl部件没有被更改!P.S:(footer.tpl)“有表单登录”包含在所有文件中,如上面代码"login_good.tpl“中显示的文件
发布于 2014-10-06 08:36:50
问题在于这一行:
$_SESSION['logged'] == true;在这里,您不做作业,而只是比较,应该是:
$_SESSION['logged'] = true;所以这个问题与Smarty缓存没有什么共同之处,而只是因为使用PHP运算符。
https://stackoverflow.com/questions/26191301
复制相似问题