
Предисловие.
Как известно cms Ucoz не работает с php, но имеет возможность импортировать со стороны код страницы с выполненным сценарием php. Делается это своеобразно - в панели управления этой cms в качестве "импорта удаленого кода" задается url страницы с которой нужно импортировать информацию, каждому url'у присваивается собственный код системы - $RCODE_n$, где n - это уникальный ID, т.е. числовое значение, например $RCODE_1$.
В шаблон страницы вставляется этот $RCODE_1$ и при вызове страницы браузером на его место импортируется инфа со страницы, url которой соответствует этому коду. Система Ucoz позволяет создать всего-то 10 таких импортов, т.е с $RCODE_1$ по $RCODE_10$. А как же быть если страниц на сайте 100 и на каждую нужно поместить оригинальный импорт, использовав при этом, по возможности, только один $RCODE_1$ заданный один раз в шаблоне для всего сайта?
В качестве примера обратимся к биржам купли/продажи ссылок, которые предоставляют возможность размещения своего кода на cms Ucoz. Как биржи узнают на какую страницу какую ссылку разместить? Для этого они в качестве вызова своего кода предлагают использовать в шаблоне страницы $DCODE_1$, т.е. вместо R в шаблоне прописывается D. Попробуем разобраться в чем разница. При $RCODE_1$ происходит просто импорт, а при $DCODE_1$ - бирже сначала сообщается url страницы на которой этот $DCODE_1$ расположен и в ответ биржа возвращает текст купленной ссылки для размещения именно на этой странице.
Для наглядности создадим импорт удаленного кода, используем ссылку предоставленную биржой - _http://биржа.ru/code.php?user_hash=841aefb93e553de28747b543a52ca8b&host=мойсайт.ru&url= - здесь видим user_hash, уникальный хеш для каждого пользователя и url (иногда uri, зависит от биржы), которому присваивается адрес страницы с которой происходит обращение к бирже, дальше сервер биржы проверяет куплена ли ссылка на этой странице, если да, то возвращает обратно текст ссылки.
Формулировка задачи.
Имеется два сайта: один на ucoz, другой на хостинге с поддержкой php. Для наглядности так их и назовем - ucoz-1, php-1.
Сайт php-1 имеет 10 страниц, на каждой расположена таблица с данными, таблицы генерируются средствами php.
Постановка задачи.
Нужен php скрипт (он будет находится на сайте php-1), который даст возможность сделать сопоставление url'ов сайтов ucoz-1 и php-1 и при запросе от сайта ucoz-1 отдавать конкретный url одной из страниц сайта php-1, и все это с помощью одного $DCODE_1$, но в случае если сопоставить не с чем вернуть "текст ошибки". Т.е. в скрипте я ручками задаю в формы url'ы которые необходимо сопоставить, скрипт это дело сохраняет или в базу или в txt, а потом по запросу отдает нужную страницу. Проще говоря, мне нужно чтобы на страницу http://ucoz-1/1 выводилась инфа со страницы http://php-1/1. Для наглядности попробую изобразить графически:

Фуухх, еле расписал, попытался по максимому изложить, как известно правильное ТЗ - 50% решения. Надеюсь оно у меня получилось.
Спустя 5 минут, 52 секунды (3.09.2009 - 17:18) FatCat написал(а):
Что значит "сопоставить"?
Спустя 4 часа, 30 минут, 1 секунда (3.09.2009 - 21:48) rixter написал(а):
Вот по этому я и не могу в гугле отыскать 
Под моим пониманием - сопоставить, это значит как бы присвоить одному урлу другой.
Когда идет обращение к скрипту со страницы http://ucoz-1/1 в ответ скрипт должен отдавать содержимое страницы http://php-1/1, когда запрос от http://ucoz-1/2 в ответ http://php-1/2, по сути это наверное редирект, но требуется наличие формы как на картинке, в нее по порядку вбиваются урлы, которые сохранятся либо в базу либу еще как-нибудь.

