|
Обработка поля $OTHER$ javascript'ом
|
|
| ultraswet | Отредактировал ultraswet - Четверг, 08 Октября 2009, 16:02 Дата: 08 Октября 2009, 16:01 | Сообщение # 1 |  ● ● ● ● ● 33 сообщения Статус: Offline | В поле $OTHER1$ пользователь вписывает логины-пользователей, допустим через пробел, которым необходимо блокировать доступ, например, к комментированию материала. К примеру блокируются пользователи admin, lena и sweta. Вид строки должен быть следующим: 'admin' or 'lena' or 'sweta' Так как поле $OTHER1$ при вписывании символов кодирует '' , то обрабатываем это скриптом. Code re = / /gi; str = "'$OTHER1$'"; newstr=str.replace(re, "' or '"); document.write(newstr) Вопрос. Каким образом запихнуть этот код <?if($USERNAME$=$OTHER1$)?>Вы блокированы<?else?>А вам можно<?endif?> в скрипт чтобы работало. Думаю понятно, что $USERNAME$ в данном случае выполняет сравнивание с одним из логинов в поле $OTHER1$ и если один из логинов совпадает, то ему выдаётся "нельзя". Пытался по-всякому ничего не получается, во-первых плохо знаю javascript, а во-вторых за сутки отупел окончательно. | | |
|
| mob_dp | Дата: 08 Октября 2009, 18:27 | Сообщение # 2 | ● ● ● ● ● 4112 сообщений Статус: Offline | Quote (ultraswet) Вид строки должен быть следующим: 'admin' or 'lena' or 'sweta' Бред. делить потом через split() | | |
|
| Vanofuture | Дата: 08 Октября 2009, 18:39 | Сообщение # 3 |  ● ● ● ● ● Все админы едят апельсины 1650 сообщений Статус: Offline | Quote (mob_dp) делить потом через split() JS нафиг. Тут нужно server-side делать. | | |
|
| mob_dp | Дата: 08 Октября 2009, 20:14 | Сообщение # 4 | ● ● ● ● ● 4112 сообщений Статус: Offline | Quote (Vanofuture) Тут нужно server-side делать. Хм, ты прав. Через strpos() искать свой ник в строке $OTHER1$  | | |
|
| ultraswet | Дата: 08 Октября 2009, 20:24 | Сообщение # 5 |  ● ● ● ● ● 33 сообщения Статус: Offline | Ребята, я ничего не понимаю Дайте хотя бы наводку, или где об этом почитать. | | |
|
| Vanofuture | Отредактировал Vanofuture - Пятница, 09 Октября 2009, 18:50 Дата: 08 Октября 2009, 20:38 | Сообщение # 6 |  ● ● ● ● ● Все админы едят апельсины 1650 сообщений Статус: Offline | Quote (mob_dp) Quote Тут нужно server-side делать. Хм, ты прав. Через strpos() искать свой ник в строке $OTHER1$  Чуть сложней. Ведь есть вписать ник asd, то при простом strpos asd123 тоже заблокируется. Добавлено (08 Октябрь 2009, 20:38) --------------------------------------------- ultraswet, пробуй: В шаблон Архив материалов или страница и добавлениы материала нужного модуля: Code <?if($PAGE_ID$='add' || $PAGE_ID$='edit')?><script type="text/javascript">(function(){var a=$(document.addform.other1),c=a.clone(1).hide().insertAfter(a);a.removeAttr('id').attr('name','other_1');<?if($PAGE_ID$='edit')?>a=a[0];c=c[0];var b=a.value,d=/^!([^!]+)!$/i;if(!b){return}if(d.test(b)){a.value=b.match(d)[1];return}a.value=b.replace(/^!|!$/g,'').replace(/!/g,', ');<?endif?>})();function checksubmit(){var a=document.addform.other_1.value.replace(/\s/g,''),f=document.addform.other1;if(!a){f.value='';return true} f.value='!'+a.match(/[^,\s]+/ig).join('!')+'!';return true}</script><?endif?> В шаблон страница материала и комментариев к нему: Code <?if(strpos($OTHER1$,$USERNAME$)!=-1 && substr($OTHER1$,strpos($OTHER1$,$USERNAME$)-1,1)='!' && substr($OTHER1$,strpos($OTHER1$,$USERNAME$)+len($USERNAME$),1)='!')?>вам сюдя нильзя ;(<?else?>Вам тут рады ;D<?endif?> При вводе в other1 нужно вводить ники через запятую, регист ВАЖЕН. Не проверял. | | |
|
| mob_dp | Дата: 08 Октября 2009, 20:46 | Сообщение # 7 | ● ● ● ● ● 4112 сообщений Статус: Offline | Quote (Vanofuture) Ведь есть вписать ник asd, то при простом strpos asd123 тоже заблокируется. Не зря на каждом порядочном сайте при регистрации пишут "выбирайте себе уникальный ник". p.s. твой вариант чет не вкурил... | | |
|
| ultraswet | Дата: 08 Октября 2009, 21:01 | Сообщение # 8 |  ● ● ● ● ● 33 сообщения Статус: Offline | Vanofuture, попробовал... по разному, но не получилось:( выводит: "Вам тут рады", даже если в поле есть логин блокированного пользователя. | | |
|
| Vanofuture | Дата: 08 Октября 2009, 21:40 | Сообщение # 9 |  ● ● ● ● ● Все админы едят апельсины 1650 сообщений Статус: Offline | ultraswet, url записи? | | |
|
| ultraswet | Отредактировал ultraswet - Четверг, 08 Октября 2009, 21:59 Дата: 08 Октября 2009, 21:52 | Сообщение # 10 |  ● ● ● ● ● 33 сообщения Статус: Offline | Vanofuture, что url? Дать ссылку на страницу? http://mirmagi.ru/stuff/1/9-1-0-12 В поле поставил значение malina, admin. Захожу под ником malina - "Вам тут рады" | | |
|
| Vanofuture | Дата: 08 Октября 2009, 22:28 | Сообщение # 11 |  ● ● ● ● ● Все админы едят апельсины 1650 сообщений Статус: Offline | | | |
|
| Бармалей | Дата: 08 Октября 2009, 23:08 | Сообщение # 12 | ● ● ● ● ● Тиран 7772 сообщения Статус: Offline | Quote (Vanofuture) Quote Quote Тут нужно server-side делать. Хм, ты прав. Через strpos() искать свой ник в строке $OTHER1$  Чуть сложней. Ведь есть вписать ник asd, то при простом strpos asd123 тоже заблокируется. Добавлено (08 Октябрь 2009, 20:38) --------------------------------------------- ultraswet, пробуй: В шаблон Архив материалов или страница и добавлениы материала нужного модуля: Code <?if($PAGE_ID$='add' || $PAGE_ID$='edit')?><script type="text/javascript">(function(){var a=$(document.editform.other1),c=a.clone(1).hide().insertAfter(a);a.removeAttr('id').attr('name','other_1');<?if($PAGE_ID$='edit')?>a=a[0];c=c[0];var b=a.value,d=/^!([^!]+)!$/i;if(!b){return}if(d.test(b)){a.value=b.match(d)[1];return}a.value=b.replace(/^!|!$/g,'').replace(/!/g,', ');<?endif?>})();function checksubmit(){var a=document.editform.other_1.value.replace(/\s/g,'');if(!a){return true}document.editform.other1.value='!'+a.split(',').join('!')+'!';return true}</script><?endif?>
В шаблон страница материала и комментариев к нему: Code <?if(strpos($OTHER1$,$USERNAME$)!=-1 && substr($OTHER1$,strpos($OTHER1$,$USERNAME$)-1,1)='!' && substr($OTHER1$,strpos($OTHER1$,$USERNAME$)+len($USERNAME$),1)='!')?>вам сюдя нильзя ;(<?else?>Вам тут рады ;D<?endif?>
При вводе в other1 нужно вводить ники через запятую, регист ВАЖЕН.
Не проверял. От прямого POST запроса все равно не спасет.
 | | |
|
| kuzjma | Отредактировал kuzjma - Четверг, 08 Октября 2009, 23:17 Дата: 08 Октября 2009, 23:11 | Сообщение # 13 |  ● ● ● ● ● 381 сообщение Статус: Offline | $USERNAME$.'|' не прокатит? Еще можно попробовать: Code <?if(strpos($OTHER1$, $USERNAME$)>-1 && substr($OTHER1$, strpos($OTHER1$, $USERNAME$)+strlen($USERNAME), 1)='|')?>Шпиён ЕПТ!!!11<?else?>=)<?endif?> | | |
|
| ultraswet | Отредактировал ultraswet - Четверг, 08 Октября 2009, 23:20 Дата: 08 Октября 2009, 23:17 | Сообщение # 14 |  ● ● ● ● ● 33 сообщения Статус: Offline | Он был, я его после проверки убрал. Quote (kuzjma) $USERNAME$.'|' не прокатит? Еще можно попробовать: Code <?if(strpos($OTHER1$, $USERNAME$)>-1 && substr($OTHER1$, strpos($OTHER1$, $USERNAME$), 1)='|')?>Шпиён ЕПТ!!!11<?else?>=)<?endif?> тоже нет:( | | |
|
| kuzjma | Дата: 08 Октября 2009, 23:18 | Сообщение # 15 |  ● ● ● ● ● 381 сообщение Статус: Offline | Эмм... Похоже Vanofuture меня опередил  | | |
|
| Vanofuture | Отредактировал Vanofuture - Пятница, 09 Октября 2009, 01:13 Дата: 09 Октября 2009, 01:12 | Сообщение # 16 |  ● ● ● ● ● Все админы едят апельсины 1650 сообщений Статус: Offline | Quote (Бармалей) От прямого POST запроса все равно не спасет. Капчу врубаем А ещё так ведь можно не только форму, но и контент скрывать. Вот только ограничение символов мешает.
Quote (ultraswet) Он был, я его после проверки убрал. А сейчас он неверный. document.editform | | |
|
| ultraswet | Отредактировал ultraswet - Пятница, 09 Октября 2009, 01:18 Дата: 09 Октября 2009, 01:17 | Сообщение # 17 |  ● ● ● ● ● 33 сообщения Статус: Offline | Vanofuture, слежу за темой и твоим присутствием Я попробовал и так document.editform и так editform ничего не выходит. | | |
|
| Vanofuture | Отредактировал Vanofuture - Пятница, 09 Октября 2009, 04:40 Дата: 09 Октября 2009, 04:40 | Сообщение # 18 |  ● ● ● ● ● Все админы едят апельсины 1650 сообщений Статус: Offline | ultraswet, забудь, что я написал, мозг не варит. На самом деле надо document.editform Добавлено (09 Октябрь 2009, 04:40) --------------------------------------------- И я даже знаю почему...при редактировнии сообщения на хэлпере почему-то addform заменяется на editform. | | |
|
| mob_dp | Дата: 09 Октября 2009, 12:17 | Сообщение # 19 | ● ● ● ● ● 4112 сообщений Статус: Offline | Раз тут за формы разговор пошел... У меня такая проблема: скрипты не видят форму с именем addform. Ссылка Code typeof document.addform "undefined" Хотя в исходнике сама форма есть: Code <form method="post" id="addEntForm" style="margin:0px" name="addform" action="http://usite.ucoz.ru/publ/" onsubmit="openery();return false;"><input type="hidden" name="jkd498" value="1"><input type="hidden" name="jkd428" value="1"> ... <input type="hidden" name="a" value="12" /> <input type="hidden" name="ssid" value="375227241160140364052" /><input type="hidden" id="numi" value="1" /> </form> | | |
|
| ultraswet | Дата: 09 Октября 2009, 13:09 | Сообщение # 20 |  ● ● ● ● ● 33 сообщения Статус: Offline | Vanofuture, значит ничего не получится? | | |
|