簡體   English   中英

Smarty登錄表單中的{caching}問題

[英]{caching} issue in smarty login form

同樣,我仍然停留在Smarty上,例如,在我正在處理的項目中,我在登錄時有注冊/登錄表單,當我嘗試輸入特定的“用戶/密碼”時,正在執行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部分沒有被更改! PS:(footer.tpl)“具有登錄名的形式”包含在所有文件中,例如上部代碼“ login_good.tpl”中所示的文件

問題在於此行:

$_SESSION['logged'] == true;

在這里,您不必進行分配,而只是進行比較,應該是:

$_SESSION['logged'] = true;

因此,該問題與Smarty緩存沒有任何共同之處,而僅在於使用PHP運算符

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM