AS2: SharedObject that expires like a cookie

Firstly, if you are not using SSL for all your sites, you should step it up! NameCheap's SSL certificates start at only $9. There's no excuse!
Firstly, if you have not tried Digital Ocean's SSD Virtual Servers for only $5/mo, I highly recommend them!

People like to called the Flash SharedObject a “Flash Cookie”. But it’s not really a cookie and it never expires like a cookie. So here’s a “Flash Cookie” that expires. You can use it like this:

var c:Cookie = new Cookie("hello");
var d:Date = new Date();
// Make it last one hour
d.setHours( d.getHours()+1 );
c.setValue("there", d );

This will create a cookie named “hello” with value “there” and it will last for one hour. For the never-ending cookie, don’t pass a date.

I haven’t tested this extensively, but it worked for what I needed it for.

You can get the class after the jump…

/*
 * author: Matt Shaw : matt at unformatt
 */
class Cookie {

	public static var SO_NAME:String = "cookie";
	public static var SO_PATH:String = "/";
	public static var EXPIRE:String = "_expire";

	private var _so:SharedObject;
	private var _name:String;

	public function Cookie( name:String ) {
		_so = SharedObject.getLocal(SO_NAME,SO_PATH);
		_name=name;
	}
	public function setValue( v:Object, expires:Date ):Void {
		_so.data[_name] = v;
		_so.data[_name+EXPIRE] = expires;
		_so.flush();
	}
	public function getValue():Object {
		var v:Object = _so.data[_name];
		var expires:Date = _so.data[_name+EXPIRE];
		if( expires && expires < new Date() ){
			v = null;
			setValue(v);
		}
		return v;
	}
}

About this entry


Good Reads