if (isset($_GET['id'])) не должен отрабатываться.<input type=hidden name=id value='{$row['id']}'>, и поменять в скрипте на $_POST['id']. getimagesize($filename) (а $filename = $image_tmp;) ПОСЛЕ исполнения move_uploaded_file($image_tmp, ...)... Серьёзно? Вы переносите файл в другую директорию (возможно с переименованием), а потом пытаетесь работать с ним по старому пути/имени $image_tmp?move_uploaded_file($thumb, $album_dir); тоже некорректно, так как $thumb - это не файл на диске, это GD-объект в оперативной памяти, и он точно не находится в UPLOAD-директории. dirname() на realpath(). Во-вторых, второй DIRECTORY_SEPARATOR перенесите внутрь круглых скобок realpath(). И в-третьих, не создавайте новых файлов в директории, из которой как раз читаете. Собирайте вывод в переменную, а уже после окончания сканирования директории (т.е. снаружи foreach (scandir($dir) as $node) {}) создавайте файл в сканируемой директории. else:
$errors['success']="Пользователь радостно создан. Аллилуя!";