在smarty模板中取不到Cookie的值解决方案
在原生PHP中我们用:setcookie()来设置Cookie变量,用$_COOKIE这个全局变量来读取Cookie。例如
- if(!isset($_COOKIE['user']))
- {
- setcookie('user',$userName,time()+60*60*24*300);
- }
在Smarty中,我们可以用她的保留变量来读取:
- {$smarty.cookies.user}
至于用Smarty来设置Cookie变量就没有必要了,那是后端做的事!呵呵。
但刚才在调试的时候发现,用Smarty的保留变量居然读不到Cookie的值。我的代码是这样的:
- <{if$smarty.cookies.loginuser eq ''}>
- <a href="view.php?type=login">用户登录</a>
- <{else}>
- 欢迎:<b><{$smarty.cookies.loginuser}></b>
- <{/if}>
结果始终就是取不到loginuser这个Cookie,一直显示用户登录!
幸好有Chrome的开发人员工具,查看Ajax的加载的内容,查看元素的CSS等都是非常方便的!如下图:

原来是Path路径不对,最开始没有在setcookie()中加路径参数,直接就是
- setcookie('loginuser',$user,time()+30*24*60*60);
而setcookie()的默认路径是当前目录下,如果其他目录要访问这个Cookie是访问不到的!
如果该参数设为 '/' 的话,cookie 就在整个 domain 内有效,如果设为 '/foo/',cookie 就只在 domain 下的 /foo/目录及其子目录内有效,例如 /foo/bar/。默认值为设定 cookie 的当前目录。
改成这样就可以了:
- setcookie('loginuser',$user,time()+30*24*60*60,'/');
虽然这个很简单,其实就是个路径的问题!但仍需要总结两点:
1.学会用调试工具,及时查看当前变量的情况,看是不是与你预期相符。
2.学会用Google,学会查手册,求人不如求己!
好了,我的废话完了!
在smarty模板中取不到Cookie的值解决方案的更多相关文章
- ThinkPHP+Smarty模板中截取包含中英文混合的字符串乱码的解决方案
好几天没写博客了,其实有好多需要总结的,因为最近一直在忙着做项目,但是困惑了几天的Smarty模板中截取包含中英文混合的字符串乱码的问题,终于解决了,所以记录下来,需要的朋友看一下: 出现乱码的原因: ...
- SMARTY模板中如何使用get,post,request,cookies,session,server变量
{$smarty}保留变量不需要从PHP脚本中分配,是可以在模板中直接访问的数组类型变量,通常被用于访问一些特殊的模板变量.例如,直接在模板中访问页面请求变量.获取访问模板时的时间戳.直接访问PHP中 ...
- 在smarty模板中使用PHP函数的方法
在smarty模板中如果要在显示的资料使用php函数时,如果是只有一个参数的函数比如说去空白的trim会写成 sample1 代码如下: <{$colname|trim}> 那如果使用像i ...
- 在smarty模板中截取指定长度的字符串
在smarty模板中截取指定长度的字符串,可使用truncate这个插件. 用法: {{$data.value|truncate:28:'...'}} 28个字节14个字数输出,多余部分输出...,一 ...
- smarty模板中引用常量没效果
在thinkphp框架中使用Thinkph的模板引擎,css,js等都没问题,配置为smarty模板引擎后没效果,如图 代码为,$Smarty的s是大写,此时页面不能引入常量,改为小写后正常了. &l ...
- [smarty] 在smarty模板中使用smarty变量初始化 javascript 变量的问题
// 总结:// 1/ 在smarty 模板文件中,使用从php中assign过来的smarty变量,一定需要使用双引号或单引号来括住smarty变量,如:var title="<!- ...
- 如何在smarty模板中执行php代码
Smarty模板主要的目的是分离逻辑层和表现层,所以在模板中不应该包含逻辑部分,逻辑层也不应该含有HTML.要在模板中插入逻辑程序的这种做法"非常"不被推荐,在你的case中. 如 ...
- smarty模板中literal标签的使用
在使用的时候把js等代码写在模板中就报错,加入literal标签后就正确了 <style> {literal} .tr_color{background-color: #9F88FF} { ...
- wuzhicms 查看模板中的所有可用变量和值
将代码放到模板中. {php print_r(get_defined_vars());} 页面显示如下: 这样看不清楚. 通过查看页面源文件的方式打开. 例如:chrome 浏览器打开方式,在页面空白 ...
随机推荐
- libjpeg 交叉编译动态库和静态库
1.下载libjpeg库,解压之 得到了jpeg6b和libtool-2.2.4两个文件夹. 2.编译安装libtool工具. 这是配置libtool,这里需要注意:configure 参 ...
- css z-index属性
原文地址:http://www.neoease.com/css-z-index-property-and-layering-tree/ CSS 中的 z-index 属性用于设置节点的堆叠顺序, 拥有 ...
- 你应该知道的9个优秀的CSS框架
前端开发是一项非常繁琐的工作,你不仅需要拥有和别人不一样的审美观和设计观,而且需要了解诸如HTML.CSS.JavaScript等错综复杂的技术,因此选择一些优秀的CSS框架或许可以帮助你大大提高工作 ...
- HTML 5中的文件处理之FileAPI(转载)
原文地址:http://developer.51cto.com/art/201202/319435.htm 在众多HTML5规范中,有一部分规范是跟文件处理有关的,在早期的浏览器技术中,处理小量字符串 ...
- NDK 通过java调用so文件
首先我们来看so文件的来源 1. 自己写.c文件,然后生成so库 2. 引用别人的静态库,或者动态库来生成新的jni调用库. 我们先来看最简单的编写一个jni调用的so库,包含一个获取字符串的方法,通 ...
- 【风马一族_xml】xml的基本讲解笔记
xml是如何保存数据的 在xml语言中,它允许用户自定义标签.每个标签用于描述一段数据; 一个标签可以分为开始标签和结束标签,在开始标签和结束标签之间又可以嵌套其它标签,利用标签间的嵌套其它标签,利用 ...
- HTML5 manifest ApplicationCache
使用 HTML5,通过创建 cache manifest 文件,可以轻松地创建 web 应用的离线版本. HTML5引入了应用程序缓存,这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问 ...
- 支持IE6的树形节结构TreeTable
关于TreeTable实际应用的案例:http://www.cnblogs.com/qigege/p/5213689.html treeTable是跨浏览器.性能很高的jquery的树表组件,它使用非 ...
- win7局域网无法ping通本机的问题解决方法
对于window7系统,很多朋友会发现:默认下是不允许被ping的,其实都系统自带的防护墙所阻止了,新建一个策略就可以实现被ping通,如下操作
- [大牛翻译系列]Hadoop(21)附录D.1 优化后的重分区框架
附录D.1 优化后的重分区框架 Hadoop社区连接包需要将每个键的所有值都读取到内存中.如何才能在reduce端的连接减少内存开销呢?本文提供的优化中,只需要缓存较小的数据集,然后在连接中遍历较大数 ...