本文目录一览:
在php中怎么设置cookie
php设置和获取cookie
setcookie('mycookie','value');
//函数原型:int setcookie(string name,string value,int expire,string path,string domain,int secure)
echo($mycookie);
echo($HTTP_COOKIE_VARS['mycookie']);
echo($_COOKIE['mycookie']);
删除Cookie
(1)调用只带有name参数的setcookie();
(2)使失效时间为time()或time-1;
?php setcookie('name'); ?
setcookie('mycookie');或setcookie('mycookie','');或setcookie("mycookie",false);
//setcookie('mycookie','',time()-3600);
echo($HTTP_COOKIE_VARS['mycookie']);
print_r($_COOKIE);
建议删除方法:
setcookie('mycookie','',time()-3600);
PHP提供一个很好用的函数mktime()。
你只要按顺序传送给mktime()你希望表示的小时,分钟,秒数,月份,日期,及年份,
mktime()就会返回该日期自1970年1月1日的总秒数。
因此,如果需要模拟 Y2K 问题:
$y2k = mktime(0,0,0,1,1,2000);
setcookie('name','value',$y2k);
setcookie('name', 'value', time+3600);
setcookie('name', 'value', $y2k, '~/myhome', '.domain.com');
获取COOKIE过期时间的办法
$expire = time() + 86400; // 设置24小时的有效期
setcookie ("var_name", "var_value", $expire); // 设置一个名字为var_name的cookie,并制定了有效期
setcookie ("var_name_expire", $expire, $expire); // 再将过期时间设置进cookie以便你能够知道var_name的过期时间
注:
在发送 cookie 时,cookie 的值会自动进行 URL 编码。接收时会进行 URL 解码。
如果你不需要这样,可以使用 setrawcookie() 代替。
php。通过ajax设置cookie成功后,客户端浏览器会更新cookie信息吗?就是说网页不刷新
这样是不会刷新的,你必须在通过ajax设置cookie后由后端返回设置结果(成功/失败)
然后在前端通过js更新页面
因为网页在显示时已经下载完毕,不会改变了,你需要改变网页内容,就要用js修改,ajax取回来数据,然后前端用js根据数据来修改页面
你的后端将cookie删除了,但前端页面已经被浏览器解析,所以浏览器不会自己修改登录信息
解决方法:
ajax发送请求→PHP接到退出请求→PHP删cookie→PHP返回成功码{"success":1}或失败码{"success":0}→前端接受到返回码→如果是1,则通过js将用户名改掉(如document.getElementById('username').innerHTML='请登录')等
一般退出是直接用一个链接,用户访问连接后,后端清理cookie,然后用302或301跳转到原来页面或首页,目前大部分网站都是跳转的方式退出的
虽然ajax不刷新页面的方式理论上用户体验更好,但个人认为,退出账户这类操作不会经常使用,没有必要用ajax,通常是网页中动态展示的数据(如天气、抽奖结果、活动参与信息)等经常需要变动的数据用ajax
如何使用PHP操作cookie
PHP setcookie() 函数向客户端发送一个 HTTP cookie。cookie 是由服务器发送到浏览器的变量。cookie 通常是服务器嵌入到用户计算机中的小文本文件。每当计算机通过浏览器请求一个页面,就会发送这个 cookie。cookie 的名称指定为相同名称的变量。例如,如果被发送的 cookie 名为 "name",会自动创建名为 $user 的变量,包含 cookie 的值。必须在任何其他输出发送前对 cookie 进行赋值。如果成功,则该函数返回 true,否则返回 false。 setcookie(name, value, expire, path, domain, secure) name 必需。规定 cookie 的名称。value 必需。规定 cookie 的值。expire 可选。规定 cookie 的有效期。path 可选。规定 cookie 的服务器路径。domain 可选。规定 cookie 的域名。secure 可选。规定是否通过安全的 HTTPS 连接来传输 cookie。可以通过 $HTTP_COOKIE_VARS["user"] 或 $_COOKIE["user"] 来访问名为 "user" 的 cookie 的值。在发送 cookie 时,cookie 的值会自动进行 URL 编码。接收时会进行 URL 解码。如果你不需要这样,可以使用 setrawcookie() 代替。程序1:设置并发送 cookie: ?php $value = "my cookie value"; // 发送一个简单的 cookie setcookie("TestCookie",$value); ? html body ... ... ?php $value = "my cookie value"; // 发送一个 24 小时候过期的 cookie setcookie("TestCookie",$value, time()+3600*24); ? html body 程序2:检索cookie 值的不同方法: html body ?php // 输出个别的 cookie echo $_COOKIE["TestCookie"]; echo "br /"; echo $HTTP_COOKIE_VARS["TestCookie"]; echo "br /"; // 输出所有 cookie print_r($_COOKIE); ? /body /html 程序输出: my cookie value my cookie value Array ([TestCookie] = my cookie value) 程序3:通过把失效日期设置为过去的日期/时间,删除一个 cookie: ?php // 把失效日期设置为一小时前 setcookie ("TestCookie", "", time() - 3600); ? 程序4:创建一个数组 cookie: ?php setcookie("cookie[three]","cookiethree"); setcookie("cookie[two]","cookietwo"); setcookie("cookie[one]","cookieone"); // 输出 cookie (在重载页面后) if (isset($_COOKIE["cookie"])) { foreach ($_COOKIE["cookie"] as $name = $value) { echo "$name : $value br /"; } } ? 程序输出: three : cookiethree two : cookietwo one : cookieone 程序5: /** * 01.cookie设置 * */ function ssetcookie($var, $value, $life=0) { global $_SGLOBAL, $_SC, $_SERVER; setcookie($_SC['cookiepre'].$var, $value, $life?($_SGLOBAL['timestamp']+$life):0, $_SC['cookiepath'], $_SC['cookiedomain'], $_SERVER['SERVER_PORT']==443?1:0); }