Форум -> Files (модуль и блок) -> Решил проблему с уведомлением о битых ссылках! |
Решил проблему с уведомлением о битых ссылках! |
---|
shadow | Дата: 28.01.2009, в 03:47 | Сообщение №1 |
Активный участникПользователь №: 520 Сообщений: 100
| Итак в следе с самых первых версий в модуле файлов, в уведомлен о битой ссылке тянется страшный косяк... Который пед почему то упорно не хочет подправить... Итак решаем...
Сначала для начинающих немного теории: в чем же косяк?
Думаю все знают в настройках файлов есть такая опция "разрешить сообщать о битых ссылках" по ее включении при просмотре файла появляется картинка (обычно это мигающая красная кнопочка, или как в более поздних версиях восклицательный значок) итак - это картинка со ссылкой на другую страницу! (для понимающих - на другую функцию)
по сути при переходе на эту самую другую страницу производится "пометка" в базе что этот файл битый, и он начинает отображаться у вас в доп разделе файлов в админке...
Итак идея сама по себе прекрасна и удобна, - но решение как и почти все от Педа отвратительное, чем? да тем что по таким вот горе ссылкам с удовольствием гуляют все роботы! и через денек другой у вас уже весь каталог файлов светится битыми ссылками ((( (те кто уже активировал эту опцию думаю поймут)....
Итак решаем вопрос........ |
|
|
shadow | Дата: 28.01.2009, в 03:53 | Сообщение №2 |
Активный участникПользователь №: 520 Сообщений: 100
| Я решил вопрос на своем движке AS 4.2 так (но думаю и на младших версиях будет аналогично...) причем решил без добавления новых функций в index файл модуля....
Решение - добавление "captcha" (вопрос уже обсуждался, где то ) но вот мае решение под новый движок...
Перво на перво идем в шаблоны и из шаблона просмотра файла вырезаем эту картинку (в AS 4.2) это $arg[18] в basic-files-view.html Логика тут такая пока человек не скачал файл не нажав на кнопку скачать - он неможет знать битая она или нет... поэтому и нечего там ее светить...
дальше лезем в index файл модуля....
ищем function geturl() и добавляем в global ... $stop;
далее заменяем
Код | 1
| $db->sql_query("UPDATE ".$prefix."_files SET hits=hits+1 WHERE lid=$id"); |
на Код | 1
| if (!$stop) $db->sql_query("UPDATE ".$prefix."_files SET hits=hits+1 WHERE lid=$id"); |
а точнее мы просто перед запросом добавляем if (!$stop) то есть защитвыаем скачивание только если переменная $stop пуста (не существует) а в ней мы будем хранить, передавать ошибку о неправильно введенном коде.
дальше перед get_page($conf['name']);
добавляем:
Код | 1
| //------captcha------
if ($conff['broc'] == 1 && $id) {
if ($stop) warning($stop, "", "", 2);
open();
echo "<form action=\"index.php?name=".$conf['name']."\" method=\"post\" style=\"display: inline\"><input type=\"hidden\" name=\"id\" value=\"$id\"/><input type=\"hidden\" name=\"op\" value=\"broken\"/>"
.captcha_random(2)
."<center><input type=\"submit\" value=\""._BROCFILE."\" class=\"fbutton\"/></center></form>";
close();
}
//------captcha------ |
- в низу появится поле с капчей и кнопка, причем появится только если в админке включено "уведомление о битых...".
В общем то с этой функцией все... Теперь после нажатия на кнопку скачать и перехода к странице где идет уведомление
"Если скачивание не началось вы можете скачать по ссылке ниже...."
ниже у вас появится меню с капчей и кнопкой.!!!
Итак переходим непосредственно к функции которая помечает наши файлы битыми - это function broken()
добавляем в добавляем в global ... $stop, $id;.
затем строчку $id =.... правим на
Код | 1
| $id = ($_GET['id']) ? intval($_GET['id']) :$id; |
затем после if ($conff['broc'] ==.......
добавляем:
Код | 1
| if (captcha_check(2)) $stop = _SECCODEINCOR;
if ($stop) {
geturl();
} else {
................
................
.......foot();
} // не забудете поставить эту закр. кавычку после фуут. |
Ну вроде все.............
Пример юзаем в каталоге файлов на ALFAFILMS.ru
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ Отредактированно shadow 28.01.2009 г. в 10:37:56 |
|
|
patriot | Дата: 28.01.2009, в 05:53 | Сообщение №3 |
УчастникПользователь №: 349 Сообщений: 92
| Может не до конца разобрался, но где ты проверяешь введенную капчу?
и не проще будет вывести обычную ссылку, но на яве.
почему-то кажется логичнее... зачем пользователя напрягать - ему и так тяжело) |
|
|
shadow | Дата: 28.01.2009, в 10:35 | Сообщение №4 |
Активный участникПользователь №: 520 Сообщений: 100
| Цитата | Может не до конца разобрался, но где ты проверяешь введенную капчу? |
patriot, да странно одна строчка выпала из последнего кода
исправил.....
Цитата | и не проще будет вывести обычную ссылку, но на яве. |
технически может да, ну как минимум ява не валидна... ну в общем решил как смог ..... |
|
|
RockKenny | Дата: 28.01.2009, в 14:17 | Сообщение №5 |
Активный участникПользователь №: 171 Сообщений: 232
| а вот с явой, хорошая тема |
|
|
|
Вы не можете ответить в тему анонимно, пожалуйста, войдите или зарегистрируйтесь!
|