IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   Добавить проверочный код в форму. (https://www.imho.ws/showthread.php?t=105060)

gost2 19.06.2006 18:27

Добавить проверочный код в форму.
 
Подскажите, пожалуйста, как добавить простой проверочный код в форму отправки сообщения? Желательно без php, HMTL и cgi.

RaZEr 19.06.2006 18:34

На HTML проверочных кодов не бывает, только на JavaScript. CGI это вообще не из той оперы, так как PHP тоже может работать через CGI. А теперь к делу - какой проверочный код? :)

gost2 19.06.2006 22:50

Мне нужно вставить код-картинку с проверкой для отправной формы, чтобы нельзя было отправлять сообщения в гостевую книгу автоматом. Зафлудили гады всё жутко. Не успеваю удалять.

Naked 19.06.2006 23:26

В принципе можно сделать и с JavaScript....
Самое простое наверное, нарисовать 10 картинок с надписями от 0 до 9 (лучше даже несколько экземпляров одной цифры), потом при выводе на экран вызываешь функцию типа rand (думаю в яваскрипте она есть), и запоминаешь те цифры, которые тебе дал rand (или несколько rand'ов), затем выбираешь нужные картинки, выводишь их на экран пользователю для того, чтобы он ввел код, чтобы проверить правильный ли он код ввел нужно сделать <form onSubmit="function();"> где function - функция на яваскрипте, проверяющая правильность ввода информации...
Все это хорошо действует, только если пользователь отключит яваскрипт, то все это обходится, надежнее (и правильнее делать на php), по сути тоже самое, только проверка происходит на стороне сервера, т.е. клиент не может получить доступ к исходникам самой проверки :)

RaZEr 20.06.2006 00:31

Боты не выполняют js. Поэтому ф-ия проверки на js даже вызвана не будет.

Чтобы не флудили, просто переименуй скрипт, который добавляет новое сообщение. Это поможет на некоторое время.

gost2 20.06.2006 14:24

Цитата:

RaZEr:
Чтобы не флудили, просто переименуй скрипт, который добавляет новое сообщение. Это поможет на некоторое время.
Делал так. Буквально на 3 дня хватило.
Я попробовал бы вставить и Java, и php, но я в них ничего не понимаю.
Может видел кто-то уже готовый код php или Java для вставки?

RaZEr 20.06.2006 14:34

Раз ничего не понимаешь, просто выбери другую гоcтевую книгу в описании которой есть "flood protection":

http://www.hotscripts.com/PHP/Script...oks/index.html

gost2 20.06.2006 16:04

У меня там 36 разделов. Я ищу простое решение - вставить код в шаблон, что-то чуток поправить и всё.
Менять всю систему - это слишком.

RaZEr 20.06.2006 16:19

Простого решения здесь нет. Как минимум это ручная правка кода, и добавление туда необходимой функциональности.

gost2 20.06.2006 18:04

RaZEr, это как раз устраивает. Не попадался готовый вариант подобного кода?

Hubbitus 21.06.2006 11:48

Цитата:

RaZEr:
Боты не выполняют js. Поэтому ф-ия проверки на js даже вызвана не будет.
Не будет, но это если проверку на onSubmit вешать. Но ведь можно попробовать сыграть какраза на другом, то что боты и не выполняют JS код!!

Тоесть, почти то же что написал Naked, только не при сабмите проверять циферки, а функцией проверять циферки и сабмитить форму уже в ней, если правильно.

Таким образом получим какраз простую защиту, если <input type=submit...> заменим на <input type=button onclick="какраз функция проверки и сабмита"...>. Тоесть конечно, защита это обойдется, если какой-то робот захочет парсить JS код и разбирать его.... но нужно ли это какому-то спамеру, если гостевая небольшая. Скорее всего они спамят просто "наширокую", по скрипту гостевой...

RaZEr 21.06.2006 12:27

Погоди, боты ведь даже не смотрят страницу с формой. Они просто формируют POST и кидают его серверу. То есть, без серверной проверки получаемых данных не обойтись.

Hubbitus 21.06.2006 22:34

Цитата:

RaZEr:
Погоди, боты ведь даже не смотрят страницу с формой. Они просто формируют POST и кидают его серверу. То есть, без серверной проверки получаемых данных не обойтись.
Ну нужно конечно смотреть конкретно как организована гостевая, но как они могут не смотреть форму, они же должны ее загрузить и распарсить, хотябы для того, чтобы выдрать оттуда параметры типа в какую тему постят, в какой раздел, в ответ на что и т.д... Согласен, с циферками врядли такое получится (был не прав), но вот если дынное на JS вписывать, тоесть не в hidden-поле скажем сразу писать раздел, а на JS присвоить это значение, то простейшаязащита все-таки выйти может от автоматов.

gost2 25.06.2006 12:39

Hubbitus
Цитата:

тоесть не в hidden-поле скажем сразу писать раздел, а на JS присвоить это значение
Объяснишь как это сделать?
Код прилагаю:
Цитата:

