Снова насчёт хедера и решетки (просьба не удалять)

Ufai Rock

Новичок
Снова насчёт хедера и решетки (просьба не удалять)

В общем, я на этой странице http://phpclub.ru/talk/showthread.php?s=&threadid=94162&rand=21 задавал вопрос. Искал косяк банально начав с простого редиректа и потом наростил его до того момента, где начали появлятся глюки (да-да, именно индукцией). И я его нашёл. И был очень удивлен.
Дело в том, что данные передавались странице через форму (методом пост), в action которой был прописан, как вы догадались, адресс страницы, в этом адресе была переменная iakori=2 (допустим), страница-обработчик функцией header() переделывала эту переменную и добавляла в конец адреса в виде "#2", т.е. должна была переделывать, но не делала этого из-за, внимание, инпута для загрузки файла, да, того самого <input type=file name=file>, который был в форме, причём если у него не был прописан нейм - всё ок, решетка шла в адресную строку, якорь срабатывал, стоит только прописать нейм этому инпуту - никакой решетки в адресе нет и в помине.
Может хоть кто-нибудь мне это научно обосновать??
Если вам не лень, проверьте это у себя, буду жутко благодарен.
Вот то что работает:
PHP:
<?php 
if ($_GET['action']=='check'){
header('Location: test.php#'.$_GET['mark']); 
}
echo "<form action='?action=check&mark=3' method=post enctype='multipart/form-data'>
<input type=file><br>
<input type=submit value="Проверить">
</form>";
?>
А вто то что уже нет:
PHP:
<?php 
if ($_GET['action']=='check'){
header('Location: test.php#'.$_GET['mark']); 
}
echo "<form action='?action=check&mark=3' method=post enctype='multipart/form-data'>
<input type=file [B]name=imya[/B]><br>
<input type=submit value="Проверить">
</form>";
?>
Попробуйте просто создать страницу test.php, вставить туда код и проверить.
 

jrip

Новичок
А зачем прописывать именно вот так:
<form action='?action=check&mark=3'

почему нельзя использовать hidden поля формы?

Вообще я у себя попробовал, сие явление наблюдается. Причём только в IE, в опере и фаерфоксе всё нормально работает.
Наверное глюк IE :)
 

Ufai Rock

Новичок
спасибо, что попробовал.
если ты имеешь ввиду скрытые поля для передачи переменных, то я пробовал... тот же косяк. Это просто финиш какой- то )
 

jrip

Новичок
Ну ты всё-таки через скрытые сделай, а то я так к примеру сразу и не понял что тут происходит.
А вообще если без вариантов, т.е. нужно всё-таки чтобы решётка появлялась, то можно попробовать сделать двойным редиректом.
Хотя это конечно будет несколько извращённо...
 

hermit_refined

Отшельник
Ufai Rock
поздравляю с долгожданным успехом.
да, в firefox и опере работает, в ie - нет.
навскидку - i think, багофича ie.

побороть можно как минимум двумя способами: двойной редирект или редирект через meta.
 

Ufai Rock

Новичок
jrip, hermit_refined
хмм... спасибо за варианты решения, обязательно попробую.

-~{}~ 11.12.06 03:40:

двойной редирект выполняет задачу, да... но надеюсь это не слишком пагубно отразиться на работе скрипта
Всем спасибо, если еще будут мнения - велкам.
P.S. Фанат, думаю, всё-таки я ошибался, когда говорил что всегда виноват программист...
 

denver

?>Скриптер
Ufai Rock
Действительно бага в IE.
А по поводу вины... дебажить нужно было с самого начала :)
А самое главное: твой пост здесь содержит минимальный но достаточный код который позволяет повторить твой баг. А в предыдущем топике только слова.
 
Сверху