一段很短的smarty代码,让我发现了一个很严重的问题,用了几年了,第一次发现echo "<a href='index.php'>index</a>";require('../libs/Smarty.class.php');
echo '<script language="JavaScript">alert("1");</script>';
$smarty = new Smarty;
$smarty->debugging = true;
$smarty->caching = false;
$smarty->cache_lifetime = 120;
$smarty->assign("Name","test",true);
echo '<script language="JavaScript">alert("2");</script>';
$smarty->display('index.tpl');
echo '<script language="JavaScript">alert("3");</script>';
页面里我用alert弹框,结果我第一次打开这个页面的时候,依次弹出1,2,3
然后页面上有个链接,还是指向这个页面,点击这个链接的时候,弹出来的居然是1,2,1,2,3
也就是说从这段PHP程序,当第二次执行的时候,在执行$smarty->display之前,前边的代码被执行了2次这个问题我花了半天时间才找出问题所在的地方,但是还是不知道怎么解决,望大侠们指点。
这段程序我放在网上了,大家可以打开看看,第一打开弹到3以后,再点一下页面上的index链接,就会依次弹出1,2,1,2,3,都是同一段程序。
http://www.micecms.com/smartytest/demo/index.php