El problema es que en la cadena generada por base64 hay caracteres que no estan permitidos en las URLs. En los comentarios de
http://es.php.net/base64_encode poner una funcion para cambiar esos caracteres (busca por base64_url_encode), aunque quizas tambien podias usar urlencode().