Артефакт
В форме имеются инпуты типа текст, имена которых имеют вид названия файла, т.е. <input type='text' name='foto.jpg'> каково же было мое удивление, когда я узнал, что определяется не $_POST['foto.jpg']($_GET['foto.jpg']), а $_POST['foto_jpg']($_GET['foto_jpg'])! никогда не слышал о такой замене:) php какой-то из 4.3.x apache 2.0.x
Точки в именах приходящих переменных
Как правило, PHP не меняет передаваемых скрипту имен переменных. Однако следует отметить, что точка не является корректным символом в имени переменной PHP. Поэтому рассмотрим такую запись:
Код:
<?php
$varname.ext; /* неверное имя переменной */
?>
$varname.ext; /* неверное имя переменной */
?>
В данном случае интерпретатор видит переменную $varname, после которой идет оператор конкатенации, а затем голая строка (то есть, не заключенная в кавычки строка, не соответствующая ни одному из ключевых или зарезервированных слов) 'ext'. Очевидно, что это не даст ожидаемого результата.
По этой причине важно заметить, что PHP будет автоматически заменять любые точки в именах приходящих переменных на символы подчеркивания.