Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   вопрос по PHP функции header (http://forum.oszone.net/showthread.php?t=31152)

mar 11-06-2004 23:07 213670

subj
если я пишу что-нибудь вроде
Код:


header ("Location: http://". *$PHP_SELF. "?id=".$my_id. "#metka_". 25);

то в строке URL красуется все вплоть до знака # (те переход на внутреннюю ссылку не осуществляется :(
Попытки обмануть судьбу при помощи *chr(35) не помогли. Не наступал ли кто-нибудь на подобные грабли? Или вообще, *как бы выйти из ситуации? ну о-ч-ч-ч-ень по внутренним ссылкам пройтись захотелось :)

vadimiron 12-06-2004 00:25 213671

может это спец знак и перед ним надо \ поставить, как \n ??

mar 12-06-2004 11:12 213672

vadimiron
нет, "\" не помогает, пардон, что не написала.


Добавлено:

Попробовала поиграть
rawurlencode('#')
rawurldecode('%23')
Безрезультатно :(

vadimiron 12-06-2004 12:59 213673

mar
А может попробывать Мэта тегом заменить, то есть обычным ХТМЛ????
Конечно не так красиво, но если будет действовать, то почему бы и нет

mar 12-06-2004 13:24 213674

vadimiron
в мрем случае просто невозможно, тк речь идет о том, чтобы отослав данные, человек попадал в ту точку страницы, где эти данные находятся.  Понятно, что в остальных случаях жизни он имеет право приходить на верх страницы, или в любую другую ее точку. (если бы был мета-тег, то все время посылали бы в одно и то же место)
ой! а может ты и прав! можно в шаблон страницы всабачить мета,  которое тем же скриптом и заполнять... Надо подумать :) Спасибо

Но про header все равно непонятно :confused:

mar 13-06-2004 13:18 213675

хм. Похоже, мне надо копать в сторону состава строчки -
если просто написать что-нибудь вроде:
<?
header("Location: http://localhost/test/test.php?id=3331#add_test");
exit;
?>
все работает (те, если не составлять строку программно) Но это бред, особенно, если учесть, что у меня все это передается через промежуточную функцию, где строка генерится.
Если проверить строку прямо перед передачей в header, #куда там есть, а header при таком раскладе метку игнорирует и в строке url броузера она не появляется. А если прямо строку в header забить - все работает. Странно

[s]Исправлено: mar, 13:35 13-06-2004[/s]

Vlad Drakula 13-06-2004 18:25 213676

mar
я как то на такие грабла наступал...
и что то я сделал, давно это было...
если еще надо то я залезу в код и отыщу как я с этим поступал.

mar 13-06-2004 18:28 213677

Vlad Drakula
если не сложно, посмотри pls. Всегда хочется разобраться :)

Vlad Drakula 13-06-2004 18:32 213678

mar
я делал это так:
Код:

header("Location: ./topic.php?topic=$HTTP_POST_VARS[topic]&start=".((($topicdata["nposts"]-$ForumListSise+2)<0)?"0":($topicdata["nposts"]-$ForumListSise+2)));    

  header("Location: ./topic.php?topic=$HTTP_POST_VARS[topic]&start=".((($topicdata[nposts]-$ForumListSise+2)<0)?"0":($topicdata[nposts]-$ForumListSise+2)));

странно но печемуто у меня тут нету якорей, очень станно...

mar 13-06-2004 19:30 213679

Vlad Drakula
:)
нда, без якорей проблем и не было (причем и с ними какие-то странные:
- редирект на файл идет правильно,
"откусывается" только "#имя_метки",
- причем только в тех случаях, когда url собирается в строчку по кусочкам,
- но непосредственно перед попаданием в header
строка полная (вместе с "#имя_метки"). (если проверить echo)
- Если же просто сделать тестовый файл с редиректом на конкретный (пусть тот же самый) url, то все отрабатывает правильно.

Vlad Drakula 13-06-2004 19:44 213680

mar
попродуй его собирать не в "" а в '' может это поможет.


Время: 15:33.

Время: 15:33.
© OSzone.net 2001-