Hola,
md5() devuelve el md5 de la cadena que le pasas como parametro. Asi que estabas calculando el md5 del nombre de fichero temporal (que cambia cada vez).
Con PHP4.2 existe la funcion md5_file() (
www.php.net/md5_file) al que pasas como parametro la ruta del fichero del que quieres calcular el md5 de sus contenidos.
Si tu version es anterior, en los comentarios de los usuarios en la pagina del manual ponen alternativas.
Saludos.