首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >{caching}以智能登录形式发出

{caching}以智能登录形式发出
EN

Stack Overflow用户
提问于 2014-10-04 09:05:52
回答 1查看 1.1K关注 0票数 0

我再次被Smarty困住了,在我正在从事的一个项目中,我在登录中有一个注册/登录表单--例如,当我试图输入一个特定的"user/pass“时,正在进行一个sql查询,但问题是:

Smarty一直在缓存一个旧模板,即:“错误的用户名或密码”,我的意思是用简单的话来说,php在后面运行得很好,但是模板是从以前的缓存中检索的!!

还有一个例子,我在页脚“登录”表单上,您输入数据,脚本检查您的权限并将您发送到控制面板,现在在控制面板上,我在“页脚”中做了一个检查,所以如果用户只记录了一些其他的东西,比如“欢迎用户”,但是脚本不是那样的,相反,它仍然会带回“登录”表单,不管输入的数据是正确的还是不正确的!

我希望我说得很清楚!!

我告诉过你要把每个模板的聊天更改为0

代码语言:javascript
复制
$smarty->caching = 0;
$smarty->display("index.tpl");

====================================================

下面是footer.tpl:

代码语言:javascript
复制
<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部分:

代码语言:javascript
复制
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“中显示的文件

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-06 08:36:50

问题在于这一行:

代码语言:javascript
复制
$_SESSION['logged'] == true;

在这里,您不做作业,而只是比较,应该是:

代码语言:javascript
复制
$_SESSION['logged'] = true;

所以这个问题与Smarty缓存没有什么共同之处,而只是因为使用PHP运算符。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26191301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档