Strict Standards: Resource ID#36 used as offset, casting to integer (36) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#38 used as offset, casting to integer (38) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#39 used as offset, casting to integer (39) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: PHP – абсолютные и относительные ссылки
ТвойWeb » WebMaster класс » PHP/Perl » PHP – абсолютные и относительные ссылки

Страниц (2): [1] 2 »
 

1. euroboy - 23 Июля, 2005 - 17:18:13 - перейти к сообщению
Надеюсь, что мой вопрос будет по теме.
На моем сайте хочу, используя функцию php, сделать более легче редактируемый сайт, создал четыре файла php top, right, left & footer, которые в свою очередь составляют верхнюю, правую, левую и нижнюю часть выводимой страницы соответственно, однако столкнулся с проблемой, для меня пока не разрешимой, если все эти файлы выложены в корне сайта, то при попытке создать папку (например для статей) и сделать абсолютные или относительные ссылки на эти основные файлы, ссылки (содержащиеся в этих файлах ссылки ) меняются т.е. добавляют к правильному пути еще и адрес той папки в для создания страницы которого они запрашиваются. Например:
Нормально выглядит так: www.site.ru/rutop.php, a в папке со статьями /article в адресе почему то добавляется адрес этой папки и адрес уже выглядит так: www.site.ru/article/rutop.php. Можно безусловно избежать этой проблемы если абсолютно все файлы и соответственно ссылки на них размещать в корне сайта, но эту ужасно не удобно! Надеюсь, кто-нить из гуру и сенсеев php сможет указать правильный путь в решении этого вопроса.
Как же сделать так, чтобы другие скрипты и вообще эти php файлы работали при таких условиях?
Заранее благодарен, НИКолай
2. Владимир - 23 Июля, 2005 - 18:56:59 - перейти к сообщению

Относительная ссылка из /article на файл www.site.ru/rutop.php должна выглядеть так: ../rutop.php
Абсолютная ссылка должна работать однозначно даже если у тебя файлы на другом сервере.
Называй темы так, чтобы было понятно о чем речь.
3. euroboy - 23 Июля, 2005 - 19:28:48 - перейти к сообщению
Ничего подобного и на Денвере и на сайте одна и та же проблема, вот например в корне сайта файл модержащий меню все ссылки отображает ка кположено, то бишь верные пути указывает, как только он используется в папке, т.е. страница со статьей содержащаяся в папке и имеющая функцию инклюд на этот файл с меню, все начинает себя вести по другому (и при относительный и при абсолютном пути до этого файла с меню). И на Денвере и на сайте у хостера появляется в АДРЕСЕ название этой самой злоч\счастной папки в адресе. И ничего поделать не удается, почему и как не знаю потому и обратился за советом, уважаемый админ TvoyWeb не смог дать ответ и порекомендовал выложить этот запрос для всеобщего обсуждения. Вот и вся история.
4. TvoyWeb - 23 Июля, 2005 - 19:56:08 - перейти к сообщению
euroboy пишет:
админ TvoyWeb не смог дать ответ и порекомендовал выложить этот запрос для всеобщего обсуждения.

Нет ты не прав. Я не по этой причине порекомендовал тебе создать тему. А потому что многим это будет полезно знать.

Итак начнем.
К примеру у тебя есть файл left.php с меню.
Примерный код меню:
CODE:
<a href="index.php">Главная</a>
<a href="about.php">О нас</a>
<a href="contact.php">Контакты</a>

Например в корне у тебя есть файл index.php в который инклюдится наш left.php, находящийся тоже в корне. Тогда все ссылки на странице www.site.ru/index.php будут выглядеть как надо.
Но если будем вызывать файл www.site.ru/article/article.php в который также инклюдим файл left.php из корня то все ссылки будут выглядеть как ссылки относительно папки article.
Решение: прописывать в left.php абсолютные ссылки, тогда ссылки не будут меняться независимо куда инклюдится left.php.
5. Владимир - 23 Июля, 2005 - 20:09:44 - перейти к сообщению
Давай так. Что такое инклуд? Это включения некого файла в код страницы(как его части). Раз у тебя страница в /article, то и весь код, включая инклудный файл, лежит в /article. Поэтому ссылки и неверные. Сделай так: перед ссылками в файле меню добавь $papka. Получаться примерно так:
<a href= $papka.'ссылка_меню.php' >
Теперь в файлах php до инклуда задай $papka = "../"; для файлов в папках и $papka = "./"; для файлов основной директории. Должно получиться...
6. euroboy - 24 Июля, 2005 - 10:48:12 - перейти к сообщению
Спасибо за помощь и дельный совет, правда, так и не смог понять, как и куда нужно вставлять код $papka.
Большая часть проблем решена, однако неожиданно возникли и другие, вернее те же самые, только до этого не бросавшиеся в глаза!
После инклюда файла right.php в основную страницу в папке www.site.ru/article/index.php выяснилось следующее:
в данном файле находящемся в корне есть html-код с ссылками а также картинка (формат .jpg) так вот, при нормальном виде ссылки на них должны быть например следующие:
http://www.site.ru/lavka/index.php, а получается вот что -
http://www.site.ru/article/lavka/index.php

