location - теряется якорь

mitrich-demon

Новичок
location - теряется якорь

Суть такова:
жму сабмит формы
скрипт получил пост проверил его и обнаружил что не все поля заполнены. Он делает после этого вот что:
header("Location: ?c=ad.work&act=a&err=1#at_form");
exit;

однако почему то браузер идет по ?c=ad.work&act=a&err
т.е. без якоря
почему то теряется якорь
в мозиле, опере якорь не теряется, в IE теряется

Привожу заголовки:

POST /hiddenplace/main.php?c=ad.work HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/msword, */*
Referer: http://hppsecrets.local/hiddenplace/main.php?c=ad.work&act=a
Accept-Language: ru
Content-Type: multipart/form-data; boundary=---------------------------7d72176220bb8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Host: hppsecrets.local
Content-Length: 496
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: test=test; PHPSESSID=961ca36ca4adf95727ea6d80f89dc0fb

-----------------------------7d72176220bb8
Content-Disposition: form-data; name="form[frm_fname]"


-----------------------------7d72176220bb8
Content-Disposition: form-data; name="form[frm_lname]"


-----------------------------7d72176220bb8
Content-Disposition: form-data; name="pic_path"; filename=""
Content-Type: application/octet-stream


-----------------------------7d72176220bb8
Content-Disposition: form-data; name="ok"

a
-----------------------------7d72176220bb8--


HTTP/1.1 302 Found
Date: Mon, 19 Mar 2007 09:27:06 GMT
Server: Apache/1.3.33 (Win32) PHP/5.0.4
X-Powered-By: PHP/5.0.4
Set-Cookie: PHPSESSID=961ca36ca4adf95727ea6d80f89dc0fb; path=/; domain=hppsecrets.local
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: ?c=ad.work&act=a&err=1#at_form
Keep-Alive: timeout=15, max=92
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html

GET /hiddenplace/main.php?c=ad.work&act=a&err=1 HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/msword, */*
Referer: http://hppsecrets.local/hiddenplace/main.php?c=ad.work&act=a
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Host: hppsecrets.local
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: test=test; PHPSESSID=961ca36ca4adf95727ea6d80f89dc0fb

HTTP/1.1 200 OK
Date: Mon, 19 Mar 2007 09:27:06 GMT
Server: Apache/1.3.33 (Win32) PHP/5.0.4
X-Powered-By: PHP/5.0.4
Set-Cookie: PHPSESSID=961ca36ca4adf95727ea6d80f89dc0fb; path=/; domain=hppsecrets.local
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Keep-Alive: timeout=15, max=91
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
 

mitrich-demon

