if-statement
  • smarty
  • 2014-09-21 62 views 0 likes 
    0

    我想檢查用戶名和密碼在我的腳本Smarty的與{if}個語句來檢查登錄

    類似的東西

    $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'); 
    

    在.tpl:

    {if $DATA.Username eq $USERNAME and $DATA.Password eq $PASSWORD} 
    
    GOOD 
    
    {else} 
    
    Bad 
    
    {/if} 
    

    代碼沒有被應用,並且當我從頁面發送空數據時,我的意思是不寫任何用戶也不傳遞,它給我回「好」的消息 但是當我寫任何東西時,無論它是否與usernam e和數據庫中的密碼,它仍然給我回「壞」消息!

    我試圖通過我自己來解決這個問題,取決於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代碼關閉-_-

    +0

    **爲什麼地球上,你做的模板文件中的登錄驗證?** – Sharky 2014-09-23 12:48:57

    回答

    0

    它應該沒有問題。然而,假設有時沒有記錄(無效數據),您應該爲Smarty模板添加額外支票:

    {if $DATA neq null and $DATA.Username eq $USERNAME and $DATA.Password eq $PASSWORD} 
    
        GOOD 
    
    {else} 
    
        Bad 
    
    {/if} 
    

    應該做的事情。它爲我工作。如果它不適合你,請提供不適合你的確切數據(來自Smarty調試的$DATA$USERNAME$PASSWORD)。

    您還應該使用準備的語句,因爲現在你的代碼很容易受到MySQL的注射

    相關問題