Извиняюсь за дурацкий вопрос, но меня гложут сомнения, насколько корректна такая строчка: $_FILES['userfile']['name'] = strtolower($_FILES['userfile']['name']); - это перевод названия загружаемого файла в нижний регистр. Меня смущает, что элементу массива присвоился такой же элемент массива, только маленькими буквами. да и вообще, как это с точки зрения грамотности, безопасности и т.д. P.S. код рабочий.