Новичок
не помогло :(

HTTP/1.1 302 Found
Date: Mon, 19 Mar 2007 09:55:21 GMT
Server: Apache/1.3.33 (Win32) PHP/5.0.4
X-Powered-By: PHP/5.0.4
Set-Cookie: PHPSESSID=df8cb93a5b2770ef2235142c594d2f52; path=/; domain=hppsecrets.local
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: /hiddenplace/main.php?c=ad.work&act=a&err=1#at_form
Keep-Alive: timeout=15, max=89
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html

GET /hiddenplace/main.php?c=ad.work&act=a&err=1 HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/msword, */*
Referer: http://hppsecrets.local/hiddenplace/main.php?c=ad.work&act=a
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Host: hppsecrets.local
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: test=test; PHPSESSID=df8cb93a5b2770ef2235142c594d2f52
 

mitrich-demon

Новичок
HTTP/1.1 302 Found
Date: Mon, 19 Mar 2007 10:10:18 GMT
Server: Apache/1.3.33 (Win32) PHP/5.0.4
X-Powered-By: PHP/5.0.4
Set-Cookie: PHPSESSID=df8cb93a5b2770ef2235142c594d2f52; path=/; domain=hppsecrets.local
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: http://hppsecrets.local/hiddenplace/main.php?c=ad.work&act=a&err=1#at_form
Keep-Alive: timeout=15, max=96
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html

GET /hiddenplace/main.php?c=ad.work&act=a&err=1 HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/msword, */*
Referer: http://hppsecrets.local/hiddenplace/main.php?c=ad.work&act=a
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Host: hppsecrets.local
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: test=test; PHPSESSID=df8cb93a5b2770ef2235142c594d2f52
 

Фанат

oncle terrible
Команда форума
прекрасно.
а проблема-то решилась? якорь в адресной строке виден, на него фокус переходит?
 

mitrich-demon

Новичок
В том то и дело что не решилась
GET /hiddenplace/main.php?c=ad.work&act=a&err=1 HTTP/1.1
Браузер идет как видно из заголовков без якоря.

-~{}~ 19.03.07 13:24:

тестовый пример из 3х строчек у меня работает. А в проекте вот такая грабля. Не пойму в какую сторону вообще копать, как отлаживать, когда в заголовках вот такое происходит!
 

Фанат

oncle terrible
Команда форума
А с какой стати браузер должен куда-то ИДТИ?
И что забыл якорь в НТТР запросе?
 

mitrich-demon

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

Фанат

oncle terrible
Команда форума
ну, про фокус - это я по неграмотности сказал. не разбираюсь я в клиентской терминологии.
имелось в виду - срабатывает ли якорь.

вообще, странно, конечно.
 

mitrich-demon

Новичок
Браузер получает заголовок в котором: Location: http://hppsecrets.local/hiddenplace/main.php?c=ad.work&act=a&err=1#at_form
таким образом, браузер должен выполнить GET-запрос:
GET /hiddenplace/main.php?c=ad.work&act=a&err=1#at_form HTTP/1.1
а он почему то выполняет
GET /hiddenplace/main.php?c=ad.work&act=a&err=1 HTTP/1.1

-~{}~ 19.03.07 13:29:

чего придираться на счет ИДТИ?
 

Фанат

oncle terrible
Команда форума
с какой стати браузер должен исполнять GET-запрос с якорем?
что якорь забыл в НТТР запросе? Кому он нужен на сервере?
 

mitrich-demon

Новичок
На сервере якорь никому не нужен, но он должен присутствовать в адресной строке, чтобы браузер прокрутил свой скроллер к месту где брошен якорь.
 

Фанат

oncle terrible
Команда форума
правильно.
вот и смотри на адресную строку.
На кой тебе НТТР запрос-то сдался?

попробуй сравнить НТТР ответы тестового примера и неработающего.
если совпадают, то дело в барузере
 

mitrich-demon

Новичок
удивительно что в мозиле и опере все работает хорошо

-~{}~ 19.03.07 13:38:

в адресной строке якоря нет. сейчас сравню ответы

-~{}~ 19.03.07 13:41:

Заголовки рабочего примера:

POST /hiddenplace/test.php HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/msword, */*
Referer: http://hppsecrets.local/hiddenplace/test.php
Accept-Language: ru
Content-Type: multipart/form-data; boundary=---------------------------7d7b31b220bb8
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Host: hppsecrets.local
Content-Length: 141
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: PHPSESSID=961ca36ca4adf95727ea6d80f89dc0fb; test=test

-----------------------------7d7b31b220bb8
Content-Disposition: form-data; name="test"

ok
-----------------------------7d7b31b220bb8--


HTTP/1.1 302 Found
Date: Mon, 19 Mar 2007 10:40:27 GMT
Server: Apache/1.3.33 (Win32) PHP/5.0.4
X-Powered-By: PHP/5.0.4
Set-Cookie: PHPSESSID=961ca36ca4adf95727ea6d80f89dc0fb; path=/; domain=hppsecrets.local
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: ?c=ad.work&act=a&err#at_form
Keep-Alive: timeout=15, max=98
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html

GET /hiddenplace/test.php?c=ad.work&act=a&err#at_form HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/msword, */*
Referer: http://hppsecrets.local/hiddenplace/test.php
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Host: hppsecrets.local
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: PHPSESSID=961ca36ca4adf95727ea6d80f89dc0fb; test=test

HTTP/1.1 200 OK
Date: Mon, 19 Mar 2007 10:40:27 GMT
Server: Apache/1.3.33 (Win32) PHP/5.0.4
X-Powered-By: PHP/5.0.4
Set-Cookie: PHPSESSID=961ca36ca4adf95727ea6d80f89dc0fb; path=/; domain=hppsecrets.local
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Keep-Alive: timeout=15, max=97
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html


Заголовки не рабочего примера:

POST /hiddenplace/main.php?c=ad.work HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/msword, */*
Referer: http://hppsecrets.local/hiddenplace/main.php?c=ad.work&act=a
Accept-Language: ru
Content-Type: multipart/form-data; boundary=---------------------------7d72d0241c05ae
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Host: hppsecrets.local
Content-Length: 501
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: test=test; PHPSESSID=df8cb93a5b2770ef2235142c594d2f52

-----------------------------7d72d0241c05ae
Content-Disposition: form-data; name="form[frm_fname]"


-----------------------------7d72d0241c05ae
Content-Disposition: form-data; name="form[frm_lname]"


-----------------------------7d72d0241c05ae
Content-Disposition: form-data; name="pic_path"; filename=""
Content-Type: application/octet-stream


-----------------------------7d72d0241c05ae
Content-Disposition: form-data; name="ok"

a
-----------------------------7d72d0241c05ae--


HTTP/1.1 302 Found
Date: Mon, 19 Mar 2007 10:41:36 GMT
Server: Apache/1.3.33 (Win32) PHP/5.0.4
X-Powered-By: PHP/5.0.4
Set-Cookie: PHPSESSID=df8cb93a5b2770ef2235142c594d2f52; path=/; domain=hppsecrets.local
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: http://hppsecrets.local/hiddenplace/main.php?c=ad.work&act=a&err=1#at_form
Keep-Alive: timeout=15, max=85
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html

GET /hiddenplace/main.php?c=ad.work&act=a&err=1 HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, application/vnd.ms-excel, application/msword, */*
Referer: http://hppsecrets.local/hiddenplace/main.php?c=ad.work&act=a
Accept-Language: ru
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30)
Host: hppsecrets.local
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: test=test; PHPSESSID=df8cb93a5b2770ef2235142c594d2f52

