Le caractère & n'est pas un caractère SGML reconnu. Il doit être remplaçé par l'entité HTML &
L'erreur est fréquente dans les liens des adresses web qui parsèment le code source.
En général, lorsque vous utilisez des sessions PHP, ce caractère "&" se crée automatiquement pour indiquer l'id de session et vous ne pouvez pas le modifier à la main.
Dans ce cas, vous devez indiquer cette modification via une instruction PHP :
<?php
ini_set('arg_separator.output', '&');
?>
Tout ceci est bien expliqué ici : http://php.developpez.com/faq/langage/index.php?page=sessions#sessions_xhtmlvalide