查看: 957|回复: 9
|
How to create cookies in php?
[复制链接]
|
|
我在刚开始用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....请多多指教。。 |
|
|
|
|
|
|
|
发表于 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 ...................... |
|
|
|
|
|
|
|
发表于 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的时候才发生以上问题. |
|
|
|
|
|
|
|
发表于 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 编辑 ] |
|
|
|
|
|
|
| |
本周最热论坛帖子
|