2012-08-22 260 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中发生此问题。