![]() |
защита от спасма
Народ!создал форму обратной связи,но вот нужна защита от спама типа картинки с номерами.помогите реализовать....
|
imho в форме обратной связи оно и не нужно
|
почему?там заполняется форма имя мэйл вопрос и отправляется на мэйл человека!так спама много будет
|
эмм.. НУ rand вам в руки, пару шрифтов и GD либа для работы с изображениями... и будет вам форма защиты от спама... :)
|
BASSON_XVI, Busla, было бы все так просто сделал бы.....поэтому и прошу помощи,отправку сообщений на мэйл еще осилил с горем пополам,а это наврядли.Может кто помочь?
|
arrancar, А ты думаешь проще когда за тебя кто то напишет код? Прочитай что такое rand что такое массивы я думаю ты знаешь.... Прочитай про библиотеку GD и генерацию изображений.
Теперь говорю как бы я осуществил защиту от спама: Делаю 2 массива. В один вбиваю цифры от 0 до 9, во второй вбиваю англ. алфавит. Дальше в цикле я генерю последовательность символов с помощью цикла и функции rand. Примерно так: PHP код:
|
BASSON_XVI, дельно спасибо
|
arrancar, }{ы ага если какие проблемы с Гд будут пиши...
Хы вместо спасибо мне гораздо приятней получить + "Полезное сообщение". Но и спасибке я тоже рад ) |
Код:
<?PHP $config_max_digits="4"; if ($QUERY_STRING=="") { // session id $sid=session_id(); if(!$sid){ session_start(); $sid=session_id(); } $gen_code = ""; for($i=0; $i<$config_max_digits;$i++) $gen_code = $gen_code.rand(0,9); $HTTP_SESSION_VARS["noautomationcode"] = $gen_code; echo (" <img src='showcode.php?sid=$sid'> <form action='?begin' method='post'> <input type='hidden' name='sid' value='$sid'> <input type='text' name='code'> <input type='Submit' name='Submit'> </form>"); } if ($QUERY_STRING == "begin") { session_start(); $gen_code = $HTTP_SESSION_VARS["noautomationcode"]; if ($code == $gen_code) { echo "Защищеные данные"; }else{ echo "<b>Код не верный</b><br />Повторите попытку<br />"; echo ("<img src='showcode.php?sid=$sid'><form action='?begin' method='post'><input type='hidden' name='sid' value='$sid'><input type='text' name='code'><input type='Submit' name='Submit'></form>"); } } ?> showcode.php Код: <?PHP $img_x="40"; $img_y="20"; $font_size=5; $sid=trim($HTTP_GET_VARS["sid"]); session_id($sid); session_start(); $gen_code = $HTTP_SESSION_VARS["noautomationcode"]; $img = imagecreate ($img_x,$img_y); $background_color = imagecolorallocate ($img, 255, 255, 255); $f_x = imagefontwidth ( $font_size ); $f_y = imagefontheight ( $font_size ); $x = ($img_x - strlen($gen_code) * $f_x )/2; $y = ($img_y - $f_y) / 2; $color = imagecolorallocate($img,000,000,000); $dc = ImageColorAllocate($img, rand(0,255), rand(0,255), rand(0,255)); ImageRectangle($img, rand(0, $img_x/2 ), rand(0, $img_y/2 ), rand($img_x / 2, $img_x) ,rand($img_y / 2, $img_y), $dc); $dc = ImageColorAllocate($img, rand(0,255), rand(0,255), rand(0,255)); ImageRectangle($img, rand(0, $img_x/2 ), rand(0, $img_y/2 ), rand($img_x / 2, $img_x) ,rand($img_y / 2, $img_y), $dc); imagestring ( $img, $font_size, $x, $y, $gen_code, $color); for($i = $img_x * $img_y / 10; $i >= 0;$i--) { ImageSetPixel($img, rand(0,$img_x), rand(0,$img_y), ImageColorAllocate($img, rand(0,255), rand(0,255), rand(0,255))); } header("Content-Type:image/gif"); imagegif($img); ?> выдает ошибку такую вот: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/tu2.ru/d/de/despirado/htdocs/www/index.php:11) in /home/tu2.ru/d/de/despirado/htdocs/www/index.php on line 42 это в первом скрипте,а еще не отображает картинку |
ну дык а ты что хош вынеси на самый верх страницы session_start(); и все будет окей.
|
<?PHP
session_start(); ...... session_start(); ?> типа так? икак это совместить с вот этой формой? <form name="form1" method="post" action="order.php"> </noindex> <table width="100%" border="0" cellpadding="7" cellspacing="0" bgcolor="#eeeeee" class="link_table"> <tr> <td align="right" valign="middle"><strong>Выберите:</strong></td> <td> <select name='person'> <option selected="selected">Любой</option> <option value=0>имя</option> <option value=1>имя</option> <option value=2>имя</option> <option value=3>имя</option> <option value=4>имя</option> <option value=5>имя</option> <option value=6>имя</option> <option value=7>имя</option> <option value=8>имя</option> <option value=9>имя</option> <option value=10>имя</option> <option value=11>имя</option> <option value=12>имя</option> </select></td> </tr> <tr> <td align="right" valign="middle" ><strong>Ваше имя:</strong></td> <td ><input name="name" type="text" id="name" size="40"></td> </tr> <tr> <td align="right" valign="middle"><strong>Возраст:</strong></td> <td><input name="age" type="text" id="age" size="3"></td> </tr> <tr> <td align="right" valign="middle"><strong>E-mail <span class="style9">*</span>:</strong></td> <td><input name="email" type="text" id="email" size="40" /></td> </tr> <tr> <td align="right" valign="top"><strong>Задать вопрос<span class="style9"> *</span>:</strong></td> <td><textarea name="comments" cols="35" rows="7" wrap="VIRTUAL" id="comments"></textarea> <input name="confirm" type="hidden" id="confirm" value="yes"></td> </tr> <tr> <td height="62"></td> <td><input name="Submit" type="submit" class="text" value="Отправить"> </td> </tr> </table> <p><strong class="style9">*</strong> - поля, обязательные для заполнения. </p> </form> чтобы кнопка одна была и одновременно проверка шла и отправка если все ок |
Что то ты мудришь... Зачем тебе сессии вообще.... в форме отправки письма делаешь два поля одно скрытое передаешь туда переменную с кодом и одно поле для ввода кода... выводишь картинку с генеренную из переменной .... После отправки получаешь данные с скрытого поля и данные которые ввел юзер и проверяешь если они совпадают значить отправка письма если нет.. ТО на нет и суда нет..
|
это то я понял!без сессии все ок!но как совместить честно уже мозги не варят
|
а что совместить то? Я тебя не понимаю... :)
HTML код:
<form> После отправки делаем так: PHP код:
|
BASSON_XVI, вот я написал два кода и одно форму!коды находяться в разных файлах и форма тоже!попытался вставить форму в файл php с первым кодом,но не хочет
|
мдя вообще как бы это все в 1 файле пишется....и проверка и сама форма и как ты говоришь все "коды". :) Я бы тебе написал скрипт только времени нет. Возможно напишу но только часа через 3 и выложу здесь... :)
|
плиз!прошу.....подожду
|
мне нужно совместить только форму и первый скрипт!!!!!
|
хы если только совместить то в конце скрипта своего после ?> вставляй форму. ;)
|
пробЫвал ошибки выскакиваю!вот вопервых надо совместить форму и скрипт и чтобы у них кнопка одна была!тоесть проверка запукается и отправка
есть еще такой способ! в php берем html код формы и применяем к www.php.net/base64_encode в выводимую страницу подключаем в <head> файл javascript(http://www.webtoolkit.info/javascript-base64.html) для раскодировки base64 строки и вставляем в нужном месте страницы что то вида <script> document.write(base64_decode('тут_строка_полученная_с_помощью_php_функции_base64_encode')) </script> |
Эмм... Жалко что на этом форуме цензура запрещена... А то я бы выругался... :read:
Зачем ты делаешь до фига кнопок(форм) когда все можно сделать в одной форме??? :o |
стоп стоп стоп!сейчас я тебя не понимаю!форма у меня там одна там указывается имя возраст выберается человек пишется мэйл и сообщение все!и в зависимости от выбранного человека отправляется на соответствующий мэйл!все
|
Время: 15:29. |
Время: 15:29.
© OSzone.net 2001-