HTTP/1.1 200 OK
Date: Mon, 19 Mar 2007 10:41:36 GMT
Server: Apache/1.3.33 (Win32) PHP/5.0.4
X-Powered-By: PHP/5.0.4
Set-Cookie: PHPSESSID=df8cb93a5b2770ef2235142c594d2f52; path=/; domain=hppsecrets.local
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Keep-Alive: timeout=15, max=91
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html
 

Фанат

oncle terrible
Команда форума
интересные у тебя методы - вывалить гору не относящихся к вопросу текстов, и колупаться в них.
Ну, если ты сам мазохист, то меня уж уволь от такого удовольствия
 

mitrich-demon

Новичок
Путем упрощения нерабочего скрипта я выявил место, в котором происходит "пропадание" якоря.

Этот скрипт отрабатывает якорь:
<?php

if (isset($_POST['ok'])) {
header ("Location: /hiddenplace/test.php?err=1#at_form");
exit;
}

echo "
<a name='at_form'></a>
<form method='post' enctype='multipart/form-data'>
<input type='submit' name='ok' value='a'>
</form>
";

?>

а если форме подставить enctype='multipart/form-data' - то скрипт перестает отрабатывать якорь, якорь отбрасывается в адресной строке:

<?php

if (isset($_POST['ok'])) {
header ("Location: /hiddenplace/test.php?err=1#at_form");
exit;
}

echo "
<a name='at_form'></a>
<form method='post' enctype='multipart/form-data'>
<input type='submit' name='ok' value='a'>
</form>
";

?>

Что скажете на этот счет?

-~{}~ 19.03.07 15:24:

таким образом IE обрезает все якоря в заголовке при посылке ему HTTP-заголовка Location после обработки формы, у которой свойство enctype установлено в multipart/form-data.

Как лечить?
 
Сверху