PDA

View Full Version : Вопрос про хак - Comments from slaed to nuke


neten
26.02.2006, 15:17
http://img116.imageshack.us/img116/2905/gg8pj.jpg

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

neten
26.02.2006, 20:22
где помощь?? помогите пожалуйста

Soniks
27.02.2006, 04:39
найдите:
$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";

замените на:
$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
А у меня такая штука: пользуюсь модом комментариев "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 в строке:
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=phpnuke_faq_edit#faq_phpnuke_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

$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):
// Cuts off long URLs at $url_length, and appends "..."
function reduceurl($url, $url_length) {
$reduced_url = substr($url, 0, $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;
}

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

BFG
19.03.2011, 00:38
а можно носом ткнуть именно туда куда нужно вставить?
$comment = url2link($comment);
во вложении мой файл comments.php

Soniks
19.03.2011, 12:11
Функция savecomments, перед строкой:
$db->sql_query("INSERT INTO ".$prefix."_comments ....
добавить
$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.
не получается, всё равно просто текст...
Вот проще:
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
спасибо, получилось, ура!!!
вот только где и как прописать target=_blank (на эти ссылки)???
Нужно изменить строку на:
$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, спасибо, наконец-то настроил как и хотел...