с картинкой та же беда. должно быть:
http://www.site.ru/i/shop_pic3.jpg , а на выходе имеем -
http://www.site.ru/article/i/shop_pic3.jpg. Вот так выглядит код этого ресурса непосредственно в самом файле файла right.php:
<img src="i/shop_pic3.jpg" width="152" height="220" border="0">
Даже с учетом всех Ваших рекомендаций, решения и этой проблемы я так и не смог найти, и ничего не остается, как снова обратится к Вам за помощью.
Заранее благодарен, НИКолай.
7. Владимир - 24 Июля, 2005 - 15:42:50 - перейти к сообщению
Цитата:
Решение: прописывать в left.php абсолютные ссылки,
Не устраивает?
Тогда разжовываю с кодом $papka:
ВСЕ ссылки в любом месте сайта должны иметь вид:
CODE:
<a href= $papka.'ссылка.php' >страница</a>

ВСЕ рисунки должны иметь вид:
CODE:
<img src=$papka.'адрес_картинки.jpg' width="152" height="220" border="0">

В начале КАЖДОГО файла .php должна быть строчка:
Для файлов .php лежащих в любой папке
CODE:
$papka = "../";

Для файлов .php лежащих в корне сайта
CODE:
$papka = "./";

ссылка.php и адрес_картинки.jpg - это твои относительные ссылки. Те, что были у тебя изначально.
8. Леголегс - 24 Июля, 2005 - 16:07:50 - перейти к сообщению
euroboy
Я бы тебе посоветовал всё-таки использовать абсолютные ссылки. Если сильно ломает писать
CODE:
<a href="http://site.hoster.ru/somedir/some.php">ссылка</a>
то пиши путь от корневой папки, т.е. от "/"
CODE:
<a href="/somedir/some.php">ссылка</a>
9. Ray Wen - 24 Июля, 2005 - 16:28:06 - перейти к сообщению
euroboy
Владимир
А по моему с самого начала не правильный подход к проблеме...
euroboy, твоя праблема в том что ты не верно видиш суть и выход из проблемы... нужно сейчас думать не о том как исправить свои ошибки, а о том как правильно сделать... А сделать нужно следующее...

Нужно на все взглянуть с другой стороны... ты сейчас пытаешся сделать кучу страничек с содержанием и навесить на них одинаковый шаблон, при этом разбить по класификации... А что если сделать на оборот, сделать шаблон и на него навесить разное содержание? Ты сразу избавляешся от кучи проблем...
Пример: Сделай свой диз в одном или нескольки файлах и прикрепи его к одному, к index.php... Сделай содержание страничек и запихни его в папку page/... При этом ты сможеш в этой папке уже разбивать по папочкам на классы как тебе взблагорасудится... пробем с дизайном у тебя уже не возникнет... В index.php прописываеш всего одну строчку где ты хотел бы видеть свое содержание... примерно так:
CODE:
$id=(isset($_GET['id'])?$_GET['id']:'index'; //Для запуска главной странице при входе без параметров
include ('page/'.((isset($_GET['f']))?$_GET['f'].'/'.$id:$id).'.php');

Естественно что в page/ должен быть файл index.php с содержанием главной страницы... Ссылки на страницы будут выглядеть примерно так: index.php?id=rutop, или index.php?f=article&id=rutop для того чтобы достать файл с содержанием из папки article...
Мда, придется повозится с переделкой, но зато потом будет на много удобнее... полностью решаются проблемы с шаблонами, так как это всего один файл и прописан он только в нем одном... Добавлять тоже удобнее, забрасываеш содержание и даеш где-то ссылку на него...
10. Владимир - 24 Июля, 2005 - 17:45:43 - перейти к сообщению
Ray Wen пишет:
А по моему с самого начала не правильный подход к проблеме...
Абсолютно согласен. Было бы желание сделать один раз большой труд чтобы потом жить спокойно.

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0465]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33