佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 957|回复: 9

How to create cookies in php?

[复制链接]
发表于 19-11-2005 03:35 PM | 显示全部楼层 |阅读模式
我在刚开始用php不久。。。很想些用cookies,不过很多error

eg.
setcookie ("TestCookie", "", time() - 3600);

then error :Warning: Cannot add header information - headers already sent by (output started at c:\apache\htdocs\cookies.php:7) in c:\apache\htdocs\cookies.php on line 9

为什么?我使用phpTrial....请多多指教。。
回复

使用道具 举报


ADVERTISEMENT

发表于 19-11-2005 03:52 PM | 显示全部楼层
你必须在所有header传送出去之前使用这个setCookie(),例如:
<?php
setCookie("name","john",time()+3600);
?>

<html>
......
回复

使用道具 举报

 楼主| 发表于 19-11-2005 04:11 PM | 显示全部楼层
THANK~~~~~!!! 谢谢。。。应为我不知道要before <html>....

那请问cookie可以永久保存的吗?

eg.

   page A  -----> page B -----> page C -----> page B
  set cookie    use cookie     use again    use agian

应为我的会不见。。。why?

[ 本帖最后由 cloudkia 于 19-11-2005 04:29 PM 编辑 ]
回复

使用道具 举报

发表于 19-11-2005 06:41 PM | 显示全部楼层
COOKIES当然不能够‘永久’保存,只能够给它一个时限,时限的长短由你决定,可以设一个小时到一年都可以。

关于COOKIES的运用应该不难理解;好像上面我在COOKIES存放了"name"这个variable,在另外一页我只需要用$_COOKIE['name']就能够拿到他的value 'john'了。如果要删除COOKIES就将它的时限设定位过去的任何时间,例如 setCookie("name","john",time()-1)就可以了。
回复

使用道具 举报

 楼主| 发表于 19-11-2005 07:23 PM | 显示全部楼层
谢谢,以无大碍了
回复

使用道具 举报

发表于 21-11-2005 10:59 AM | 显示全部楼层
原帖由 kfchai1982 于 19-11-2005 03:52 PM 发表
你必须在所有header传送出去之前使用这个setCookie(),例如:
<?php
setCookie("name","john",time()+3600);
?>

<html>
......

不太建议放时间, 如果Server的时间是US Time的话在Malaysia Browse 可能会有问题......................Cookie会直接Expired ......................
回复

使用道具 举报

Follow Us
发表于 21-11-2005 11:39 AM | 显示全部楼层
应该没什么问题。time()的传回值是unix timestamp,其时间是根据client的电脑设定在做转换成GMT date。所以没有时区的限制。
回复

使用道具 举报

发表于 21-11-2005 12:23 PM | 显示全部楼层
原帖由 kfchai1982 于 21-11-2005 11:39 AM 发表
应该没什么问题。time()的传回值是unix timestamp,其时间是根据client的电脑设定在做转换成GMT date。所以没有时区的限制。

因为之前有碰到这个问题, 不敢保证所有的Client 都设定对的时间. 所以还是以Server的时间为标准比较好.在Local Test不会有这个问题, 但Upload到Server的时候才发生以上问题.
回复

使用道具 举报


ADVERTISEMENT

发表于 21-11-2005 03:20 PM | 显示全部楼层
原帖由 belon_cfy 于 21-11-2005 12:23 PM 发表

因为之前有碰到这个问题, 不敢保证所有的Client 都设定对的时间. 所以还是以Server的时间为标准比较好.在Local Test不会有这个问题, 但Upload到Server的时候才发生以上问题.


我想如果是Client的时间没有设好,那应该没办法了。因为time()本身的结果是Server的Timestamp,所以这已经是一server为准了。基本上不管在世界上的什么地方,timestamp都是能够直接让系统采用,并不会受时区的影响,不像Javascript那样时间是以Client为表准。
况且setCookie不放expire的话只能够在该session里才有效,并不能长期保存。
回复

使用道具 举报

发表于 21-11-2005 04:09 PM | 显示全部楼层
原帖由 kfchai1982 于 21-11-2005 03:20 PM 发表


我想如果是Client的时间没有设好,那应该没办法了。因为time()本身的结果是Server的Timestamp,所以这已经是一server为准了。基本上不管在世界上的什么地方,timestamp都是能够直接让系统采用,并不会受时区的 ...

如果是为了长时间保存的话我会给Cookie一个Timestamp, 然后就把Expire的Time放在Cookie Value里,因为在Cookie Value的Timestamp是完全Based on Server time, 所以不会有这个问题. 只是需要每次都将时间Split出来做Validation看看有没有Expire....这点比较麻烦些. 

为了防止其他人篡改Cookie的Expire time, 通常都需要加入CRC, MD5, SHA等等Check Sum在Cookie Value里.

[ 本帖最后由 belon_cfy 于 21-11-2005 04:11 PM 编辑 ]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 11-11-2024 06:02 AM , Processed in 0.122771 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表