Если это ваш первый визит, рекомендуем почитать справку по форуму. Для размещения своих сообщений необходимо зарегистрироваться. Для просмотра сообщений выберите раздел. |
![]() |
||
![]() |
Что касается web-а... WebMaster-а Воронежа - объединяйтесь! |
![]() |
|
Опции темы
![]() |
![]() |
#1 |
Форумец
Сообщений: 25
Регистрация: 03.12.2002
Возраст: 63
![]() |
![]()
Здравствуйте СС!
Вы однажды очень здорово мне помогли, поэтому хотел бы задать еще один вопрос. У меня есть cgi-скрипт, который открывает определенную страничку в зависимости от рефссылки, например при нажатии на баннер со ссылкой http://site.com/cgi-bin/file.cgi?111 в страничку вставляются данные из файла 111.dat Если переход осуществляется по несуществующей (ошибочной) ссылке, например, http://site.com/cgi-bin/file.cgi?1111, то "Server Error". Так вот вопрос - какую команду можно добавить, чтобы в таких случаях грузилась главная страница http://site.com Заранее благодарю за ответ. |
![]() |
![]() |
![]() |
#2 |
няшечка
Сообщений: 5,311
Регистрация: 13.06.2003
![]() |
Гм
Вообще-то от настроек сервера зависит, будет он выдавать мессагу об ошибке.
например, если написать: [php]if (!include('rr.htm')) {echo "qwewer";}[/php] то в зависимости от настроек ПХП получишь либо qwewer , либо что-то типа Warning: Failed opening 'rr.htm' for inclusion (include_path='') in c:\www\www1\test\index.phtml on line 3 qwewer Так что пробовай. |
![]() |
![]() |
![]() |
#5 |
Memory test: failed
|
acb, если хочешь, кинь его на derick2001@mail.ru, посмотрю, подправлю, скину тебе исправленный - на словах достаточно муторно объяснять не зная структуры скрипта.
|
![]() |
![]() |
![]() |
#6 | |
Форумец
Сообщений: 25
Регистрация: 03.12.2002
Возраст: 63
![]() |
Цитата:
Кусок скрипта скинул на Ваш e-mail |
|
![]() |
![]() |
![]() |
#7 | ||
Форумец
|
Я правда не доконца понял, но попробую все таки посоветовать...
в корневую директорию кладешь файл .htaccess ----------------------------------------------------------------- ErrorDocument 404 / ----------------------------------------------------------------- он все не валидные ссылки будет валить в корень сайта, но мне кажется что ты делаешь что-то типа банерной сети, и тогда у тебя в строке запроса после `?` идет ссылка, то тебе нужно проверять ее на валидность, то есть если сайт присутствует в ДНС, то он валиден... Такую валидность можно сделать через whois. В PHP можно поэкспериментировать с сокетами. CC добавил [date]1059046301[/date]: Цитата:
@include_once ("test.php"); но в таком случае в логи варнинги будут валится, поэтому я пользуюсь вот таким вариантом file_exists("test.php")?include_once("test.php"):n ull; это работает безотказно. но когда ты делаешь несколько включений файла внутри которого есть класс, то можешь напороться на ошибку "класс уже определен" поэтому второй вариант ("он чисто конкретно для PHP4") скрещиваем с тем что было раньше в PHP3 и все про это забыли ![]() в файле test.php ____________________________ <? $TEST_PHP = (bool)true; /* other stuff :^) */ ?> __________________________ там где делаем включение ($TEST_PHP && file_exists("test.php"))?include_once("test.php"): null; вот теперь все будет кошерно, можно писать модульно не мучаясь о забытых лишних включениях... ![]() ЗЫЖ хот меня после отпуска прет ![]() CC добавил [date]1059046491[/date]: Цитата:
![]() ![]() ![]() |
||
![]() |
![]() |
![]() |
#8 |
Форумец
Сообщений: 25
Регистрация: 03.12.2002
Возраст: 63
![]() |
СС, спасибо за ответ.
Я скидывал кусок скрипта по мылу, но предлагаемый вариант не заработал. Сейчас я в отпуске и могу только читать почту и форумы. FTP нет. Когда вернусь, то обязательно попробую предложенные варианты и свяжусь с Вами. |
![]() |
![]() |
![]() |
#9 | |
Форумец
|
Цитата:
![]() я тогда Аську дам |
|
![]() |
![]() |
![]() |
#10 |
Архитектор
Сообщений: 193
Регистрация: 28.03.2003
![]() |
читал, читал - ничего не понял и подумал: "может встрять?"
человек про Перл спрашивал а вы ему тут про PHP втираете ![]() кароче, склифасовский, логика работы скрипта такая: // смотрим что передали скрипту $query=$ENV{'QUERY_STRING'}; // проверяем есть у нас файл $query.dat ? if (файл $query.dat существует) { //есть: читаем этот файл и выводим его содержимое print "Content-Type: text/html\n\n"; read file все дела; print ... ... ... ...; } else { // нет: делаем редирект на главную страницу print "Location: http://site.com\n\n"; } |
![]() |
![]() |
![]() |
#11 | |
Форумец
|
Цитата:
каждый просто думает по своему а язык на котором реализовывать будешь - роли не играет... можно хоть на bash замочить... сложности в этом нету... ГЛАВНОЕ ИДЕЯ.... ИДЕ Я ЕСТЬ ![]() |
|
![]() |
![]() |
![]() |
#12 |
Форумец
Сообщений: 25
Регистрация: 03.12.2002
Возраст: 63
![]() |
Здравствуйте, товарищи!
Благодарю за ответ. Да, скрипт на PERL. Вот как он выглядит: #!/usr/bin/perl #file.cgi sub urldecode{ local($val)=@_; $val=~s/\+/ /g; $val=~s/%([0-9A-H]{2})/pack('C',hex($1))/ge; return $val; } $graphics="http://mysite.com/images"; $filename=$ENV{'QUERY_STRING'}.'.dat'; open (F,$filename) || die "Can't open $filename: $!"; read(F,$data,-s F); close(F); print "Content-Type: text/html\n\n"; print "<HTML><HEAD><TITLE>file</TITLE></HEAD>\n"; print "<BODY LINK=#0000ff VLINK=#800080 BACKGROUND=\"$graphics/bg.gif\">\n"; и так далее. В нужном месте вставляется строка $data и заканчивается print "</BODY></HTML>\n"; Я думаю, что правильно будет встывить что-то типа: } else { print "Location: http://site.com\n\n"; } Но куда? Пробовал по-разному, но что-то не получилось. |
![]() |
![]() |
![]() |
#14 |
Форумец
Сообщений: 25
Регистрация: 03.12.2002
Возраст: 63
![]() |
Да я, вроде бы, именно так и делал.
Но, что-то сервер выдал ошибку. Сегодня вечером гляну log и попробую еще раз. А вот эту строчку править не надо? open (F,$filename) || die "Can't open $filename: $!"; acb добавил [date]1062488824[/date]: А, все! PARDON! Въехал! Я пропустил оператор IF |
![]() |
![]() |
![]() |
#15 |
Форумец
Сообщений: 25
Регистрация: 03.12.2002
Возраст: 63
![]() |
Вот теперь все заработало!
Я почитал теорию (я в ней полный дуб) и сделал так $filename=$ENV{'QUERY_STRING'}.'.dat'; if(-e $filename){ open (F,$filename) || die "Can't open $filename: $!"; read(F,$data,-s F); close(F); } else { print "Location: http://mysite.com\n\n"; } Так что, благодарю всех за помощь. P.S. Меня долго мучила проблема отсутствия доступа по FTP на работе. Но, наконец-то, я ее решил. Скачал бесплатный скрипт GENESIS (это многопользовательский файловый менеджер) http://www.xav.com/scripts/genesis/ Классно работает. Если купить за $38 ключ, то можно еще предоставлять дисковое пространство пользователям и управлять ими. Может кому-то надо. |
![]() |
![]() |