[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Скрипт сопоставления url'ов
rixter
Друзья, ищется бесплатное или недорогое smile.gif решение одной, с виду простенькой, задачи. К сожалению поиск ничего не дал, возможно потому, что я не правильно формулирую запрос. Чтобы было понятней, что собственно требуется, я разобью пост на несколько пунктов, если вы знакомы с системой Ucoz, то предисловие можно не читать, а перейти сразу к формулировке задачи.

Предисловие.
Как известно 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. Для наглядности попробую изобразить графически:

user posted image

Фуухх, еле расписал, попытался по максимому изложить, как известно правильное ТЗ - 50% решения. Надеюсь оно у меня получилось.



Спустя 5 минут, 52 секунды (3.09.2009 - 17:18) FatCat написал(а):
Что значит "сопоставить"?

Спустя 4 часа, 30 минут, 1 секунда (3.09.2009 - 21:48) rixter написал(а):
Вот по этому я и не могу в гугле отыскать smile.gif

Под моим пониманием - сопоставить, это значит как бы присвоить одному урлу другой.
Когда идет обращение к скрипту со страницы 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.

Так и быть раскрою карты, может так быстрей к решению прийдем smile.gif.
На сайт pxp-1 средствами php будет парсится погода с гисметео для 10 городов. в моем представлении для каждого города должна быть своя страница с табличным выводом погоды. Эту же погоду, в том же виде, т.е. каждую страницу с таблицей нужно по запросу передавать на сайт ucoz-1. А скрипт должен правильно обработать запрос и выдать нужную страницу.

Спустя 8 часов, 13 минут, 27 секунд (4.09.2009 - 07:01) hara_ написал(а):
Раз так, - то вам уже всё сказали.

Если всего лишь несколько страниц, так и пропишите тот код который вам дали в
файл который подключается на всех этих страницах.

Тут можно и без формы обойтись, просто сохранить в виде массива.
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?

Месье знает толк в извращениях... rolleyes.gif


Парсить по требованию будете, или по крону? Я бы сделал на тасках: это немного сложней, но зато экономия ресурсов серверов будет существенной.

Хотя, как вариант, можно и на редиректах сварганить, и экономично для серверов, и просто в написании; одна беда, поисковки не индексируют страницы по редиректам.

Спустя 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);
while(
$tmp_name=readdir($open_dir))
{
    if(
stristr($tmp_name,"".answer.txt""))
        
$time intvalstr_replace(".answer.txt","",$tmp_name) );
}

Дальше смотрим, прошел ли час с момента создания файла, и если нет, то отдаем файл, а если да, то удаляем файл и парсим по новой:
PHP
if((time()-$time)>3600)
{
    
unlink($dir."/".$time.".answer.txt");
    
// Парсим заново и пишем новый файл, отдаем новые результаты.
}
else
{
    
$result file_get_contents($dir."/".$time.".answer.txt");
    
// отдаем результат из кешированного файла
}

Спустя 7 месяцев, 25 дней, 22 часа, 43 минуты, 25 секунд (30.04.2010 - 17:37) Axi 42 написал(а):
Простите что может быть не в ту тему, но у меня имеется вопрос.
Допустим у меня имеется скрипт, он обязан обновляться каждую секунду, то есть обновил я страницу и вывод результата изменился(у меня мониторинг игрового сервера, и соответственно он должен выводить сколько людей на сервера на данный момент), но чертов юкоз хешит минимум на час! как мне обойти это хэширование?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.