Forum. MyNuke.ru

Forum. MyNuke.ru (http://forum.mynuke.ru/index.php)
-   Модули (http://forum.mynuke.ru/forumdisplay.php?f=17)
-   -   Вопрос про хак - Comments from slaed to nuke (http://forum.mynuke.ru/showthread.php?t=1390)

neten 26.02.2006 15:17

Вопрос про хак - Comments from slaed to nuke
 
http://img116.imageshack.us/img116/2905/gg8pj.jpg

Как добавить значок ICQ посетителей?

neten 26.02.2006 20:22

где помощь?? помогите пожалуйста

Soniks 27.02.2006 04:39

найдите:
PHP код:
 $sql "SELECT tid, sid, date, name, email, url, host_name, subject, comment, score FROM ".$prefix."_comments WHERE sid='$sid' ORDER BY date DESC LIMIT $offset$storynum";
 
$result $db->sql_query($sql);
 while (list(
$tid$c_sid$date$sender_name$sender_email$sender_page$sender_host$com_title$comment$score$row) = $db->sql_fetchrow($result)) {
  
$com_text smiles(stripslashes($comment));
  
$sid intval($c_sid);
  if (
$sender_email != "") {
   
$sender_email "<a href=\"mailto:$sender_email\"><img border=\"0\" src=\"images/blocks/Feedback.gif\" width=\"16\" height=\"16\"></a>";
  } else {
   
$sender_email "<img border=\"0\" src=\"images/blocks/Feedback.gif\" width=\"16\" height=\"16\" title=\""._NOEMAIL."\">";
  }
  if (
$sender_page != "") {
   
$sender_page "<a href=\"$sender_page\" target=\"_blank\"><img border=\"0\" src=\"images/blocks/Home.gif\" width=\"16\" height=\"16\"></a>";
  } else {
   
$sender_page "<img border=\"0\" src=\"images/blocks/Home.gif\" width=\"16\" height=\"16\" title=\""._NOURL."\">";
  }
  echo 
"<table border=\"0\" cellpadding=\"3\" cellspacing=\"1\" width=\"100%\" bgcolor=\"$bgcolor4\">\n"
  
."<tr><td bgcolor=\"$bgcolor1\">$a</td><td bgcolor=\"$bgcolor1\">$sender_email</td>\n"
  
."<td bgcolor=\"#FFFFFF\">$sender_page</td><td width=\"70%\" bgcolor=\"$bgcolor1\"><a href=\"modules.php?name=Your_Account&op=userinfo&username=$sender_name\"><b>$sender_name</b></a></td>\n"
  
."<td width=\"30%\" bgcolor=\"$bgcolor1\" align=\"center\">$date</td>\n"
  
."</tr><tr><td width=\"100%\" bgcolor=\"$bgcolor1\" colspan=\"5\"><b>$com_title</b><br>$com_text</td></tr>\n"

замените на:
PHP код:
 $sql "SELECT c.tid, c.sid, c.date, c.name, c.email, c.url, c.host_name, c.subject, c.comment, c.score, s.user_icq FROM ".$prefix."_comments AS c LEFT JOIN ".$prefix."_users AS s ON(s.username=c.name and s.user_email=c.email) WHERE c.sid='$sid' ORDER BY c.date DESC LIMIT $offset$storynum";
 
$result $db->sql_query($sql);
 while (list(
$tid$c_sid$date$sender_name$sender_email$sender_page$sender_host$com_title$comment$score$row$user_icq) = $db->sql_fetchrow($result)) {
  
$com_text smiles(stripslashes($comment));
  
$sid intval($c_sid);
  if (
$sender_email != "") {
   
$sender_email "<a href=\"mailto:$sender_email\"><img border=\"0\" src=\"images/blocks/Feedback.gif\" width=\"16\" height=\"16\"></a>";
  } else {
   
$sender_email "<img border=\"0\" src=\"images/blocks/Feedback.gif\" width=\"16\" height=\"16\" title=\""._NOEMAIL."\">";
  }
  if (
$sender_page != "") {
   
$sender_page "<a href=\"$sender_page\" target=\"_blank\"><img border=\"0\" src=\"images/blocks/Home.gif\" width=\"16\" height=\"16\"></a>";
  } else {
   
$sender_page "<img border=\"0\" src=\"images/blocks/Home.gif\" width=\"16\" height=\"16\" title=\""._NOURL."\">";
  }
  if (
$user_icq !=""){
   
$sender_icq "<a href=\"http://www.icq.com/whitepages/wwp.php?to=$user_icq\" target=\"_blank\"><img border=\"0\" src=\"images/blocks/ICQ.gif\" width=\"16\" height=\"16\"></a>";
  } else {
   
$sender_icq "<img border=\"0\" src=\"images/blocks/ICQ.gif\" width=\"16\" height=\"16\" title=\"ICQ не указано\">";
  }
  echo 
"<table border=\"0\" cellpadding=\"3\" cellspacing=\"1\" width=\"100%\" bgcolor=\"$bgcolor4\">\n"
  
."<tr><td bgcolor=\"$bgcolor1\">$a</td><td bgcolor=\"$bgcolor1\">$sender_email</td>\n"
  
."<td bgcolor=\"$bgcolor1\">$sender_page</td><td bgcolor=\"$bgcolor1\">$sender_icq</td><td width=\"70%\" bgcolor=\"$bgcolor1\"><a href=\"modules.php?name=Your_Account&op=userinfo&username=$sender_name\"><b>$sender_name</b></a></td>\n"
  
."<td width=\"30%\" bgcolor=\"$bgcolor1\" align=\"center\">$date</td>\n"
  
."</tr><tr><td width=\"100%\" bgcolor=\"$bgcolor1\" colspan=\"5\"><b>$com_title</b><br>$com_text</td></tr>\n"

должно работать, соответственно надо добавить еще картинку.

neten 27.02.2006 17:49

Вот что вышло...
http://img502.imageshack.us/img502/21/untitled15wi.jpg

BFG 14.03.2006 03:09

А у меня такая штука: пользуюсь модом комментариев "Comments_from_slaed_to_nuke" и при добавлении комментария система игнорирует все пользовательские "enter'ы" т.е. если написать:
1
2
3 и т.д. после добавления он будет выглядеть так:

1 2 3
Что это может быть, и как с этим бороться???

neten 14.03.2006 04:09

Цитата: Сообщение от BFG
А у меня такая штука: пользуюсь модом комментариев "Comments_from_slaed_to_nuke" и при добавлении комментария система игнорирует все пользовательские "enter'ы" т.е. если написать:
1
2
3 и т.д. после добавления он будет выглядеть так:

1 2 3
Что это может быть, и как с этим бороться???



пиши на html..

BFG 17.03.2006 03:54

хороошо, я понял.
тогда такой вопрос:
мне нужно чтобы эта форма с выбором: "исходный текст" "html форматирование" "использую теги и текст" была не видна.
её удалить я смог, а вот чтобы нужный параметр был постоянным не получается (например "исходный текст").
как только удаляю форму, сразу все новые комменты выводит одной строкой.
может кто подскажет, чего там где поменять нужно.

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

kentbrn 17.03.2006 22:26

как сделать чтобы зарегестрированный пользватель мог редактировать и удалять свои коментарии ... !?? нюк 7.9 хак коментов от браина

Soniks 18.03.2006 17:49

BFG в файле comments.php в строке:
PHP код:
 function savecomments($xanonpost$postname$postemail$posturl$subject$comment$sid$host_name$posttype) { 

измениете $posttype на $posttype="exttrans" или же $posttype="plaintext" в зависимости запретили ли вы использование html или же нет

BFG 20.03.2006 03:37

ну с вводами, помогло, спасиб.
а чё сделать с кодировкой, а то как то некрасиво получается...

Soniks 20.03.2006 20:52

BFG а какая у вас версия нюки и стоят ли патчи?

BFG 23.03.2006 02:53

у меня нюка 7.6 без патчей, по крайней мере я их не ставил...

Soniks 23.03.2006 04:08

BFG очень странно что вопросами отображаються именно только имя автора.
Посмотрите структуру таблицы _comments, особенно столбец name, какая там кодировка стоит, в самой этой таблице название автора тоже отображаеться вопросами?

BFG 24.03.2006 17:46

Нет, в поле name, где должны быть имена незарегистрированных пользователей написано, например вместо
прича - было &iuml;&eth;&egrave;&divide;&agrave;
вот такое вот искусство.

а кодировку я не понял где там посмотреть, но записал что написано в поле name:

Поле_____Тип__________Сравнение_______атрибуты ___ ноль_____по умолчанию____дополнительно

name_____varchar(60)____cp1251_general_ci ___ - ____ Нет _____ - __________ -

"_____" это я написал чтоб понятно что в каком столбце записано

Soniks 25.03.2006 03:33

BFG с кодировкай все впорядке, и вот почитайте http://forum.mynuke.ru/faq.php?faq=...pnuke_faq_editq

Guma 27.03.2006 12:17

а как сделать чтоб рядом с ником отображалась аватора пользователя?

Guma 27.03.2006 16:27

ну напишите запрос и функцию а я сам ее интегрирую

Soniks 27.03.2006 16:46

Guma мудрить то ничего не надо особо, в выше приведенном мною коде
надо добавить в SQL запрос вывод помимо s.user_icq еще и s.user_avatar

PHP код:
 $sql "SELECT c.tid, c.sid, c.date, c.name, c.email, c.url, c.host_name, c.subject, c.comment, c.score, s.user_icq, s.user_avatar FROM ".$prefix."_comments AS c LEFT JOIN ".$prefix."_users AS s ON(s.username=c.name and s.user_email=c.email) WHERE c.sid='$sid' ORDER BY c.date DESC LIMIT $offset$storynum";
$result $db->sql_query($sql);
 while (list(
$tid$c_sid$date$sender_name$sender_email$sender_page$sender_host$com_title$comment$score$row$user_icq$user_avatar ) = $db->sql_fetchrow($result)) { 

и дальше в этом же цикле вставляете тег картинки img и там указываете путь до картинки: путь до гареи/$user_avatar и будет аватор пользователя

Guma 27.03.2006 16:57

ага попробую, спасибо!

Guma 28.03.2006 22:33

а если галерей многа как правильно то путь до картинки прописать?

BFG 17.03.2011 13:52

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

Soniks 18.03.2011 12:13

BFG Вот функции для обработки текста с распознанием ссылок в нем и вставки кода (взято с php.net):
PHP код:
 // Cuts off long URLs at $url_length, and appends "..."
    
function reduceurl($url$url_length) {
        
$reduced_url substr($url0$url_length);
        if (
strlen($url) > $url_length$reduced_url .= '...';
        
        return 
$reduced_url;
    }

    
// Makes URLs with brackets into links
    // The regex searches for "http://" or equivalent, then various character possibilities (I don't know if it might be possible to exploit this if more characters were allowed). The "e" after the regex allows the reduceurl() to be evaluated.

    
function url2link($linktext) {
        
$linktext preg_replace("#\[(([a-zA-Z]+://)([a-zA-Z0-9?&%.;:/=+_-]*))\]#e""'<a href=\"$1\" target=\"_blank\">' . reduceurl(\"$3\", 30) . '</a>'"$linktext);
                
        return 
$linktext;
    } 


Соответственно в код необходимо добавить эти фунции, а там где идет сохранение комментария в БД вставить что то подобное:
PHP код:
 $comment url2link($comment); 

BFG 19.03.2011 00:38

а можно носом ткнуть именно туда куда нужно вставить?
PHP код:
 $comment url2link($comment); 

во вложении мой файл comments.php

Soniks 19.03.2011 12:11

Функция savecomments, перед строкой:
PHP код:
 $db->sql_query("INSERT INTO ".$prefix."_comments .... 

добавить
PHP код:
 $comment url2link($comment); 

BFG 19.03.2011 13:51

не получается, всё равно просто текст...

BFG 21.03.2011 01:01

и ещё, можно ли что бы при добавлении комментария обновлялись только сами комменты а не вся страница, а то если кто-то прочитал и 1 раз ответил получается +2 в прочитано...

Soniks 21.03.2011 18:21

BFG По средством AJAX запроса если только. Но можно сделать счетчик с запоминанием (читал данню статью пользователь или нет) через COOKIE.
Цитата не получается, всё равно просто текст...

Вот проще:
PHP код:
 function url2link($linktext) {;
        
$linktext preg_replace('/\\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*/i'"<a href=\"\\0\">\\0</a>"$linktext);      
        return 
$linktext;
    }
    echo 
url2link("текс http://www.test.ru/test.html все!"); 

BFG 22.03.2011 21:07

ерунда получается какая-то...
просто выводит
текс http://www.test.ru/test.html все!
над формой ввода комментария, чего и следовало ожидать ))) а в комментариях как и раньше просто текст.

Я вставлял эту функцию вместо предложенных ранее...

Soniks 23.03.2011 10:22

BFG я привел пример работы функции не стоит вставлять вывод echo. Используйте только функцию.

BFG 23.03.2011 12:08

Soniks, хорошо, тогда куда эту функцию в мой comments.php нужно вставить, а то как не пробую один пень просто текст...

Soniks 24.03.2011 21:07

по идее туда же просто нужно только предыдущие функции удалить, а одну добавить, и перед запросом к тексту идущий в бд применить эту функцию

BFG 25.03.2011 13:20

спасибо, получилось, ура!!!
вот только где и как прописать target=_blank (на эти ссылки)???

Soniks 28.03.2011 12:07

Цитата: Сообщение от BFG
спасибо, получилось, ура!!!
вот только где и как прописать target=_blank (на эти ссылки)???

Нужно изменить строку на:
PHP код:
 $linktext preg_replace('/\\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*/i'"<a href=\"\\0\" target=\"_blank\">\\0</a>"$linktext); 

BFG 29.03.2011 00:30

Soniks, спасибо, наконец-то настроил как и хотел...


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

Copyright © 2005 by Soniks