<TABLE bgcolor=F4f0f4 ALIGN="center" BORDER="0" WIDTH="700" HEIGHT="236" cellpadding=0 cellspacing=1>
<tr>
<td VALIGN=top>
<table width="700" HEIGHT="236" border="0" cellspacing="0" cellpadding="3" bgcolor="#F4f0f4" name="newmes">
<TR>
<TD bgcolor=F4F0F4 colspan="4" width="700">
<font size=1 FACE="MS Sans Serif"><center><BIG><B>*</B></BIG> помечены поля, обязательные для заполнения.</center></font>
</TD>
</TR>
<tr>
<td width="100" align=center>
<b><font FACE="MS Sans Serif" size="2">Имя<BIG>*</BIG></font></b>
</td>
<td width="250">
<input type="text" name="name" style="width=250; background-color:#FFFFFF; border-width: 1px; margin:">
</td>
<td width="100">
<div align="right"><b><font FACE="MS Sans Serif" size="2">E-mail</font></b></div>
</td>
<td width="250">
<input type="text" name="email" style="width=250; background-color:#FFFFFF; border-width: 1px; margin:">
</td>
</tr>
<tr>
<td width="100" align=center>
<b><font FACE="MS Sans Serif" size="2">URL</font></b>
</td>
<td width="250">
<input type="text" name="homepage" style="width=250; background-color:#FFFFFF; border-width: 1px; margin:">
</td>
<td width="100">
<div align="right"><b><font FACE="MS Sans Serif" size="2">Город, Страна</font></b></div>
</td>
<td width="250">
<input type="text" name="field1" width=250 style="width=250; background-color:#FFFFFF; border-width: 1px; margin:">
</td>
</tr>
<tr>
<td width="100"><b><font FACE="MS Sans Serif" size="2"><center>Текст объявления<BIG>*</BIG></center></font></b>
</td>
<td colspan="3" width="600">
<textarea name="text" rows="7" cols="70" style="width=600; background-color:#FFFFFF; border-width: 1px; margin:"></textarea>
<font size=1 FACE="MS Sans Serif"><center>Для выделения текста <font FACE="MS Sans Serif" size=2><i>курсивом</i></font>, для <font FACE="MS Sans Serif" size=2><b>жирного</b></font>.
Ссылки скрипт выделяет сам.</center></font>
</td>
</tr>
<tr align="center">
<td colspan="4">
<input type="submit" value="Отправить" style="border-width=1px" name="submit">
<input type="reset" style="border-width=1px" name="reset" value="Сброс">
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
</TR>
</table>
</form>
<table>
<tr>
<td valign=top>
<center>

Naked 25.06.2006 14:25

Думаю, что имелось следующее - между тегами <form> и </form> вписывается такой кусочек кода (куда-нибудь) :
Цитата:

<input type=hidden name=test value=0>
А в теге <form> вписываем следующее: <form onSubmit="test();" name=main>
В самом начале можно сделать яваскрипт:
<script>
document.main.test.value = 1;
</script>
А соответственно в процедуре test(); проверять чему равно значение test:
<script>
test (){
if (document.main.test.value==1) return true;
return false;
}
</script>

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

gost2 27.06.2006 13:49

Цитата:

но если это сделать с яваскритом через hidden параметр, как я написал выше, то получится уже неплохая защита
Как это конкретно осуществить подскажешь? Что куда и как встаялять?

Hubbitus 11.07.2006 11:01

Цитата:

Naked:
Думаю, что имелось следующее...
Нет, совсем не то что было следующее у тебя.

gost2, показал бы хотябы свою гостевую (адрес), что мы беспредметный разговор ведем. И в PHP-код полюбому придется внести исправления тоже, хотя и минимальные.

gost2 12.07.2006 14:21

Hubbitus, я думал, что этого фрагмента достаточно. Сама книга вот: http://www.helpnic.agava.ru/cgi-bin/...ok.pl?banner-1

Hubbitus 13.07.2006 09:34

Ну я правда рассчитывал немного на другое, но уд ладно.

Итак, в кратце о чем я говорил:
Там в форме есть параметр (который ты какраз и не привел выше) - <input type=hidden name=book value=banner>, от него зависит куда именно постится сообщение. Дак вот, простейшую защиту я предлагал на JS организовать следующим образом. Предполагается что без этого параметра (или с неверным), сообщение не может попасть в гостевую. Значит тогда НЕ записываем в него значение на стороне сервера (что там у Вас, PHP, PERL?), а оставляем просто пустым (ну или скажем инициализируем каким-то другим значением, скажем так: <input type=hidden name=book value=SPAM>), а дальше, при проверке каких-то условий на JS, пусть тех же картинок как предлагалось выше, тогда только, средствами JS присвоим нужное значение. Таким образом, получается что просто запрос на постинг от робота, не выполняющего JS, не приведет к посту.

Повторяю и еще раз обращаю внимание: Естественно это простейшая защита, если какому-то роботу понадобится это обойти, то просто посмотрят как защита организована на JS, и обойдут. Однако, врядли эта гостевая будет кому-то так нужна, чтобы менять алгоритмы, скорее всего большинство просто выбросит адрес из СПАМ-листа.

gost2 13.07.2006 21:09

Да, мне нужна именно простая защита. Именно то о чём ты говоришь. Но я так и не понял как конкретно это организовать.


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

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.