-
Пишу
$url="script.php?p=34#anchor";
header("Location: $url");
А получаю
http://localhost/script.php?p=34
Пишу
$url=URLEncode("script.php?p=34#anchor");
header("Location: $url");
А апч говорит
Forbidden
You don\'t have permission to access
http://localhost/script.php?p=34#anchor on this server
Что делать что бы якоря засылать???
-
Имхо тут из-за спец символов ботва. Выходов 2 как мне кажется - 1) двойные кавычки 2) обратные слэши.
Я верно мыслю, спецы? :)
-
Всё перепробовал не помогло.
-
Alexandr
Ну второй вариант точно неправильный. А первый по идее должен работать.
-
Ну второй вариант точно неправильный. А первый по идее должен работать.
Ну второй-то да. Я просто по всякому экспериментировал.
А первый ни хрена не робит. Выкидывает что после # включительно.
-
У меня твой пример работает без проблем.
-
$url=\'"script.php?p=34#anchor"\';
А вот так пробовал тоже?
-
Попробуй так
$url=htmlentities($url);
если вдруг не сработает
вместо "#" пиши "%23" - это точно должно работать!
-
Спокуха мальчики и девочки:
$url="test.php?p=blabla#anchor";
if(!$p){header("Location: $url");exit();}
if($p){?>
print "P = $p
";
print_r(get_defined_vars());
?>
}?>
-
AlieN Кто еще мальчик?
Спокуха мальчики и девочки:
-ну и что ты этим хотел сказать? Не думаю что твой код будет работать.
-
AlieN
Я тоже не понял, в чем фишка твоей версии.
-
Ardzhan
Не думаю что твой код будет работать.
Проверить не судьба? Почему ты думаешь что он не будет работать ???
GotZfild
Apache 1.3.22
PHP 4.1.2 у меня редирект идеально работает без всякого urlencode, когда его включаешь то пишет как раз то , про что
говорил Alexandr :
Forbidden
You don\'t have permission to access
в чем фишка твоей версии
А в чём фишка кодирование символа "#" ?
-
AlieN
Так ведь человек обратился с тем же кодом, что ты и предложил, только немного "завернув" это в другой код, но суть-то остается той же.
Вот смотри
Пишу
$url="script.php?p=34#anchor";
header("Location: $url");
У тебя
$url="test.php?p=blabla#anchor";
if(!$p){header("Location: $url");exit();}
А насчет кодирования, я сразу сказал, что это неверно.
-
GotZfild
и что?
у меня в коде видно
print_r(get_defined_vars());
вот смотри результат вывода:
[url] => test.php?p=blabla#anchor
[SERVER_SOFTWARE] => Apache/1.3.24 (Win32) PHP/4.1.3-dev
[SystemRoot] => C:\\\\WINDOWS
[WINDIR] => C:\\\\WINDOWS
[GATEWAY_INTERFACE] => CGI/1.1
[SERVER_PROTOCOL] => HTTP/1.1
[REQUEST_METHOD] => GET
[QUERY_STRING] => p=blabla
[REQUEST_URI] => /test.php?p=blabla#anchor
[SCRIPT_NAME] => /test.php
[PATH_TRANSLATED] => c:/apache/htdocs/test.php
[PHP_SELF] => /test.php
[argv] => Array
(
)
[argc] => 1
И в чём я не прав?
-
AlieN
Проверить не судьба? Почему ты думаешь что он не будет работать ???
Проверил, но не твой. Начал с самого простого. Что вы тут мозги парите!!!
$url="script.php?p=34#anchor";
header("Location: $url");
?>
Работает на ура!!!
-
AlieN
И в чём я не прав?
Я не говорю, что ты не прав. Это и у меня работает без проблем. Просто если у человека его вариант не работает, то и твой, соответственно, тоже.
-
GotZfild
Проверил, но не твой.
хм....
Чем они принципиально отличаются?
$url="test.php?p=blabla#anchor"; это мой вариант
$url="script.php?p=34#anchor"; это твой
Что вы тут мозги парите!!!
Что ты паришь?!?!?!? :)
-
$url="script.php?p=34#anchor"; это твой
AlieN
Ты не мои сообщения цитируешь.
И тем более такого я уж не писал:
Что вы тут мозги парите!!!
Чем они принципиально отличаются?
$url="test.php?p=blabla#anchor"; это мой вариант
$url="script.php?p=34#anchor"; это твой //еще раз, это не мой
Об этом и речь, что они ничем не отличаются. Поэтому, если его вариант не работает, то и твой тоже будет нерабочим.
-
Так ребята тут у меня вообще мистика какая-то:
мой вариант (самый элементарный у меня тоже работает)........
Есть достаточно большой и сложный скрипт, который имеет следующию структуру:
////////////////////////
function page1(){
.............//здесь есть тег с якорем.
}
function page2(){
.............
}
function page3(){
header (Location: script.php?page=main#anchor);
}
switch ($page){
case "main": page1();break;
case "detail": page2();break;
case "add": page3();break;
}
ОН НЕ РОБИТ!!!
Если убрать остальные процедуры, то всё заработает!
Не знаю чё делать....... Буду методом проб и ошибок искать момент после которого перестают работать якоря :-(
ЗЫ а скрипт действительно большой :-(
-
AlieN
Чем они принципиально отличаются?
$url="test.php?p=blabla#anchor";
if(!$p){header("Location: $url");exit();}
if($p){?>
print "P = $p
";
print_r(get_defined_vars());
?>
}?>
Это твой код! Зачем проверять переменную $p??? Зачем тут выводить html?
А это мой:
$url="test.php?p=blabla#anchor";
header("Location: $url");
Gj-моему твой гораздо длиннее
-
Это твой код! Зачем проверять переменную $p???
Если не указана переменная p то скрипт редиректит сам на себя и передаёт переменную $p
[OFF]В лом было на два файла разбивать[/OFF]