Вы однажды очень здорово мне помогли,
поэтому хотел бы задать еще один вопрос.
У меня есть cgi-скрипт, который открывает
определенную страничку в зависимости от
рефссылки, например при нажатии на баннер
со ссылкой http://site.com/cgi-bin/file.cgi?111
в страничку вставляются данные из файла
111.dat
Если переход осуществляется по несуществующей
(ошибочной) ссылке, например, http://site.com/cgi-bin/file.cgi?1111, то "Server Error".
Так вот вопрос - какую команду можно добавить,
чтобы в таких случаях грузилась главная страница http://site.com
Вообще-то от настроек сервера зависит, будет он выдавать мессагу об ошибке.
например, если написать:
[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
Так что пробовай.
[Ответ]
acb, если хочешь, кинь его на [email protected], посмотрю, подправлю, скину тебе исправленный - на словах достаточно муторно объяснять не зная структуры скрипта.
[Ответ]
acb 12:03 30.06.2003
Сообщение от : Первоначальное сообщение от DMakeev acb, если хочешь, кинь его на [email protected], посмотрю, подправлю, скину тебе исправленный - на словах достаточно муторно объяснять не зная структуры скрипта.
Спасибо за ответ.
Кусок скрипта скинул на Ваш e-mail
[Ответ]
CC 14:23 24.07.2003
Я правда не доконца понял, но попробую все таки посоветовать...
он все не валидные ссылки будет валить в корень сайта,
но мне кажется что ты делаешь что-то типа банерной сети,
и тогда у тебя в строке запроса после `?` идет ссылка, то тебе нужно проверять ее на валидность, то есть если сайт присутствует в ДНС, то он валиден...
Такую валидность можно сделать через whois. В PHP можно поэкспериментировать с сокетами.
CC добавил [date]1059046301[/date]:
Сообщение от : Первоначальное сообщение от mike_s Вообще-то от настроек сервера зависит, будет он выдавать мессагу об ошибке.
например, если написать:
[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
Так что пробовай.
делается проще
@include_once ("test.php");
но в таком случае в логи варнинги будут валится, поэтому я пользуюсь вот таким вариантом
вот теперь все будет кошерно, можно писать модульно не мучаясь о забытых лишних включениях... ))
ЗЫЖ хот меня после отпуска прет )))
CC добавил [date]1059046491[/date]:
Сообщение от : Первоначальное сообщение от DMakeev acb, если хочешь, кинь его на [email protected], посмотрю, подправлю, скину тебе исправленный - на словах достаточно муторно объяснять не зная структуры скрипта.
читал, читал - ничего не понял и подумал: "может встрять?"
человек про Перл спрашивал а вы ему тут про 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";
}
[Ответ]
CC 15:04 30.07.2003
Сообщение от : Первоначальное сообщение от ^igor[] читал, читал - ничего не понял и подумал: "может встрять?"
человек про Перл спрашивал а вы ему тут про 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";
}
вумный :super: :super: :super:
каждый просто думает по своему а язык на котором реализовывать будешь - роли не играет... можно хоть на bash замочить... сложности в этом нету...
ГЛАВНОЕ ИДЕЯ.... ИДЕ Я ЕСТЬ :naughty: :naughty: :naughty:
[Ответ]
$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";
Я думаю, что правильно будет встывить что-то типа:
Но куда?
Пробовал по-разному, но что-то не получилось.
[Ответ]
^igor[] 10:13 02.09.2003
ну, чувак, я ж тебе написал куда - выше смотри
print "Location: должно быть вставлено _до того_ как будет что-то выведено (т.е. до первого print'a), иначе не сработает
P.S. Меня долго мучила проблема отсутствия доступа по FTP на работе. Но, наконец-то, я ее решил. Скачал бесплатный скрипт GENESIS (это многопользовательский файловый менеджер)