Forum. MyNuke.ru
Forum. MyNuke.ruСообщения за сегодняПерсональные сообщения

Навигация  
Вернуться   Forum. MyNuke.ru > PHP-NUKE > Настройка и Изменение > Модули
Ник
Пароль
Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Alexander-V-Sh вне форума      Старый Download (сообщить о нераб. файле) #1  
Аватара для Alexander-V-Sh
Alexander-V-Sh
Бывалый
Регистрация: 19.04.2006
Сообщения: 352


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Alexander-V-Sh Посетить домашнюю страницу Alexander-V-Sh Найти все сообщения от Alexander-V-Sh Добавить Alexander-V-Sh в список друзей  
10.05.2006, 09:41

Решил сделать, чтобы сообщать о неработающих файлах могли все. Не сложно.
Посмотрел БД downloads_modrequest
Нифига не понял. Куча полей, непонятно для чего нужных. (у меня BriaN's Download), в оригинальном смотрел 7.9.3.1 там вообще без пива не разобрать (измененные, недоступные и куча всякой бяки).

В общем снес все к чертям, сделал 5 полей.
requestid
lid
ip - чтобы видеть кто жалуется.
date - на всякий случай
brokendownload - помоему можно и без нее обойтись было, но переделывать больше.

Все отлично работает, но хотелось бы сделать проверку по lid, чтобы если файл с этим ID есть в базе, новый не добавлялся.
Сумел только по последнему lid-у сделать.
функция brokendownloadS
PHP код:
 $result $db->sql_query("SELECT lid from " $prefix "_downloads_modrequest"); 
while (
$row $db->sql_fetchrow($result)) {   
$lid2 intval($row['lid']);  }    
if (
$lid2==$lid) { есть в базе } else { запись в базу 

А нужно вытащить из базы все LID с нерабочими файлами и сравнить их с тем, куда жалуются на ссылку.
Насколько я понимаю делается это массивами, которые я абсалютно незнаю.

Если не сложно поправте плиз код. Или, если лень, скажите, в каком модуле есть нечто похожее, чтобы сделать по аналогии.

Последний раз редактировалось xazbix, 10.05.2006 в 10:03.

BriaN вне форума      Старый #2  
Аватара для BriaN
BriaN
Великий MODер
Регистрация: 28.02.2005
Сообщения: 88


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для BriaN Найти все сообщения от BriaN Добавить BriaN в список друзей  
10.05.2006, 12:38

Я не совсем понял вопрос, вы хотите, чтобы и гости могли сообщать о недоступности файлов? Ну, так, а в чём проблема то?

В функции:
PHP код:
 function brokendownload($lid) { 


Находите и удаляете:
PHP код:
 if (is_user($user)) { 


Далее находите и удаляете:
PHP код:
 } else {
    
Header("Location: modules.php?name=$module_name");
    } 


Ну, ещё лучше удалить из global переменную $user,

Вот и всё, теперь может сообщить о недоступности файлов любой посетитель сайта без регистрации.
 
Не задавай глупых вопросов, если сам можешь на них ответить. [url]www.GTA.ru[/url] - лучший сайт по GTA в Россие!


Alexander-V-Sh вне форума      Старый #3  
Аватара для Alexander-V-Sh
Alexander-V-Sh
Бывалый
Регистрация: 19.04.2006
Сообщения: 352


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Alexander-V-Sh Посетить домашнюю страницу Alexander-V-Sh Найти все сообщения от Alexander-V-Sh Добавить Alexander-V-Sh в список друзей  
10.05.2006, 17:53

Это то я сделал. Плюс изменил таблицу для себя (выкинул ненужное и добавил IP c временем, на всякий случай)

Я хочу чтобы, когда человек нажимает на кнопку - Сообщить о неработающей ссылке. Сперва шел запрос в базу для проверки наличия таких же жалоб на этот файл. Тоесть сравнивался ID файла, на который жалуется посетителей со всеми ID файлов на которые жаловались (одинаковых чтобы не было)
Если такого ID в таблице modrequest нет, то делается запись в базу, если есть, то запись не производится.

Все сделал, кроме изначального запроса. Сейчас идет запрос, но проверяется только последний ID файла, а нужно чтобы всем.

Вот весь код:
PHP код:
 global $prefix$db$module_name;
    
$result $db->sql_query("SELECT lid from " $prefix "_downloads_modrequest");
while (
$row $db->sql_fetchrow($result)) { 
$lid2 intval($row['lid']);
}

if (
$lid2==$lid) {
include(
"header.php");
menu(1);
echo 
"<br>";
OpenTable();
echo 
"<center><br>Данный файл уже имеется в нашей базе, как недоступный.<br><br>В ближайшее время файл 

будет проверен.<br><br></center>"
;    
CloseTable();
include(
"footer.php");
} else {
$ip $_SERVER["REMOTE_HOST"];
if (empty(
$ip)) {
$ip $_SERVER["REMOTE_ADDR"];
}
$db->sql_query("insert into ".$prefix."_downloads_modrequest values (NULL, '$lid', '$ip', now(),'1')");
include(
"header.php");
menu(1);
echo 
"<br>";        
OpenTable();
echo 
"<br><center>Спасибо за информацию, Ваше сообщение принято.<br><br>В ближайшее время файл будет 

проверен.<br><br></center>"
;
CloseTable();
include(
"footer.php");
}} 



Это в общем то не столь полезное изменение. Но мне нужно. По аналогии можно много чего сделать будет, например сделать антифлуд (проверить все IP и время отправителей в базе и сравнить их с комментарием, который человек отправляет). Сейчас у меня эта штука тоже по последнему сравнивает. (в одной статье 2 раза нельзя писать с одного IP, а если чередовать статьи, раз в 1ой, раз в 2ой, раз в 1ой, раз в 2ой, то можно флудить.))

Alexander-V-Sh вне форума      Старый #4  
Аватара для Alexander-V-Sh
Alexander-V-Sh
Бывалый
Регистрация: 19.04.2006
Сообщения: 352


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Alexander-V-Sh Посетить домашнюю страницу Alexander-V-Sh Найти все сообщения от Alexander-V-Sh Добавить Alexander-V-Sh в список друзей  
12.05.2006, 07:53

сделал для всех ссылку эту, теперь цифирки появляются, роботы чтоли лазают...

из 2х функций (долго) сделал одну и без кнопки, а ссылкой, поэтому или потому что доступ открыт всем?
------
и по раннему вопросу, неужели никто не знает как переменную сравнить со всеми данными в поле? а не по одному ...

Soniks вне форума      Старый #5  
Soniks
Администратор
Регистрация: 16.01.2005
Сообщения: 4,814


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Soniks Посетить домашнюю страницу Soniks Найти все сообщения от Soniks Добавить Soniks в список друзей  
15.05.2006, 11:21

xazbix еще раз сформулируйте вопросы, а то не понятно, в чем разобрались, а в чем нет...
 
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть".


Alexander-V-Sh вне форума      Старый #6  
Аватара для Alexander-V-Sh
Alexander-V-Sh
Бывалый
Регистрация: 19.04.2006
Сообщения: 352


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Alexander-V-Sh Посетить домашнюю страницу Alexander-V-Sh Найти все сообщения от Alexander-V-Sh Добавить Alexander-V-Sh в список друзей  
16.05.2006, 02:53

Было 2 функции:
function brokendownload и function brokendownloadS
Я сделал одну (чтобы быстрее было). Там было формой отправка, у меня ссылкой сейчас. В результате роботы лазиют и пролазиют.
Это из-за кнопки (формы), потому что убрал или из-за общего доступа?.
Ссылка http://www.site.ru/modules.php?name...ndownload&lid=4 в любом случае ведет на запись в БД нерабочего файла. Или если ее сделать не прямой ссылкой, а формой, то роботы не увидят?

И второй вопрос такой же. Как сравнить переменную со всеми значениями поля в БД.
Имеем:
LID=5 (например)
Нужно сравнить это значение со всеми строками в БД.

Код:
$result = $db->sql_query("SELECT lid from " . $prefix . "_downloads_modrequest");
while ($row = $db->sql_fetchrow($result)) {
$lid2 = intval($row['lid']);
}
if ($lid2==5) {.......
Сравнивает только последнюю запись, а нужно со всеми LID, которые есть в базе.

Soniks вне форума      Старый #7  
Soniks
Администратор
Регистрация: 16.01.2005
Сообщения: 4,814


Пожаловаться на это сообщениеОтветить с цитированием

Посмотреть профиль Отправить персональное сообщение для Soniks Посетить домашнюю страницу Soniks Найти все сообщения от Soniks Добавить Soniks в список друзей  
19.05.2006, 23:52

1) роботы в основном ходят по ссылкам, вот поэтому, а отправку формы не осуществляют.
2) внесите if ($lid2==5) {....... в сам цикл while{ ... }
 
"Если бы вам удалось надавать под зад человеку, виноватому в большинстве ваших неприятностей - вы бы неделю не смогли сидеть".


Ответ


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.
Быстрый переход



Часовой пояс GMT +4, время: 16:12.


На Верх
Рейтинг@Mail.ru