Под моим пониманием - сопоставить, это значит как бы присвоить одному урлу другой.
Когда идет обращение к скрипту со страницы http://ucoz-1/1 в ответ скрипт должен отдавать содержимое страницы http://php-1/1, когда запрос от http://ucoz-1/2 в ответ http://php-1/2, по сути это наверное редирект, но требуется наличие формы как на картинке, в нее по порядку вбиваются урлы, которые сохранятся либо в базу либу еще как-нибудь.
Спустя 22 минуты, 14 секунд (3.09.2009 - 22:11) FatCat написал(а):
rixter
Теперь понял вроде бы.
Скрипт должен определять с какой страницы его вызвали, и в зависимости от этого давать разные ответы?
Попробую перевести на язык пхп.
Теперь понял вроде бы.
Скрипт должен определять с какой страницы его вызвали, и в зависимости от этого давать разные ответы?
Попробую перевести на язык пхп.
Цитата (rixter @ 3.09.2009 - 22:48) |
Когда идет обращение к скрипту со страницы http://ucoz-1/1 в ответ скрипт должен отдавать содержимое страницы http://php-1/1 |
PHP |
if(stristr($_SERVER['HTTP_REFERER'],'http://ucoz-1/1'))echo file_get_contents('http://php-1/1'); |
Спустя 4 минуты, 41 секунда (3.09.2009 - 22:15) FatCat написал(а):
Тормозить будет такая конструкция.
Не лучше ли генерить разные тексты в одном пхп-файле? Не "сопоставлять" страницам ("подсасывать" страницы), а именно генерировать. И отдавать уже в соответствии с тем, с какой страницы пришел запрос...
У нас тут на форуме похожим образом сделан счетчик переходов по ссылкам / защита ссылок. Если ссылка кликнута из форума - счетчик посчитает переход. Если ссылку послать на мейл другому, и он кликнет из мейла или с другого сайта - скрипт определит, что клик не с нашего форума, и не сделает переход.
Не лучше ли генерить разные тексты в одном пхп-файле? Не "сопоставлять" страницам ("подсасывать" страницы), а именно генерировать. И отдавать уже в соответствии с тем, с какой страницы пришел запрос...
У нас тут на форуме похожим образом сделан счетчик переходов по ссылкам / защита ссылок. Если ссылка кликнута из форума - счетчик посчитает переход. Если ссылку послать на мейл другому, и он кликнет из мейла или с другого сайта - скрипт определит, что клик не с нашего форума, и не сделает переход.
Спустя 31 минута, 59 секунд (3.09.2009 - 22:47) rixter написал(а):
Цитата |
Скрипт должен определять с какой страницы его вызвали, и в зависимости от этого давать разные ответы? |
FatCat, именно так!
Цитата |
Не лучше ли генерить разные тексты в одном пхп-файле? Не "сопоставлять" страницам ("подсасывать" страницы), а именно генерировать. И отдавать уже в соответствии с тем, с какой страницы пришел запрос... |
Дело в том, что исходник будет сгенерированная таблица и ее нужно один ко одному перенести на ucoz.
Так и быть раскрою карты, может так быстрей к решению прийдем

На сайт pxp-1 средствами php будет парсится погода с гисметео для 10 городов. в моем представлении для каждого города должна быть своя страница с табличным выводом погоды. Эту же погоду, в том же виде, т.е. каждую страницу с таблицей нужно по запросу передавать на сайт ucoz-1. А скрипт должен правильно обработать запрос и выдать нужную страницу.
Спустя 8 часов, 13 минут, 27 секунд (4.09.2009 - 07:01) hara_ написал(а):
Раз так, - то вам уже всё сказали.
Если всего лишь несколько страниц, так и пропишите тот код который вам дали в
файл который подключается на всех этих страницах.
Тут можно и без формы обойтись, просто сохранить в виде массива.
array(
'ucoz-1/122323'=>'php-1/1',
и т.д.
)
Ну да код нужно переделать слегка что бы он проходил по массиву значений и тянул ту страницу которую нужно.
Если всего лишь несколько страниц, так и пропишите тот код который вам дали в
файл который подключается на всех этих страницах.
Тут можно и без формы обойтись, просто сохранить в виде массива.
array(
'ucoz-1/122323'=>'php-1/1',
и т.д.
)
Ну да код нужно переделать слегка что бы он проходил по массиву значений и тянул ту страницу которую нужно.
Спустя 1 час, 42 минуты, 10 секунд (4.09.2009 - 08:43) glock18 написал(а):
почему не mod rewrite? зачем велосипед вообще изобретать?
Спустя 28 минут, 54 секунды (4.09.2009 - 09:12) FatCat написал(а):
Цитата (glock18 @ 4.09.2009 - 09:43) |
почему не mod rewrite? |
Месье знает толк в извращениях...

