hola,
te recomiendo, en primer lugar, que user foreach() en lugar de ese while complicado. de la siguiente forma obtendrias el mismo resultado
Código:
foreach($datos as $elemento=>$valor) {
y en segundo lugar, cambia tu variable $datos por $_COOKIE["datos"], o bien antes de comprobar si esta definido $datos, usa lo siguiente:
Código:
$datos = $_COOKIE["datos"];
es todo,deberia funcionar ^^
espero haberte ayudado
exitos