2012-08-22 258 views
0

我已經在smarty中編寫了header.tpl和login.php文件。我想說明的註銷文本,如果用戶登錄,否則它應該顯示的登錄,如果用戶沒有登錄in.below是login.php中登錄註銷smarty

if(isset($_REQUEST['submit'])) 
    { 
     $name=$_REQUEST['name']; 
     $pass=$_REQUEST['pass']; 
    $rs=mysql_query("select * from form where name='$name'"); 
    $fetchdata=mysql_fetch_array($rs); 
     if($rs) 
     { 
      $name=$fetchdata['name'] 
      $_SESSION['name']=$name; 
      $name1=$_SESSION['name']; 
      //$smarty->assign('name',$_SESSION['name']); 
      $smarty->assign('name1',$name1); 
      $smarty->display("about.tpl"); 

     } 
     else 
     { 
      $smarty->display("login.tpl"); 
     } 
    } 
下面

的代碼在header.tpl代碼

<a href="login.php">{if $name1!= ''}: Logout{else}login{/if}</a> 

它顯示錯誤

Parse error: syntax error, unexpected T_VARIABLE in D:\xampp\htdocs\smarty\login.php on line 29 

回答

0

我發現了一堆奇怪的事情。

  1. 您應該在插入sql查詢之前先轉義名稱並通過。有關更多詳細信息,請參閱http://www.php.net/manual/en/function.mysql-real-escape-string.php
  2. PHP文檔建議您應該使用MySQLi擴展
  3. 我看不到驗證..我的意思是你不使用給定的密碼。它是否正確?
  4. 我認爲即使結果爲空,mysql_query也不是虛假的。你可以用if($fetchdata=mysql_fetch_array($rs)){...代替if($rs)
  5. 我不知道解決這個問題,如果這將拋出一個異常,但我會寫<a href="login.php">{if {$name1|default:""}!= ''}: Logout{else}login{/if}</a>代替<a href="login.php">{if $name1!= ''}: Logout{else}login{/if}</a>
0

這是一個古老的職位,但我遇到了類似的問題,就在幾分鐘前。

我得到了一個語法錯誤的變量:$ _smarty_t

我嘗試不同的事情,使有錯誤消失,但沒有什麼明顯的。我確認緩存已關閉,但問題仍然存在,即使刪除單個緩存文件後也是如此。

最終我刪除了該目錄的全部內容並刷新,並最終解決了錯誤。

在通過Composer,smarty/smarty加載的Smarty v3.1.27中發生此問題。