Парсить по требованию будете, или по крону? Я бы сделал на тасках: это немного сложней, но зато экономия ресурсов серверов будет существенной.
Хотя, как вариант, можно и на редиректах сварганить, и экономично для серверов, и просто в написании; одна беда, поисковки не индексируют страницы по редиректам.
Спустя 4 часа, 45 минут, 13 секунд (4.09.2009 - 13:57) rixter написал(а):
Цитата |
Парсить по требованию будете, или по крону? Я бы сделал на тасках: это немного сложней, но зато экономия ресурсов серверов будет существенной. |
С парсером пока детально не разбирался, знаю только, что он работает, парсит из xml. По требованию он это делает или лучше настроить крон я пока не знаю. Кстати, я немного попутал, не с гисметео, а с визер.ко.юа буду парсить, у них побольше возможностей и за бесплатно в отличии от гисметео.
Можно поподробней, что такое "на тасках"?
modrewrite это с помощью .htacces, правильно? Мне впринципе-то не надо, чтобы сайт на php поисковики индексировали, просто нужны возможности php. Лучше вообще его закрыть от посторонних, дать только доступ мне и запросам от сайта на ucoz, это ведь можно сделать с помощью .htacces?
Спасибо всем за внимание к моей проблемке, буду пробовать ваши советы. В php я конечно чайник, но на выходных попробую набросать примерчик.
Спустя 4 часа, 56 минут, 5 секунд (4.09.2009 - 18:53) FatCat написал(а):
Цитата (rixter @ 4.09.2009 - 14:57) |
Можно поподробней, что такое "на тасках"? |
Предположим, что прогноз погоды меняется каждый час.
Можно по крону запустить каждый час снимать инфу. Но вдруг с 3 до 6 ночи не будет ни одного посетителя? Получится, что скрипт трижды отмолотил напрасно.
Решение на тасках:
При самом первом запросе скрипт парсит погодник, результат запроса сохраняется в файл с именем:
PHP |
$file = time().".answer.txt"; |
Пишется в директорию $dir.
При повторном запросе ищется этот файл и смотрится время его создания:
При повторном запросе ищется этот файл и смотрится время его создания:
PHP |
$open_dir=opendir($dir); |
Дальше смотрим, прошел ли час с момента создания файла, и если нет, то отдаем файл, а если да, то удаляем файл и парсим по новой:
PHP |
if((time()-$time)>3600) |
Спустя 7 месяцев, 25 дней, 22 часа, 43 минуты, 25 секунд (30.04.2010 - 17:37) Axi 42 написал(а):
Простите что может быть не в ту тему, но у меня имеется вопрос.
Допустим у меня имеется скрипт, он обязан обновляться каждую секунду, то есть обновил я страницу и вывод результата изменился(у меня мониторинг игрового сервера, и соответственно он должен выводить сколько людей на сервера на данный момент), но чертов юкоз хешит минимум на час! как мне обойти это хэширование?
Допустим у меня имеется скрипт, он обязан обновляться каждую секунду, то есть обновил я страницу и вывод результата изменился(у меня мониторинг игрового сервера, и соответственно он должен выводить сколько людей на сервера на данный момент), но чертов юкоз хешит минимум на час! как мне обойти это хэширование?